11.2.3.1 Serial Host Handshake
RBL sends BOOTME,
Waits for ACK sequence
while polling timer INT flag
for timeout
RBL checks for valid ACK
sequence. If valid, sends
BEGIN to start receiving
CRC−32 table.
RBL calculates checksum8.
If good checksum8
sends DONE and starts
receiving UBL.
If bad checksum8
sends CORRUPT,
returns to BOOTME state.
RBL calculates checksum.
If good checksum, sends
DONE, jumps to UBL.
If bad checksum, sends
CORRUPT, returns to
BOOTME state.
ROM boot loader
Host waits for BOOTME
Host sends ACK sequence,
waits for ”BEGIN sequence
to start transmit”.
Host sends the CRC−32
lookup table, which is of
1 KB length. The checksum8
value is 0.
Host sends UBL
Host utility can interact with
user to quit, reverts to waiting
for BOOTME or performs
further handshake with UBL
Host serial utility program
www.ti.com
ARM ROM Boot Modes
If the state of BTSEL[1:0] pins reset is 11, then the UART boot mode executes as shown in
.
The state of BTSEL[1:0] pins at reset is captured and stored in the bits BTSEL in the BOOTCFG register
in the System Control module. The RBL reads this register to determine if to execute UART boot.
shows the handshake between the device and a serial host utility program. After
initialization, there are three main receive sequences: ACK, 1KB CRC32 table, and user boot loader
(UBL). For each receive sequence, a time-out check is done in the RBL. This means that if a timeout
value is reached during the sequence, the serial boot mode restarts from the beginning at which the RBL
sends out the BOOTME message. The error checking behavior for the UART receive mode is the same.
For each byte received, if there is an error, RBL restarts from the beginning. In UART boot mode, the RBL
copies the UBL code starting at address 0x0100. Note that for all other boot modes (e.g., NAND and
MMCSD boot modes) the UBL code is copied starting at address 0x0020. So, UART boot mode is
different in terms of starting copy address. The starting address of the UBL is at 0x0100.
The check sum method used for UBL data is CRC 32 check sum. The lookup table that is used for the
CRC 32 calculation (1KB) must be sent by the host serial utility. Check sum8 is used as the check sum
methodology for the CRC 32 lookup table.
The check sum8 value for the lookup table when calculated results in a value of 0. Since this value
remains the same, it is checked by the RBL before downloading the UBL data from the host serial utility.
Whenever a wrong ACK, CRC 32 table or UBL is received, the serial boot process restarts. GIO61 will
toggle while retrying UART boot, as discussed previously.
Figure 11-13. UART Boot Mode Handshake
SPRUFX7 – July 2008
Boot Modes
165