引导加载程序XMC4500 ARM Cortex M4的用户代码偏移量

引导加载程序XMC4500 ARM Cortex M4的用户代码偏移量,arm,offset,bootloader,m4,Arm,Offset,Bootloader,M4,我制作了一个引导加载程序和一个windows应用程序,它们可以进行通信。windows应用程序将十六进制文件(偏移量从0x0C008000开始的用户应用程序)发送到引导加载程序,引导加载程序将其存储在闪存中的地址。十六进制文件的数据存储在正确的地址。我通过看闪光灯检查过了 引导加载程序等待3秒钟以接收信号。如果没有收到任何标志,它将跳转到用户应用程序 跳跃不起作用,我不知道为什么。引导加载程序从0x0000000开始。 在用户应用程序的链接器脚本中,我映射了如下内存区域(从0x0C008000开

我制作了一个引导加载程序和一个windows应用程序,它们可以进行通信。windows应用程序将十六进制文件(偏移量从0x0C008000开始的用户应用程序)发送到引导加载程序,引导加载程序将其存储在闪存中的地址。十六进制文件的数据存储在正确的地址。我通过看闪光灯检查过了

引导加载程序等待3秒钟以接收信号。如果没有收到任何标志,它将跳转到用户应用程序

跳跃不起作用,我不知道为什么。引导加载程序从0x0000000开始。 在用户应用程序的链接器脚本中,我映射了如下内存区域(从0x0C008000开始)

跳转代码如下所示

void RunFlash(void)
{
   PPB->VTOR = 0x0c008000; // Offset of the Vector

   asm("ldr r0, =0x0c008000");
   asm("ldr r1, =0xE000ED08");
   asm("str r0,[r1]");
   asm("ldr sp, [r0], #4");
   asm("ldr r15, [R0]");
}
我总是收到“0x80082b0”错误的“无可用源”

有人能帮我吗?我是否需要对链接器脚本进行其他更改?我是否需要更改启动代码中的某些内容


我使用的是Infenion XMC4500和DAVE4 IDE。

嗯,听起来这是一个很大的错误。代码不是我的,我从Infenion引导加载程序示例中获取的。你能告诉我它是如何实现的吗?呸,我的错误,我不知怎的将post增量读取为偏移量。再看一次,该地址似乎是系统某些部分的可缓存别名应用程序-加载的实际重置向量是什么(即0xc008004处的字值)?
void RunFlash(void)
{
   PPB->VTOR = 0x0c008000; // Offset of the Vector

   asm("ldr r0, =0x0c008000");
   asm("ldr r1, =0xE000ED08");
   asm("str r0,[r1]");
   asm("ldr sp, [r0], #4");
   asm("ldr r15, [R0]");
}