C-Boot ROM Description
638
SPRUHE8E – October 2012 – Revised November 2019
Copyright © 2012–2019, Texas Instruments Incorporated
ROM Code and Peripheral Booting
Table 6-23. C-Boot ROM Exceptions Handling (continued)
Exception Event Source
Description
C-Boot ROM action
C-Boot ROM state after
exception
Spurious PIE interrupts
Any un-supported PIE interrupt
occurs
Send an IPC message to
master, with the spurious
interrupt no. ACK the spurious
interrupt and continue doing
whatever C-Boot ROM was
doing before
Continue to boot
6.6.15 C-Boot ROM Bootloader Functionality
This section explains each of the supported peripheral boot mode(s) on C-Boot ROM, in detail.
On Concerto, the data transfer protocols or stream structures that allow boot data transfer between C-
Boot ROM and Host device, are compatible to the respective bootloaders on Piccolo class of C2000
devices. This allows user to re-use the same tools used to send boot data to Piccolo(s) also to send boot
data to C-Boot ROM on Concerto devices.
6.6.15.1
C-Boot Data Stream Structure
The following two tables and associated examples show the structure of the data stream incoming to the
bootloader. The basic structure is the same for all the bootloaders and is based on the C54x source data
stream generated by the C54x hex utility. The C28x hex utility (hex2000.exe) has been updated to support
this structure. The hex2000.exe utility is included with the C2000 code generation tools. All values in the
data stream structure are in hex.
The first 16-bit word in the data stream is known as the key value. The key value is used to tell the
bootloader the width of the incoming stream: 8 or 16 bits. Note that not all bootloaders will accept both 8
and 16-bit streams. Please refer to the detailed information on each loader for the valid data stream width.
For an 8-bit data stream, the key value is 0x08AA and for a 16-bit stream it is 0x10AA. If a bootloader
receives an invalid key value, then the load is aborted.
The next eight words are used to initialize register values or otherwise enhance the bootloader by passing
values to it. If a bootloader does not use these values then they are reserved for future use and the
bootloader simply reads the value and then discards it. Currently only the SPI and I2C and parallel XINTF
bootloaders use these words to initialize registers.
The tenth and eleventh words comprise the 22-bit entry point address. This address is used to initialize
the PC after the boot load is complete. This address is most likely the entry point of the program
downloaded by the bootloader.
The twelfth word in the data stream is the size of the first data block to be transferred. The size of the
block is defined for both 8-bit and 16-bit data stream formats as the number of 16-bit words in the block.
For example, to transfer a block of 20 8-bit data values from an 8-bit data stream, the block size would be
0x000A to indicate 10 16-bit words.
The next two words tell the loader the destination address of the block of data. Following the size and
address will be the 16-bit words that make up that block of data.
This pattern of block size/destination address repeats for each block of data to be transferred. Once all the
blocks have been transferred, a block size of 0x0000 signals to the loader that the transfer is complete. At
this point the loader will return the entry point address to the calling routine which in turn will cleanup and
exit. Execution will then continue at the entry point address as determined by the input data stream
contents.