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.

TMS320F28375S: Issue with Bootloader and Application Transition on TMS320F28375S

Part Number: TMS320F28375S
Other Parts Discussed in Thread: UNIFLASH

Tool/software:

Hello,

I am currently working on a project using the TMS320F28375S microcontroller with CCS12. I have set up sectors A to D for my custom CAN-based bootloader and sectors E to J for the application.

Here's the setup and the issue I am facing:

  1. My custom CAN-based bootloader is working correctly. I can jump from the bootloader to the application without any issues.
  2. However, when my application requests a new flash update, the controller does not restart properly. Instead, it gets stuck at an ESTOP0 after the interrupt handler. This occurs after a reset, and the bootloader does not start again.
    It seems like the bootloader is not initializing properly upon a reset or power cycle, and the application is starting directly without the bootloader execution.

Could you please provide guidance on the following:

  1. How to ensure that the bootloader runs first every time the controller starts or resets, and only then jumps to the application?
  2. How to debug the issue where the controller gets stuck at ESTOP0 after an interrupt handler during a flash update request?

here is how i reset my controller on new flash update.

after this the controller get stucks on ESTOP0;

Any insights or suggestions would be greatly appreciated.

thanks and regards

Muzammil Qureshi

  • Hi Muzammil,

    >How to ensure that the bootloader runs first every time the controller starts or resets, and only then jumps to the application?

    You can have the device boot mode set to start in CAN via the boot mode switch settings.

    >How to debug the issue where the controller gets stuck at ESTOP0 after an interrupt handler during a flash update request?

    First, look at what functions proceed the ESTOP0 and where the program counter (PC) is, are you able to step through once the flash update request happens?

    Thanks and regards,

    Charles

  • Hello Charles,

    I flash the bootloader code with Uniflash into the bootloader area (sector A to sector D). then I flash the application code into the application area (sector E to sector J).

    My expectation is that, on every controller startup, the bootloader should run first and then jump to the application. However, the controller starts directly from the application instead.

    The boot mode selection pins (GPIO 72 and GPIO 84) are pulled up, so the settings indicate boot from flash.

    as i have already flash the bootloader code in flash memory sectors A to D by uniflash, the bootloader should start every time the controller is powered on.

    Additionally, if I only flash the bootloader code and power cycle the controller, the bootloader does not run.

    What could be causing the bootloader not to start every time I power on the controller? Could there be another issue at play?

    Thank you for your assistance.

    thanks and regards 

    Muzammil Qureshi

  • Hi Muzammil,

    Thanks for clarifying, based on the placement of the bootloader and application you would want to boot to flash in this scenario. 

    For your bootloader, what is considered the 'BEGIN' for it's codestart section, is it Flash Sector A? Another question, what is the 'BEGIN' for your application?

    If able, you can share your .map file for both bootloader and application?

    Thanks and regards,

    Charles

  • Hello Charles,

    For your bootloader, what is considered the 'BEGIN' for it's codestart section, is it Flash Sector A?

    BEGIN            : origin = 0x080000,   length = 0x000008

    Another question, what is the 'BEGIN' for your application?

    BEGIN            : origin = 0x088000,   length = 0x000008

    If able, you can share your .map file for both bootloader and application?

    sure,

    mapfiles.zip

    thanks and regards

    Muzammil Qureshi

  • Hi Muzammil,

    Thanks for the files, will get back to you by the next day.

    Regards,

    Charles

  • Hi Muzammil,

    After looking at the map files, it seems that the BEGIN's are as indicated. Does the same behavior occur if the application start is moved to Bank1?

    One thing to try is to combine the flash application and bootloader into a single .out file prior loading, reset the device and see if it starts at 0x80000 for the bootloader.

    Thanks,
    Charles

  • Hello Charles,

    combine the flash application and bootloader into a single .out file

    I have no idea of how to do that, still, every time my application is changed, i need a text file of it to flash with my CAN bootloader.

    is there any alternate??

    thanks and regards

    Muzammil Qureshi

  • Hi Muzammil,

    Alternatively, you can combine both application and bootloader into a single text file as well. This is demonstrated in the CAN Flash Programming of C2000 Microcontrollers application note for F28P65x devices, but the same can be applied here for the single core F28375S device.

    Thanks and regards,

    Charles