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.

TMS320F2808: ECan Bootloader

Part Number: TMS320F2808
Other Parts Discussed in Thread: TMS320F28335, C2000WARE

I have developed a tool to be able to download a hex file to the F2808 (on a dock kit) via a Innomaker tool. 

When I load the hex file via an update() method I created (using the Flash API), I can upload and burn the flash as expected indicating the hex file is good for loading, ( I have 2 hex files - 1 with 1/2 sec LED blinking and 1 with 1 second blinking. Loading either hex file indicated the upload worked based on the blinking LEDs.)

Now I want to get the native bootloader to work. I set the Mailbox ID = 1, the baud rate to 500KBps (XCLKIN = 20MHz) and jumper GPIO18 to gnd in the 280xx Boot section of the dev kit.

Boot loader options for hex file are: --romwidth=32 --diag_wrap=off --boot --sci8 --ascii

However, when I try the bootloader method, everything looks like it is working, but the led flash rate is not switching, indicating the current bootloader failed.

Anything else about the bootloader I haven't considered? 

I have attached a small file to show the first few bytes that are transferred - captured by Salaea Logic tool.


  • By "native method", I presume you are referring to the CAN option of the on-chip boot-ROM, correct? So, essentially what you are saying is that your own custom bootloader works, but not the CAN loader of the on-chip Boot-ROM.

  • Correct - putting the unit into CAN boot mode with GPIO18 to Gnd etc... I then remove the jumper when the programming is complete and there is no change or if I empty the Flash prior to the CAN boot load, it fails to come up. I even try a power cycle as well but the F2808 fails to come up - no LEDs flashing

  • Jeffrey,

          It would be more time-efficient to discuss this on a call. I will reach out to you offline.

  • Jeffrey,

           Following are the questions I am seeking an answer for:

    When I load the hex file via an update() method I created

    Where is the "update() method" run from? Is it stored in a flash sector? Is it similar to the BROM-based CAN loader? IOW, are you leveraging the functions in BROM loader?

    I can upload and burn the flash as expected indicating the hex file is good for loading,

    The fact that your hex files work fine with your update() method does not necessarily mean that the hex files are suitable for the BROM based loader, unless your update()  method leverages the BROM functions.

    indicating the current bootloader failed.

    Did you look at the flash contents via JTAG to ascertain if the flash was indeed programmed?

    Anything else about the bootloader I haven't considered? 

    How do you ensure that the previous block of data transmitted has been processed/programmed before signaling to the host that it can send the next block of data? IOW, the handshaking between the host and CAN loader in BROM.

  • Jeffrey,

         Hope the clarifications I provided in the call yesterday has you going in the right direction. On a different note, please review and understand how the TMS320F28335 CAN flash kernel project works. Then you just need to port this code for F2808 device. 


    I don't believe there are any open actions for me right now. I will close the post. If you have more questions, you can respond to the post.