Other Parts Discussed in Thread: UNIFLASH
Tool/software:
Hi TI Experts,
I’m working on a F28003x bootloader and an App1. Here’s my setup:
What I’ve Done So Far
-
Bootloader is located at 0x80000.
-
App1 is built to be located starting at 0x88000.
-
Bootloader receives
.bindata via CAN and writes it to flash starting at 0x88000. -
After writing, I compute and verify the CRC32 of the
.bin— it matches, confirming the data was flashed correctly.
Issue
I try to jump from the bootloader to the App1 entry point (_c_int00) using the address from the App1 .map (0x000896BA), but I get an illegal interrupt handler.
Here’s the code I’m using for the jump:
#define APP1_ENTRY_ADDR 0x000896BAUL // From App1 .map (_c_int00)
void jump_to_application(void)
{
DEVICE_DELAY_US(100);
CPUTimer_stopTimer(CPUTIMER0_BASE);
CPUTimer_reloadTimerCounter(CPUTIMER0_BASE);
CPUTimer_setEmulationMode(CPUTIMER0_BASE, CPUTIMER_EMULATIONMODE_STOPAFTERNEXTDECREMENT);
DINT;
IER = 0x0000;
IFR = 0x0000;
asm(" NOP"); asm(" NOP"); asm(" NOP"); asm(" NOP");
DEVICE_DELAY_US(5000);
void (*app_entry)(void) = (void (*)(void))APP1_ENTRY_ADDR;
app_entry();
// Never returns
}
What I’m Confused About
-
The
.mapis generated for the.out, which has symbols like_c_int00. -
However, I’m downloading only the
.bin(raw data) into flash at 0x88000. So:-
Should I be jumping to the
_c_int00address from the.map? -
Do I need to locate
.codestartor any other entry point instead?
-
-
What’s the correct method for jumping from a bootloader to an app built for F28003x when using
.binfiles?
What I’m Seeking
-
Clarification on how the
.mapvs.binaddresses relate. -
Advice on the right entry point for a
.bin-based App1. -
Is my jumping method correct, or do I need to adjust it (e.g., setting SP, using
.codestart)?
Thank you in advance!
If needed, I can also attach the .cmd files and .map files for both projects.