Tool/software:
I am currently working on integrating an application based on uC/OS-III (Micrium) with a CAN-based bootloader on a TMS570LC43x LaunchXL2 development kit.
The application is a simple LED blinking demo. When programmed directly (without the bootloader), it runs correctly and the LED blinks as expected. However, when flashed via the bootloader (after modifying intvects.asm and link.cmd), the application fails to start and execution gets stuck in OS_CPU_ExceptHndlr.
I have already checked the forum for similar issues and found [this discussion]. In my case, however, execution halts earlier in the process, specifically before reaching the first OSTimeDly
call.
Setup Details:
-
MCU: TMS570LC43x (LaunchXL2 DevKit)
-
OS: uC/OS-III (Micrium)
-
Application: Simple LED blinking task
-
Bootloader: CAN-based (forked from TI TMS570LC43xx example)
Observed Behavior:
-
Direct flashing: Application runs normally (LED blinks as expected).
-
Flashing via bootloader: Application does not start (LED does not blink, stuck in OS_CPU_ExceptHndlr).
Questions / Support Needed:
-
Are there known considerations or limitations when using uC/OS-III with a bootloader on TMS570 devices?
-
Could this behavior be related to vector table relocation, startup code modifications, or the VIM (interrupt) dispatcher configuration issue?
-
What is the recommended approach to ensure task scheduling and system tick initialization work properly when the application is launched via a bootloader?
-
Are there any reference examples, documentation, or guidelines for adapting uC/OS-III startup code to work reliably behind a bootloader on Cortex-R devices?
Thank you in advance for your support.