SPRUJH3 April 2025 TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137 , TMS320F2800152-Q1 , TMS320F2800153-Q1 , TMS320F2800154-Q1 , TMS320F2800155 , TMS320F2800155-Q1 , TMS320F2800156-Q1 , TMS320F2800157 , TMS320F2800157-Q1 , TMS320F280021 , TMS320F280023 , TMS320F280023C , TMS320F280025 , TMS320F280025C , TMS320F280034 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037C , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039C , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041C , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049C , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377S , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379S , TMS320F28384D , TMS320F28384S , TMS320F28386D , TMS320F28386S , TMS320F28388D , TMS320F28388S , TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
The SCI flash kernel is based on the ROM bootloader, communicating with the host PC application provided in C2000Ware (C2000Ware_x_xx_xx_xx > utilities > flash_programmers > serial_flash_programmer) and providing feedback to the host on the receiving of packets and completion of commands given.
This section details CPU1 SCI boot loading. For a more detailed explanation on the SCI kernel commands and functionality, or steps on how to use CPU2 or Connectivity Manager (CM) SCI bootloader, refer to the Serial Flash Programming of C2000 Microcontrollers application note [12].
Flash kernel source and project files for CCS are provided in C2000Ware, in the examples directory of the corresponding device. These projects have a post-build step in which the compiled and linked .out file is converted into the correct boot hex format needed by the SCI ROM bootloader and is saved as the project name with a .txt extension.
| Device | Build Configurations | Location |
|---|---|---|
| F2802x | RAM | C2000Ware_x_xx_xx_xx > device_support > f2802x > examples > structs > f28027_flash_kernel |
| F2803x | RAM | C2000Ware_x_xx_xx_xx > device_support > f2803x > examples > c28 > f2803x_flash_kernel |
| F2805x | RAM | C2000Ware_x_xx_xx_xx > device_support > f2805x > examples > c28 > f28055_flash_kernel |
| F2806x | RAM | C2000Ware_x_xx_xx_xx > device_support > f2806x > examples > c28 > f28069_sci_flash_kernel |
| F2807x | RAM | C2000Ware_x_xx_xx_xx > device_support> f2807x > examples > cpu1 > F2807x_sci_flash_kernel |
| F2833x | RAM | C2000Ware_x_xx_xx_xx > device_support > f2833x > examples > f28335_flash_kernel |
| F2837xS | RAM | C2000Ware_x_xx_xx_xx > device_support > f2837xs > examples > cpu1 > F2837xS_sci_flash_kernel > cpu01 |
| F2837xD | RAM | C2000Ware_x_xx_xx_xx > device_support > f2837xd > examples > dual > F2837xD_sci_flash_kernels |
| F28004x | RAM, Flash with LDFU, Flash without LDFU | C2000Ware_x_xx_xx_xx > driverlib > f28004x > examples > flash, select flashapi_ex2_sci_kernel |
| F2838x | RAM | CPU1-CPU2 C2000Ware_x_x_xx_xx > driverlib > f2838x>examples>c28x_dual>flash_kernel CPU1-CM C2000Ware_x_x_xx_xx > driverlib > f2838x>examples>c28x_cm>flash_kernel |
| F28002x | RAM, Flash with LDFU | C2000Ware_x_xx_xx_xx > driverlib > f28002x > examples > flash, select flash_kernel_ex3_sci_flash_kernel |
| F28003x | RAM, Flash with LDFU | C2000Ware_x_xx_xx_xx > driverlib > f28003x > examples > flash, select flash_kernel_ex3_sci_flash_kernel |
| F280013x | RAM | C2000Ware_x_xx_xx_xx > driverlib > f280013x > examples > flash, select flash_kernel_ex3_sci_flash_kernel |
| F280015x | RAM | C2000Ware_x_xx_xx_xx > driverlib > f280015x > examples > flash, select flash_kernel_ex3_sci_flash_kernel |
| F28P65x | RAM | C2000Ware_x_xx_xx_xx > driverlib > f28p65x > examples > c28x_dual > flash_kernel |
| F28P55x | RAM | C2000Ware_x_xx_xx_xx > driverlib
> f28p55x > examples > flash, select f28p55x_flash_ex3_sci_flash_kernel |

