Digi International Inc XBEEPRO2 Manual Do Utilizador

Página de 155
XBee®/XBee‐PRO® ZB RF Modules 
© 2011 Digi International, Inc.
     22
Operation
Upon reset of any kind, the execution control begins with the bootloader.  
If the reset cause is Power-On reset (POR), Pin reset (PIN), or Low Voltage Detect(LVD) reset the 
bootloader will not jump to the application code if the override bits are set to RTS(D7)=1, DTR(D5)=0, 
and DIN(B0)=0.  Otherwise, the bootloader writes the reset cause "NOTHING" to the shared data 
region, and jumps to the Application.
Reset causes are defined in the file common. h in an enumeration with the following definitions:
typedef enum {
  BL_CAUSE_NOTHING   = 0x0000,  //PIN, LVD, POR
  BL_CAUSE_NOTHING_COUNT   = 0x0001,//BL_Reset_Cause counter
// Bootloader increments cause every reset
  BL_CAUSE_BAD_APP   = 0x0010,//Bootloader considers APP invalid
} BL_RESET_CAUSES;
typedef enum {
   APP_CAUSE_NOTHING         = 0x0000,
   APP_CAUSE_USE001          = 0x0001,
// 0x0000 to 0x00FF are considered valid for APP use.
   APP_CAUSE_USE255          = 0x00FF,
   APP_CAUSE_FIRMWARE_UPDATE = 0x5981,
   APP_CAUSE_BYPASS_MODE     = 0x4682,
   APP_CAUSE_BOOTLOADER_MENU = 0x6A18,
} APP_RESET_CAUSES;
Otherwise, if the reset cause is a "watchdog" or other reset, the bootloader checks the shared memory 
region for the APP_RESET_CAUSE.  If the reset cause is:  
1."APP_CAUSE_NOTHING" or 0x0000 to 0x00FF, the bootloader increments the 
    BL_RESET_CAUSES, verifies that it is still less than BL_CAUSE_BAD_APP, and jumps back to 
    the application.  If the Application does not clear the BL_RESET_CAUSE, it can prevent an 
    infinite loop of running a bad application that continues to perform illegal instructions or 
    watchdog resets.
2."APP_CAUSE_FIRMWARE_UPDATE", the bootloader has been instructed to update the
    application "over-the-air" from a specific 64 bit address.  In this case, the bootloader will 
    attempt to initiate an Xmodem transfer from the 64 bit address located in Shared RAM.
3."APP_CAUSE_BYPASS_MODE", the bootloader executes bypass mode.  This mode passes the 
    local UART data directly to the EM250 allowing for direct communication with the EM250.  
    The only way to exit bypass mode is to reset or power cycle the module.
If none of the above is true, the bootloader will enter "Command mode".  In this mode, users can 
initiate firmware downloads both wired and over-the-air, check application/bootloader version strings, 
and enter Bypass mode.
Application version string
Figure 1 shows an "Application version string pointer" area in application flash which holds the pointer 
to where the application version string resides.  The application's linker command file ultimately 
determines where this string is placed in application flash.
It is preferable that the application version string be located at address 0x8400 for MC9S08QE32 parts.  
The application string can be any characters terminated by the NULL character (0x00).  There is not a 
strict limit on the number of characters in the string, but for practical purposes should be kept under 
100 bytes including the terminating NULL character.  During an update the bootloader erases the entire 
application from 0x8400 on.  The last page has the vector table specifically the redirected reset vector.  
The version string pointer and reset vector are used to determine if the application is valid.