Arm 如何跳转到lpc4078上Keil的地址?
我有引导程序,当我在lpc2xxx干得不错的时候。但是,当我将其复制到lpc4078时,引导加载程序不会跳转到主程序 我试过: 1) 使用Arm 如何跳转到lpc4078上Keil的地址?,arm,keil,lpc,Arm,Keil,Lpc,我有引导程序,当我在lpc2xxx干得不错的时候。但是,当我将其复制到lpc4078时,引导加载程序不会跳转到主程序 我试过: 1) 使用#定义用户\u闪存\u启动0x8000 __asm void boot_jump(uint32_t address) { LDR SP, [R0] LDR PC, [R0, #4] } main() { bool t = true; while(t) { ...WORKING CODE... uart <&
#定义用户\u闪存\u启动0x8000
__asm void boot_jump(uint32_t address)
{
LDR SP, [R0]
LDR PC, [R0, #4]
}
main()
{
bool t = true;
while(t)
{
...WORKING CODE...
uart << "Hello, World!!!";
}
uart << "END";
__disable_irq();
__set_CONTROL(0);
__set_MSP(stack_adr);
SCB->VTOR = (USER_FLASH_START & 0x1FFFFF80);
boot_jump(USER_FLASH_START);
}
void JumpToAppAt(unsigned int * vtbp)
{
__disable_irq();
__set_MSP(vtbp[0]); // load SP
((void (*)(void)) vtbp[1])(); // go...
}
main()
{
bool t = true;
while(t)
{
...WORKING CODE...
uart << "Hello, World!!!";
}
uart << "END";
__disable_irq();
__set_CONTROL(0);
__set_MSP(stack_adr);
SCB->VTOR = (USER_FLASH_START & 0x1FFFFF80);
JumpToAppAt((unsigned int *) USER_FLASH_START);
}
主程序未启动(
我认为主程序不起作用,并尝试:
3) 使用
\define USER\u FLASH\u START 0x0
,但没有任何更改。LPC2xxx基于ARM7,而LPC4078基于Cortex-M4。关于重置向量,我看到您已经调整为使用向量表的第二个条目。请确保向量表中存储的地址的LSB设置为1,即位[0]=1,因为该位表示Thumb指令,Cortex-M4处理器仅支持Thumb指令。()LPC2xxx基于ARM7,而LPC4078基于Cortex-M4。关于重置向量,我看到您已经调整为使用向量表的第二个条目。请确保向量表中存储的地址的LSB设置为1,即位[0]=1,因为该位表示Thumb指令,Cortex-M4处理器仅支持Thumb指令。()