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.

TM4C1294NCPDT: What is the best way to integrate firmware update code for TM4C processors into software distributed to customers?

Part Number: TM4C1294NCPDT
Other Parts Discussed in Thread: UNIFLASH, , MSP430F6636, EK-TM4C1294XL

Tool/software:

My project requirements are that I need a either a dll, exe, or code that I can compile as part of a program so that our customers can connect to our devices that utilize TM4C processors via USB and update the firmware to any firmware that we give them.

UniFlash seems to be the most recommended TI software, but I'm not sure what I can pull out of it to put into my software without dragging in the entirety of UniFlash or just forcing our customers to install and use UniFlash instead of our software.  Nor am I sure this is the most appropriate solution for my needs, since it comes with its own GUI and seems to be designed to stand on its own rather than be integrated into something else.

My company already has pre-existing software that has C++ code (from TI, from 2010) that does this for older products that use MSP430f6636 processors.  But that code is apparently incompatible with the TM4C1294NCPDT processors.  I will be integrating whatever is recommended into that software.

  • My project requirements are that I need a either a dll, exe, or code that I can compile as part of a program so that our customers can connect to our devices that utilize TM4C processors via USB and update the firmware to any firmware that we give them.

    It seems like you are looking for a PC program that to load your firmware via the JTAG interface. Is this a correct understanding? I'm a bit unclear as to why you have not considered using a bootloader that can upgrade your application firmware through any one of the supported serial interfaces on the MCU. For example, if you want to update your firmware you can use the USB port in DFU mode to update the firmware. Similarly, if you could your firmware using UART, SPI, I2C or even Ethernet. Uniflash is a very huge PC program  that is designed to support most of the TI products for loading firmware through the JTAG interface. If your intent is only to update the TM4C129 firmware on the field through the USB interface then you should consider using a USB bootloader. There are two types of bootloader, a flash-based bootloader where a small piece of code residing at 0x0 will either jump to your firmware for execution or reload/update your firmware through the USB interface if conditions are met. There is also a ROM-based bootloader where your application residing at 0x0 can jump to the bootloader that is stored in the ROM. The bootloader user's guide can be found at https://www.ti.com/lit/pdf/spmu301

    I will suggest you look at the usb bootloader example at C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_demo_usb. This is a ROM-based bootloader example. Please read the boot_demo_usb example description carefully about the DFU mode. Run the example as-is the first time without modification to get a feel about the bootloader. There is a PC based command-line program that is used along with the example (dfuprog.exe)  to download the firmware for you. Please be careful if you see multiple USB devices when running on a LaunchPad. On the LaunchPad, there is also a onboard ICDI Debug Probe which is also a DFU capable device. Don't update the firmware to the wrong chip. 

    If this is still not what you want but rather a Uniflash-like PC utility then I will defer you to the Uniflash experts. You can operate Uniflash in command-line mode without the GUI if that is what you are looking for. As I stated, Uniflash can only download firmware to the MCU via JTAG interface. At least that is what I know about Uniflash for TM4C129 MCU. I don't know how it is supporting MSP430 processors. 

  • Thank you.  Sorry, I'm still trying to figure this out as I go.  You're right, I need a Bootloader.  I only referenced UniFlash because it was in something the firmware programmer sent me as what I could do (and a few other places).  I'll try to track down the TivaWare you've suggested (I'm just the software programmer, thus I don't already have it on my PC).

    How would I know if I need to use a flash based Bootloader or a ROM based Bootloader, or is that something I'd need to handshake with the firmware programmer?

  • How would I know if I need to use a flash based Bootloader or a ROM based Bootloader, or is that something I'd need to handshake with the firmware programmer?

    A flash bootloader will occupy a small flash memory but it is more flexible in case you need to customize it. ROM-based bootloader has the entire code base stored in the ROM and thus frees up the entire flash for your application. For ROM-based bootloader, you just make a call to ROM_UpdateUSB() in your application and it will jump to the bootloader in the ROM.  Just give it a try on the example I referred you. Also refer to the Bootloader user's guide with much more detailed information.