This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] FAQ on Flash software for C2000 MCUs

Part Number: C2000WARE
Other Parts Discussed in Thread: C2000-GANG, UNIFLASH

Tool/software:

1. Which 3rd party programmers do you recommend for C2000 MCUs?

Answer:

Some of the recommended 3rd party programmers are from these vendors - Acroview, Algocraft, Codeskin, DataIO, Elprotronic, SMH Technologies. This is a non-exhaustive list mentioned in alphabetical order.

These vendors also provide solutions that allow programming of multiple MCUs in parallel. For example:

  • Acroview has a solution to program 8 and 64 C2000 devices in parallel.
  • Algocraft has a solution to program up to 8 C2000 devices in parallel.
  • DataIO has solutions for programming 4 or 8 C2000 devices in parallel.
  • Elprotronic’s C2000-GANG programmer supports programming 8 devices in parallel.
  • SMH Technologies has a solution to program 4, 8, 16, and 32 C2000 devices in parallel.

2. What method do 3rd party programmers normally use to program the Flash on C2000 MCUs?

Answer:

The general approach is to use JTAG or other peripherals (e.g. SCI, CAN, USB) to transfer a flash kernel (i.e. a custom bootloader, which includes the Flash API library) into the device’s RAM, following which the application is transferred and programmed into Flash using the flash kernel (and Flash API library). To support the above 3Ps, TI provides Flash API libraries for each device and reference Flash kernels in the foundational SDK (C2000Ware, F29-SDK) for commonly used peripherals such as SCI/UART and CAN.

TI also provides the CCS IDE with an inbuilt Flash plugin, as well as UniFlash for Flash programming on C2000 MCUs. However, both these approaches are limited to JTAG. The Flash plugin functionality is similar to the above approach where a “flash kernel along with Flash APIs” is downloaded to the device’s RAM, and then the application is streamed via JTAG to program the Flash using the flash kernel + Flash APIs.

3. Why do C2000 MCUs not support direct programming of Flash through JTAG commands?

Answer:

This is because the devices do not use the flash state machine in the flash interface module to perform the flash erase/program/verify operations.  Instead, all of the involved complex timing/voltage-configuration sequences to perform these operations are managed by the Software flash API.  It is a must to embed or download (through JTAG or other boot peripherals) the flash API in to the device’s memory and let CPU execute the flash API functions to perform the flash operations.

   

4. I want to build my own custom JTAG based Flash programmer for C2000 devices using cJTAG (compact JTAG i.e. 2-pin JTAG). How should I proceed?

Answer:

Please create a thread and request access to this information. 

5. What is the customer use-case for the Flash Plugin?

Answer:

The same plugin is available in both CCS and UniFlash. While using CCS for development, a user may not explicitly launch and use the Flash plugin. But it is being used under the hood during Flash operations. When using UniFlash for production programming, a user is more likely to explicitly launch and use the Flash plugin, configuring fields like One-Time Programmable (OTP) fields and security passwords.

 

6. Where can I find more information on C2000 Flash API libraries?

Answer:

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/951668/faq-faq-on-flash-api-usage-for-c2000-devices

 

7. Where can I find more information on the C2000 CCS Flash plugin and UniFlash?

Answer:

[F28x] https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1096194/faq-c2000-ccs-flash-plugin-and-uniflash

[F29x] https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1453556/faq-f29h859tu-q1-f29h85x-flash-plugin-usage-notes?tisearch=e2e-sitesearch&keymatch=faq%3Atrue

 

8. Where can I find more information on C2000 Flash kernels?

Answer:

Flash kernels facilitate firmware updates, but they can do more if placed in Flash. They can serve as the entry point on device startup, check for valid application images in Flash, interface with an external host to enable programming of applications to Flash, and enable application firmware updates in the field.

Application notes are available for Flash kernels - Serial Flash Programming of C2000Tm Microcontrollers, CAN Flash Programming of C2000 Microcontrollers, Serial Flash Programming of F29H85xTm. These point to and discuss the associated software as well.

 

9. Where can I find information on Live Firmware Update (LFU) and Firmware-over-the-air (FOTA) support in C2000 MCUs?

Answer:

Application notes and design guides are available - Live Firmware Update With Device Reset on C2000Tm MCUs, Live Firmware Update Without Device Reset on C2000Tm MCUs, Live Firmware Update Reference Design with C2000Tm Real-Time MCUs . These point to and discuss the associated software as well. Additional LFU and FOTA content for F29x platforms is targeted for availability in 2025.

 

10. Where can I find information on EEPROM emulation using Flash in C2000 MCUs?

Answer:

Application notes are available – EEPROM Emulation for Gen 2 C2000 Real-Time MCUs, EEPROM Emulation for Generation 3 C2000 Real-Time Controllers, EEPROM Emulation Driver Guide for F29H85x

 

11. Where can I find information on combining multiple executable files (e.g. an application and bootloader) into a single file?

Answer:

To combine .out files generated by CCS:

Execute this command where hex2000 is present (e.g. C:\ti\ccs1260\ccs\tools\compiler\ti-cgt-c2000_22.6.1.LTS\bin):

hex2000.exe --load_image app_1.out app_2.out --load_image:file_type=executable -o app_combined.out

If app_1 and app_2 have respective linker command files that are setup so that there are no conflicts (e.g. overlapping regions), then the above command will work without warnings or errors. Otherwise, it will not work

To combine .txt files generated by the C2000 Hex Utility (hex2000) using the hex utility options: --boot --sci8 --ascii:

Each .txt has a header at the top and a terminating header. Open these in a text editor and combine them. Delete the “Terminating header with length zero” for the top .txt file. Delete the “Key value + Reserved for future use + Entry point” for the bottom .txt file.

The headers are described in Example 12-3 and Figure 12-8 of TMS320C28x Assembly Language Tools User’s Guide

To combine Intel .hex files generated by the C2000 Hex Utility (hex2000):

A 3rd party tool like srec_cat would be required.

Execute this command:

srec_cat app_1.hex -Intel app_2.hex -Intel -offset -maximum-addr app_1.hex -Intel -o app_combined.hex -Intel

NOTE: The method will catenate the hex files without stripping out the necessary headers/footers. Since the headers/footers for the each original .hex file are still present in the combined image, one will need to manually strip them out prior to merge in order to generate a programmable combined image

More information can be found here.

This tool also supports conversion from Intel hex32 to hex16 formats using this command:

srec_cat app_1.hex -Intel -o app_1_16.hex -Intel -Output_Block_Size=16

 

12. What other related Flash software FAQs exist?

Answer:

FAQ for Flash ECC usage in C2000 devices - Includes ECC test mode, Linker ECC options

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/951658/faq-faq-for-flash-ecc-usage-in-c2000-devices---includes-ecc-test-mode-linker-ecc-options

TMS320F28003x,TMS320F28004x: Flash API usage advisory/errata

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1320238/faq-tms320f28003x-tms320f28004x-flash-api-usage-advisory-errata

 

cJTAG support for C2000 devices in Elptrotronic's C2000 GANG flashing tool

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1070231/faq-cjtag-support-for-c2000-devices-in-elptrotronic-s-c2000-gang-flashing-tool

 

F05 Flash: What flash programming options exist for C2000 Devices?

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/758775/faq-f05-flash-what-flash-programming-options-exist-for-c2000-devices

 

F05 Flash: Which C2000 devices have "F05 flash"?

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/757575/faq-f05-flash-which-c2000-devices-have-f05-flash