After building the kernel and firmware projects in CCS, set up the device hardware correctly to communicate with the host PC running the serial_flash_programmer executable provided in C2000Ware. The first task is to make sure the boot mode select pins are configured properly to boot the device to SCI boot mode. If the user needs to load code from an external host in the on-chip flash, then the default BMSPs or BOOTPIN-CONFIG and BOOTDEF registers can configure SCI boot.
The default BMSPs to enable SCI boot can be found in the TMS320F280015x Real-Time Microcontrollers data sheet. If the user sets GPIO24 to 0 and GPIO32 to 1, then the boot ROM jumps to the SCI bootloader with SCIRXDA to GPIO28 and SCITXDA to GPIO29 without needing to program the device registers.
However, if the user wants the flexibility of using SCI boot with different GPIO assignments, then the OTP or emulation BOOTCONFIG and BOOTDEF registers need to be configured for the specific boot option. Refer to the GPIO Assignments section in the data sheet to find which SCI boot option fits the GPIO requirements.
When using the serial_flash_programmer executable, the appropriate SCI bootloader GPIO pins to the Rx and Tx pins need to be connected to the host PC COM port. A transceiver is often needed to convert a Virtual COM port from the PC to GPIO pins that can connect to the device. On some systems, like the controlCARD or LaunchPad, an FTDI chip is used to interface the GPIO pins used for SCI communication to a USB Virtual COM port.
For the F2800157 LaunchPad, the PC must connect to the USB on the LaunchPad and use the UART routing on the device to connect to the GPIO pins to the XDS110 COM Port. The schematics for the UART routing can be found in C2000Ware_x_xx_xx_xx > boards > (LaunchPads or controlCARDs) > DEVICE_NAME > Rev# > documentation. For F2800157, SCIRXDA is internally routed to GPIO28 and SCITXDA to GPIO29 using the default SCI_SEL settings, so boot option 0x01 needs to be configured.

However, users can also elect to use jumpers to externally route the XDS110 COM port to the GPIO BoosterPack™ (BP) header. This is helpful if alternative SCI GPIO assignments are selected and a connection to the XDS COM port is required. The steps below demonstrate how to externally route the XDS110 COM port to GPIO28 or GPIO29 on the F2800157 LaunchPad.


Now, the device needs to be set up to emulate a zero-pin SCI boot with boot option 0x01, SCIRXA = GPIO28 and SCITXA = GPIO29.





Now, the SCI bootloader (with GPIO assignments as specified by the boot option 0x01) in the ROM begins executing and waits to autobaud lock with the host (for the A character to be received to determine the baud rate at which the communications occurs). At this point, the device is ready to receive code from the host.
The command line PC utility is a programming design that can easily be incorporated into scripting environments for applications like production line programming. This was written using Microsoft Visual Studio® in C++. The project and source can be found in C2000Ware (C2000Ware_x_xx_xx_xx > utilities > flash_programmers > serial_flash_programmer).
To use this tool to program the C2000 device, make sure that the target board has been reset and is currently in the SCI boot mode as configured above, and connected to the PC COM port. The command line usage of the tool for a single core SCI boot is described below, where -d, -k, -a, -p are mandatory parameters. If the baud rate is omitted, then the baud rate is set to 9600 by default. More details on the parameters of the utility is detailed in [12].
serial_flash_programmer.exe –d DEVICE -k KERNEL_FILE -a APPLICATION_FILE -p COM# -b BAUDRATE -v

serial_flash_programmer.exe –d DEVICE_NAME –k <path_to_kernel_hex> -a <path_to_application_hex> -p COM# -vBoth the flash kernels and flash application must be in the SCI8 boot format as discussed in Section 4.1.
This automatically connects to the device, perform an auto baud lock, and download the CPU1 kernel into RAM and execute. Now, the CPU1 kernel is running and waiting for a packet from the host.

