SPRUII0F May 2019 – June 2024 TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S
To use the features of the bootloader, you must generate a data stream and boot table as described in Section 5.8.1.1. The hex conversion utility tool, included with the 28x code generation tools, can generate the required data stream including the required boot table. This section describes the hex2000 utility. An example of a file conversion performed by hex2000 is described in Example5-3.
The hex utility supports creation of the boot table required for the SCI, SPI, I2C, CAN, and parallel I/O loaders. That is, the hex utility adds the required information to the file such as the key value, reserved bits, entry point, address, block start address, block length and terminating value. The contents of the boot table vary slightly depending on the boot mode and the options selected when running the hex conversion utility. The actual file format required by the host (ASCII, binary, hex, and so on) differs from one specific application to another and some additional conversion can be required.
To build the boot table, follow these steps:
The linker -m option can be used to generate a map file. This map file shows all of the sections that were created, the location in memory, and the length. Check this file to make sure that the initialized sections are where you expect them.
The linker -w option configures the linker to show if the linker assigned a section to a memory region automatically. For example, if you have a section in your code called .TI.ramfunc.
See the TMS320C28x Assembly Language Tools User's Guide and the TMS320C28x Optimizing C/C++ Compiler User's Guide for more information on the compiling and linking process.
Table 5-79 summarizes the hex conversion utility options available for the bootloader. See the TMS320C28x Assembly Language Tools User's Guide for a detailed description of the hex2000 operations used to generate a boot table. Updates are made to support the I2C boot. See the Codegen release notes for the latest information.
Option | Description |
---|---|
-boot | Convert all sections into bootable form (use instead of a SECTIONS directive) |
-sci8 | Specify the source of the bootloader table as the SCI-A port, 8-bit mode |
-spi8 | Specify the source of the bootloader table as the SPI-A port, 8-bit mode |
-gpio8 | Specify the source of the bootloader table as the GPIO port, 8-bit mode |
-bootorg value | Specify the source address of the bootloader table |
-lospcp value | Specify the initial value for the LOSPCP register. This value is used only for the spi8 boot table format and ignored for all other formats. If the value is greater than 0x7F, the value is truncated to 0x7F. |
-spibrr value | Specify the initial value for the SPIBRR register. This value is used only for the spi8 boot table format and ignored for all other formats. If the value is greater than 0x7F, the value is truncated to 0x7F. |
-e value | Specify the entry point at which to begin execution after boot loading. The value can be an address or a global symbol. This value is optional. The entry point can be defined at compile time using the linker -e option to assign the entry point to a global symbol. The entry point for a C program is normally _c_int00 unless defined otherwise by the -e linker option. |
-i2c8 | Specify the source of the bootloader table as the I2C-A port, 8-bit |
-i2cpsc value | Specify the value for the I2CPSC register. This value is loaded and takes effect after all I2C options are loaded, prior to reading data from the EEPROM. This value is truncated to the least-significant eight bits and must be set to maintain an I2C module clock of 7 to 12MHz. |
-i2cclkh value | Specify the value for the I2CCLKH register. This value is loaded and takes effect after all I2C options are loaded, prior to reading data from the EEPROM. |
-i2cclkl value | Specify the value for the I2CCLKL register. This value is loaded and takes effect after all I2C options are loaded, prior to reading data from the EEPROM. |