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.

CCS/TM4C1290NCZAD: USB DFU boot loader, DK-TM4C129X boot_usb_demo

Part Number: TM4C1290NCZAD

Tool/software: Code Composer Studio

I am new to Tivaware, but decently experienced in the embedded field. I am trying to create a simple DFU boot loader program to run along side an existing program with no current USB functionality. I have a custom board TM4C1290NCZAD with micro USB port. I have read the TM4C boot loader User guide and USB Library user guide regarding the DFU. I have looked through the DK-TM4C129x boot_usb_demo.

The demo uses the ROM_UpdateUSB function to call the ROM based boot loader. However, this seems contrary to the aforementioned user guide PDFs' information (which are entirely flash based). My question is regarding how to setup a simple DFU example with the ROM based USB. The documentation does not seem to mention how to configure ROM based boot loaders, but instead speaks on making a flash based DFU boot loader (to witch there appears to be no example).

The boot loader user guide pdf http://www.ti.com/lit/ug/spmu301d/spmu301d.pdf, shows that the bl.config.h/.c files should be used along with other source files to configure a project to setup the boot loader in flash. The USB User guide http://www.ti.com/lit/ug/spmu297d/spmu297d.pdf section on DFU points to the boot_usb_demo example. This is example does not appear to have any of the boot loader source files, nor does it appear to have a boot loader in flash (linker file shows program memory starts at 0x0000 (no room for flash boot loader, no APP_START_ADDRESS)). The first instruction in the USB library user guide is to use the bl.config file to setup APP_START_ADDRESS, however the demo that is reference in the previous paragraph (boot_usb_demo) does not appear to use it.

On a separate (but related) issue, when running dfuprog.exe -e, the program says that no driver is found. But I have downloaded the updated .inf drivers for DFU. 

I am attempting to make a boot loader that runs on an invalid or nonexistent image, and runs on DFU when windows signals an update via dfuprog. Is there another example or documentation that someone can point me to (perhaps regarding the ROM USB boot loader), or could someone clear up a misunderstanding I have regarding the boot loader source files or USB Library documentation?  

  • Hi,

      The TM4C129 device ROM contains the pre-programmed ROM based bootloader plus other bootloaders such as UART, SSI and I2C. Please take a look at this post. https://e2e.ti.com/support/microcontrollers/other/f/908/p/770256/2848209?tisearch=e2e-sitesearch&keymatch=usb%20dfu#2848209 and see if it helps. 

  • Hi Alexander,

      I hope you are making some progress and have a chance to run the ROM based USB DFU example using LM flash programmer. Below is what I did and it works for me. 

      1. Have the flash fully erased.

      2. Select USB DFU interface.

      3. Program any example binary. I choose the project0.bin.

      You should see the DFU complete and if you hit a reset on the board you will the blinking LED. 

      I wanted to give you a heads up that i will be out of office for a week starting tomorrow with limited access to the forum. I will close the thread here. If your problem is not resolved please kindly create a new thread so our support team can assist you. If you only reply to this post, I'm afraid our support team will not follow it. 

  • My main purpose in this post was to point out the frustrating inconsistency between the boot loader/usb user guides, and the example code for dk-TM4c129x (no boot_usb code, and boot_demo_usb does not do what the guides say it does).

    I want to be able to setup my device to use dfuprog.exe not LM flash programmer. I want to be able to trigger an update from the command line of my clinents computers for in field updates.

    Also in the post that you linked, https://e2e.ti.com/support/microcontrollers/other/f/908/p/770256/2848209?tisearch=e2e-sitesearch&keymatch=usb%20dfu#2848209, the customer eventually just gave up and used the flash drive update example (which I do not have the option of using).

  • Hello Alexander,

    Charles asked me to help out with this post but it looks like you made a new post here, so can we close this thread out and continue the support on this new thread where you've summarized everything neatly? https://e2e.ti.com/support/microcontrollers/other/f/908/p/816698/3031365#3031365

  • If I had a question I suppose it would be. Since the boot_demo_usb example on the dk-tm4c129x uses a Rom based USB boot loader. Is the bl_config.c file (included in the Tiva C Series boot_loader folder) necessary to get the example to work, as described in the aforementioned guides?

  • Hello Alexander,

    The ROM boot loader does not rely on any files like bl_config.h.

    That is only for Flash boot loaders.

  • I would appreciate help on my other post (https://e2e.ti.com/support/microcontrollers/other/f/908/p/819309/3032330#3032330). This is in regard to my related, but separate, issue I mentioned at the end of my question above.

    But please note that my main purpose for this post is to point out an inconstancy in the user guides. The USB Library user guide for DFU says to use boot_demo_usb as an example that uses the boot_usb boot loader. However in the case of dk-tm4c129x and others, this example uses the ROM based boot loader and is therefore directly contradictory to the user guide pdf as it explains that the demo should use a flash based boot loader, and to set it up in different ways (such as having a different starting address than 0x0000 and using bl_config.h). Due to this, many people looking into using DFU for the first time (such as myself) may get confused and waste a lot of time. 

    In fact in the boot loader and USB library guides, the word ROM only appears once. There does not seem to be any documentation (that I could find) for the ROM based boot loaders and their use.

    Ralph Jacobi and Charles, thank you for all your help with this issue. If you meant that I should take these comments that I used to summarize my issues and put them in another post, I misunderstood. I can do that as well, but I feel that my original post also expresses what I am saying in these comments. However, my current main concern is the aforementioned other post.

  • Hello Alexander,

    Honestly we are aware of the issue with the boot loader documentation, and the lack of clear description about the ROM boot loader. Even before your post we were having discussions about what we can do to address this because none of us are satisfied with the state of the boot loader documentation. You aren't the only one to have had struggles as a result.

    Regarding using a Flash boot loader with USB, that is something you can do by using the boot_serial project and configuring the bl_config file for USB. Then you'd use the boot_demo1 or boot_demo2 projects to test it. The boot_demo_usb is a standalone project separate from those intending to show how to use the ROM USB boot loader. Not sure if you've already figured this out, but if not maybe that helps a bit.

    I will do a detailed review and take note of any errors in the USB documentation specifically to resolve on the next TivaWare release, as I think you are the first to raise the point about the boot_demo_usb description specifically.