Bootloader XMC4500 ARM Cortex M4的用户代码偏移量

时间:2016-03-15 16:37:48

标签: arm offset bootloader m4

我已经制作了一个bootloader和一个可以进行通信的Windows应用程序。 Windows应用程序将hex文件(用户应用程序的偏移量从0x0C008000开始)发送到引导加载程序,后者将其存储在闪存中的地址。 hex文件的数据存储在正确的地址中。我通过阅读闪光灯来检查它。

引导加载程序等待3秒钟才能收到符号。如果没有收到任何标志,那么它将跳转到用户应用程序。

跳跃不起作用,我不知道为什么。 Bootloader从0x0C000000开始。 在用户应用程序的链接描述文件中,我映射了这样的内存区域(从0x0C008000开始)

MEMORY
{
FLASH_1_cached(RX) : ORIGIN = 0x08008000, LENGTH = 0xf8000
FLASH_1_uncached(RX) : ORIGIN = 0x0C008000, LENGTH = 0xf8000
PSRAM_1(!RX) : ORIGIN = 0x10000000, LENGTH = 0x10000
DSRAM_1_system(!RX) : ORIGIN = 0x20000000, LENGTH = 0x10000
DSRAM_2_comm(!RX) : ORIGIN = 0x30000000, LENGTH = 0x8000
}

跳转的代码如下

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。

0 个答案:

没有答案