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.

SW-TM4C: Question about boot loader user guide

Part Number: SW-TM4C
Other Parts Discussed in Thread: TM4C129ENCZAD, UNIFLASH

I have two questions while reading the user guide.

1. What is bootloader?
The idea, I think, is that the bootloader is the program run before the application runs.

By the way, is it correct to recognize that the bootloader is installed in the TM4C129x in the virgin state?

2.About USB DFU
What is the DFU described in the bootloader user guide chapter 8 used for after all?

I'm thinking of updating the application from USB.

  • Hi,

    1. What is bootloader?
    The idea, I think, is that the bootloader is the program run before the application runs.

    By the way, is it correct to recognize that the bootloader is installed in the TM4C129x in the virgin state?

    There are two types of bootloader. One is ROM-based and another is flash-based. When the device is virgin, the flash is fully erased. In this case, the bootloader on the ROM memory can be used to download your application code. The application code is normally downloaded to address 0x0. After reset, the application will run from address 0x0. Flash-based bootloader on the other hand is pretty much the equivalent of ROM-based bootloader but must be loaded to the flash before it can be used. Once it is loaded, it will reside at address 0x0. The flash-based bootloader is normally a small program that may just take up a few kBytes of memory. After the flash-based bootloader is present on the flash, the ROM-based bootloader will be bypassed. In another word, the flash-based bootloader will take over once it is present on the flash. The flash-based bootloader can download your application code. But that application will start at a higher address such as 0x4000.

    2.About USB DFU
    What is the DFU described in the bootloader user guide chapter 8 used for after all?

     A bootloader can be configured for different types of communication ports. You can configure a bootloader for UART so that it will communicate with the external host to download your application through a UART port. You can do the same for other communication ports such as USB, Ethernet, SPI, I2C and CAN. When you configure a flash-based bootloader for USB then it is called a DFU. ROM-based bootloader is preloaded to support USB and other communication ports. 

    We have provided sufficient technical background and documentation on how to use our TM4C microcontroller between this thread and past threads. Please consult the resources provided for you to further your design efforts.

    We are not able to provide any support for any XDS110 related questions. Furthermore, the CCS team who owns this debug probe has indicated that the XDS110 has not been verified to work with your selected device.

    Our recommendation remains to forego adding a TM4C to your custom board and use an external JTAG probe instead.

    One final question to you is why do you insist on building a custom XDS110 debug probe on your custom board? If you are going to manufacture a million boards then you would need to build all of those boards with an IC that supports XDS110 plus your target device. It is a big cost adder to you, isn't?  If you have external XDS110 debug probe then you can create a lower cost system for your design. I don't know understand your application. Again, as stated we are not able to provide any support for any XDS110 related questions. Our recommendation remains to forego adding a TM4C to your custom board and use an external JTAG probe instead.

  • thank you for your reply.

    Regarding your question and answer, is the following recognition correct?

    1. About Bootloader
    Flash-based and ROM-based, and the ROM-based was originally installed.

    Does that mean I need to have a flash-based bootloader to put any applications in?

    2.About USB DFU
    Does this mean it is possible to update applications and bootloader from USB?

    I have one question in light of this story.

    Will JTAG be required to load the program into the TM4C129ENCZAD?

  • Does that mean I need to have a flash-based bootloader to put any applications in?

    If you have a JTAG connection to your device, you can use JTAG interface to download your application. This is the easiest way. If you don't have a JTAG interface to your target device then you need a bootloader, be it a ROM-base bootloader or flash-based bootloader. 

    2.About USB DFU
    Does this mean it is possible to update applications and bootloader from USB?

    I have one question in light of this story.

    Will JTAG be required to load the program into the TM4C129ENCZAD?

    As said, if you have a JTAG connector to your target device (this can be any device(s), not just TM4C129) then you can just use CCS or Uniflash to program your code to the target device via JTAG. 

    Please note that "how" to load a program to a device through JTAG or USB is entirely different from "what" program is being loaded. You may be successful in loading a program to a device. But that does not mean the program will work on the device. Loading XDS110 firmware to TM4C129ENCZAD may work and that is purely just the loading part. This does not mean that XDS110 firmware will work and run on TM4C129ENCZAD. This is what we have been saying all along. 

  • Hello, as far as I hear from you
    If I load the program without JTAG, what interface do I need to load boot_loader.bin from?
    With JTAG, you don't need to load boot_loader.bin.

  • Hi,

      Without JTAG, you can load the boot_loader.bin via USB if the USB enumerates as a DFU device. Refer to my answer in other posts where I said that a  virgin device will enumerate as a Stellaris Device Update Upgrade device because there is a ROM-based bootloader. Again, please refer to what I said in my earlier reply. You may be successful loading the boot_loader.bin to the flash through the USB port or through the JTAG. But that does not mean the boot_loader.bin will work on our target device. If that boot_loader.bin is the bootloader for the XDS110, then you have already proven several times that it will not work on the TM4C129ENCZAD device.