I have a bootloader program that has access to external SRAM which uses SSI3_BASE. I know that I have setup the external SRAM, correctly because I can access the data from the memory location.
When I try to jump to new vector address, the code locks up and never jumps. If I removed the code that involves using the external SRAM , the bootloader jumps to the new vector address. Any suggestion or clues on the solution.
.
.
.
//Several lines of code before jumping
IntDisable(INT_UART4); // Wifi
IntDisable(INT_UART5); // Wifi
IntDisable(INT_UART2); // RS232
SSIDisable(SSI3_BASE); // SRAM
IntMasterDisable();
SysTickIntDisable();
SysTickDisable();
Jump2App(EEPROM_StartAdr);
}
// Bootload jump function
static void Jump2App(uint32_t StartAddr)
{
HWREG(NVIC_DIS0) = 0xffffffff;
HWREG(NVIC_DIS1) = 0xffffffff;
HWREG(NVIC_DIS2) = 0xffffffff;
HWREG(NVIC_DIS3) = 0xffffffff;
HWREG(NVIC_DIS4) = 0xffffffff;
HWREG(NVIC_VTABLE) = StartAddr; // StartAdress is 0x8000
__asm(" ldr r1, [r0]\n"
" mov sp, r1\n");
__asm(" ldr r0, [r0, #4]\n"
" bx r0\n");
}
Raj