Dear support,
We work with concerto F28m35Hc1, have two application on the flash (loader [0x204000]-[0x22000]) and M3Application [0x240000]-[0x27c000]). Both applications based on mcusdk 1.0.0.68, XDCTools 3.23.4.60 , We can not switch between applications.
Loader cmd:
MEMORY
{
BOOTROM (RX) : origin = 0x0, length = 0x10000
FLASH_BOOT (RWX) : origin = 0x200030, length = 0x4
INTVECS (RWX) : origin = 0x200034, length = 0x1000
STARTCODE (RX) : origin = 0x204000, length = 0x0008
FLASH (RWX) : origin = 0x204034, length = 0x18fcc
...}
SECTIONS
{
.startcode: >> STARTCODE
.intvecs: > INTVECS
...}
M3Application.cmd:
MEMORY
{
BOOTROM (RX) : origin = 0x0, length = 0x10000
FLASH_BOOT (RWX): origin = 0x200030, length = 0x4
INTVECS (RWX) : origin = 0x200034, length = 0x1000
STARTCODE (RX) : origin = 0x230000, length = 0x0008
FLASH (RWX) : origin = 0x230034, length = 0x20000
...}
SECTIONS
{
.startcode: >> STARTCODE
.intvecs: > INTVECS
...}
and jump we do from loader by the following way:
#pragma CODE_SECTION(".startcode")
void ResetISR(void)
{
// Jump to the CCS C Initialization Routine.
__asm(" .global _c_int00\n"
" b.w _c_int00");
}
static void JumpStackPointerToAddress(Uint32 address)
{
__asm(" mov sp, r0\n" // sp is now *address
" bx r0\n" ); // jump to *address
}
static void StartM3Application(void)
{
IntMasterDisable(); // disable interrupts
HWREG(NVIC_VTABLE) = 0x230000; // redirect the vector table
JumpStackPointerToAddress(0x230001); // jump to startup code of application
}
but it doesn't work.
Could you help us with it? where is the problem?
Thanks,Sabina