SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
The ROM code can boot from these peripherals:
The purpose of booting from a peripheral is to download a flash loader code from an external host. This booting method is used primarily for programming flash memories connected to the device (for example, in the case of initial flashing, firmware update or servicing). Figure 32-11 shows the overall peripheral booting procedure. It consists of a synchronization phase (handshake between the host and the device) and a transfer phase. The synchronization phase is similar for UART and USB boots. Both transfer phases use the same procedure.
When booting from the UART, the ROM code first initializes the UART3 interface. Then the ROM code sends an ASIC ID block of data. From there, it expects to receive a boot message from the host within 300 ms, by default. Figure 32-9 shows this procedure.
Figure 32-10 shows the procedure when booting from the USB.
During the synchronization phase (see Figure 32-9 and Figure 32-10), the device can provide a small packet of data called the ASIC ID (described in Table 32-18). It is a simple structure that contains different kinds of information, such as ROM version, checksums, and ID.
The host can decide the desired operation by providing a booting message (see Table 32-22). This message can be: Get ASIC ID, peripheral boot, change device, or next device. If the device receives the Get ASIC ID boot message, it sends back the ASIC ID contents.
If the change device or next device message is received, the ROM code stops the current peripheral booting procedure and returns to the main booting, which decides about the next booting device according to the boot message received.
If the peripheral boot message is received without a time-out, the device is entering the transfer phase. From there, the flash loader image size (as a 32-bit word) and the flash loader image itself are expected to be received. The ROM code waits up to 1 minute for completion of image size reception, and up to 1 more minute to download the image. If the download procedure does not complete before this time, the peripheral booting procedure aborts. ROM code continues to examine the devices included in the booting device list. If the download procedure passes, then the image can be executed.
The flash loader image is downloaded directly into internal RAM from address 0x4030 0000 and the maximum size of the downloaded image is 504 KiB.
Sending an image size of zero skips the peripheral booting procedure.
The USB or UART connection is left open at the end of the transfer phase and once exiting the ROM code for the initial software to take over. It means the initial software can reuse the currently established connection. In the case of a USB connection, the endpoints can be reused as such, without closing the connection and performing a full enumeration again.
ASIC ID Item | Size (Bytes) | Description |
---|---|---|
Items | 1 | Number of subblocks |
ID subblock | 7 | Device identification information |
Reserved subblock | 4 | Reserved |
Reserved subblock | 23 | Reserved |
Reserved subblock | 35 | Reserved |
Checksum subblock | 11 | CRC (4 bytes) |
Offset | Size (Bytes) | Description |
---|---|---|
0x00 | 1 | 0x05: Number of subblocks USB 0x04: Number of subblocks UART(1) |
Offset | Size (Bytes) | Description |
---|---|---|
0x01 | 1 | 0x01: Subblock ID |
0x02 | 1 | 0x05: Subblock size |
0x03 | 1 | 0x01: Fixed value |
0x04 | 2 | 0x56, 0x41: Device ID number |
0x06 | 1 | 0x07: CH enabled 0x17: CH disabled |
0x07 | 1 | ROM code revision 0x01: SR1.0 0x02: SR1.1 and SR2.0 |
Offset(1) | Size (Bytes) | Description |
---|---|---|
0x46 | 1 | 0x15: Subblock ID |
0x47 | 1 | 0x09: Subblock size |
0x48 | 1 | 0x01: Fixed value |
0x49 | 4 | ROM CRC |
0x4D | 4 | 0x0000 0000: |
Table 32-22 summarizes the boot messages sent from a host.
Message Name | Value | Description | |
---|---|---|---|
Peripheral boot | 0xF003 0002 | Continue peripheral booting. | |
Get ASIC ID | 0xF003 0003 | ASIC ID request. The Get ASIC ID request message is optional. If received, the ROM code sends its ASIC ID data to the host in return. The host can issue the Get ASIC ID message multiple times if required. Table 32-18 describes the structure of the ASIC ID. | |
Change device | 0xF003 xx06 | Skip current peripheral booting and continue booting from device type indicated by xx: | |
0x01: XIP | |||
0x02: XIP (with wait monitoring) | |||
0x03: NAND | |||
0x05: SD card | |||
0x06: eMMC (from boot partition BP1 or BP2) | |||
0x07: eMMC | |||
0x09: SATA | |||
0x0A: QSPI_1 | |||
0x0B: QSPI_4 | |||
0x43: UART | |||
0x45: USB (from internal transceiver) | |||
Others: Reserved | |||
Next device | 0xFFFF FFFF | Skip current device and move to the next device on the device list. | |
Memory booting | Others | Skip current peripheral booting and move to the first device for memory booting. |
Figure 32-11 shows the peripheral booting procedure.