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.

EK-TM4C1294XL: USB Bootloader not working as expected

Part Number: EK-TM4C1294XL

Good day,

I've been trying to get the boot_serial example working with USB DFU. 

When there's no program loaded i'm able to acces the ROM bootloader and the device gets recognized as a tivawarve firmware update.

So i've set every define needed to initialize the ports and clocks needed for USB in bl_config.h.

However, if I load the configured boot_serial, there is no connection and windows seems to be unable to recognize the device.

If I select the (not recognized) USB device and look at it's properties I'm able to see that there is a Product ID but no Vendor ID, and some gibberish afterwards.

This is an event timestamp & Windows device status:

Device USB\VID_0000&PID_0002\5&36a3b657&0&1 was configured.

Driver Name: usb.inf
Class Guid: {36FC9E60-C465-11CF-8056-444553540000}
Driver Date: 06/21/2006

Windows has stopped this device because it has reported problems. (Code 43)

A request for the USB device descriptor failed.

I've made sure that within bl_config.h the Vendor ID is set to default TI setting 0x1cbe. Where am I going wrong?

Kind Regards,

Daan Driessen

  • Hi Daan,

     I'm not very clear with your question.  I suppose you are trying to load an application firmware using the built in USB ROM bootloader. Is this correct?

     If this is the case, then below is what I just tried.

     1. First erase the flash completely.

     2. Configure the interface to the USB DFU. Plug your board's USB device port to the PC. There is both the USB debug port and the USB device port on the LaunchPad. You will connect both to the PC.

    3. I use the USB DFU mode to download a simple project0 example. 

    The place where I'm unclear is that you say you want to get the boot_serial example working with the USB DFU. The boot_serial example is itself a flash based bootloader using UART interface. I'm not sure why you want to use the USB DFU to download another bootloader rather than an application firmware.

     If you want to use the UART as your interface for bootloading then there is both a ROM based UART bootloader as well as flash-based UART bootloader. With the flash first erased, you can select the ROM based UART bootloader, see below. 

    If you wish to use the flash-based UART bootloader then you can use the CCS or LMflash programmer to first load the bootloader which in this case the boot_serial to the beginning of the flash. Once the boot_serial is run, it will download the application to a different memory location in the flash.

    Please note that no matter ROM base or flash bootloader is used, if there is already an application firmware in the flash then the bootloader will not download the application firmware again unless you force it to do. If the bootloader sees an application already residing in the flash it will just jump to the application for execution.

  • Hi Charles,

    Unfortunately this is not what I'm trying to do. I've already used the ROM bootloader and know that it works. I'm trying to get the flash-based bootloader to work with USB.
    I know the boot_serial example is used for UART, but within the config file you should be able te make it so the bootloader uses the USB perhiperal. 

    I don't specifically need to flash the new bootloader via DFU.

    But still, after the I program the boot_serial which should have the USB bootloader, and add boot_demo1. When I press SW1 the USB device will not get recognized by windows. 
    Even without flashing boot_demo1 (so I'm certain the bootloader runs) the USB is not recognized. 

    Kind regards,

    Daan 

  • Hello,
    I have a similar problem. Where can I get LM Flash Programmer for Linux? I have seen it but I don't know if it works in Linux.
  • Hi Daan,

    If you want to use a flash based USB bootloader then i will suggest you take a look at the usb_stick_update example. The usb_stick_update is like a USB bootloader. It needs to be first programmed at the beginning of the flash. Once running, the usb_stick_update will download your application firmware by reading a binary file from a USB memory stick . There is also a usb_stick_demo application which is meant to be loaded into flash memory from a USB memory stick.
  • Hi Editor,
    The LM flash programmer is only for Windows. There is no Linux version.
  • Thank you.

    Regards
  • Hi Charles,

    I'll try to see if I'm able to get that working, just ordered a USB OTG cable with USB-A receptacle so I can plug in an USB device.
    However, do you know what could have been the problem with the application which isn't working?

    Kind regards,

    Daan
  • Hi Daan,
    I don't know the reason why it didn't work. Perhaps the enumeration wasn't complete. I will suggest that you first get the usb_stick_update example to work first and see if it suits your need. If you want to migrate the boot_serial from boot by UART to boot by USB I will also suggest you go through the Bootloader user's guide. It is located in <TivaWare_Installation>/docs/SW-TM4C-BOOTLDR-UG-2.1.4.178.pdf.
  • Hi Daan,
    I have not heard back from you. I assume you find the usb_stick_update useful as a reference. I will close this thread for now. If you have new questions you can open a new thread or you can reopen this thread if the issue is not resolved.
  • Hi charles,

    USB cable just arrived, and the usb_stick_update + demo works as intented. Still not able to flash with a usb cable from laptop to device but since this seems to work I'll use it instead.

    Thanks for the help!

    Kind regards,

    Daan