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.
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:
Could you please provide guidance on the following:
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,
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