Arm 如何跳转到lpc4078上Keil的地址?

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 <&

我有引导程序,当我在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 << "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指令。()