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.

TMS320F28377D: Create a custom bootloader

Part Number: TMS320F28377D
Other Parts Discussed in Thread: C2000WARE

Hello,

I would like to create a custom bootloader on my TMS320F28377D.

My bootloader source code will be stored inside sector A to D and my application source code inside sector F to H.

Goals are:

  - to jumb inside bootloader after boot ROM (using boot to FLASH option) and after some treatments, jump to application without reset the µC.

  - to fix _c_int00 address to have always the same (if possible) or to get it from binary generated and to store it inside FLASH.

So my questions are:

  - Could someone tell me steps to do this ?

  - Is right to use C2000 Hex Utility with --binary option to generate file to put in FLASH ?

  - currently in linker file, codestart information is put at address 0x80000 so for me, at this address I must see _c_int00 address (0x91CDF in my case). But when I display memory, I see 00491CDF. Could you explain to me the 4 before _c_int00 address ?

  - could you confirm to me that it is not possible for CPU1 to write CPU2 FLASH memory ? => It is necessary to create a bootloader for each CPU !

Thanks in advance.

Martial

  • Martial, 

    You will get a response by the end of the day.

    Thanks,

    Sira

  • Martial, 

    1. Make sure that you are booting to Flash (can refer to chapter 4 of SPRUHM8I to see what needs to be set). The bootloader needs to be at the flash entry point, and the bootloader needs to branch to the application. You can refer to this post for more details: e2e.ti.com/.../875932

    2. If your bootloader understands that format, then it is fine. For reference, the flash kernels for Soprano use the -boot -sci8 -a flags to format the out file into the format needed for the ROM loaders. 

    3. The 4 could possibly be an opcode for an instruction, looking at disassembly would help there.

    4. You are correct, CPU1 and CPU2 can only program their own flash banks.

    Thanks, 

    Anu

  • Hi Anu,

    Thank you for your answer. You have right 4 is the opcode for Long Branch !

    An other question: before to jump inside my application, is it recommended to do some actions (like reset peripheral initialize inside bootloader or ...) ?

    Thanks in advance,

    Martial

  • Martial, 

    I would make sure you are just jumping to the entry point of the application. If you look at the C2000Ware examples, the flow is code_start->_c_int00->main for getting to the entry point of the application. 

    Thanks,

    Anu

  • Hi Anu,

    Thank you very much, I think I have all needed informations! For the moment, I just prepare implementation of the bootloader so I will be back if I have problem during development.

    Best regards,

    Martial