将Cortex-M3的矢量中断表重新定位到SRAM?

将Cortex-M3的矢量中断表重新定位到SRAM?,c,arm,C,Arm,每个人 在我的项目应用程序中,我从外部ddr3内存(arm cortex-M3)执行FreeRtos。 此函数代码未运行后,执行到VportstartFirstTask()的代码。 下面是我们在应用程序中使用的VportstartFirsttask void vPortStartFirstTask(void) { / Use the NVIC offset register to locate the stack. / _

每个人 在我的项目应用程序中,我从外部ddr3内存(arm cortex-M3)执行FreeRtos。 此函数代码未运行后,执行到VportstartFirstTask()的代码。 下面是我们在应用程序中使用的VportstartFirsttask

void vPortStartFirstTask(void)
{
                                     / Use the NVIC offset register to locate the stack. /
__asm volatile(ldr r0, =0xE000ED08
ldr r0, [r0]
ldr r0, [r0]

    / Set the msp back to the start of the stack. /
    msr msp, r0
    / Call SVC to start the first task. /
    cpsie i
    svc 0
    nop
    )

}`
如果我使用其他链接器文件运行同一个项目,效果会很好。从Onchip内存运行,工作正常

当我从外部内存运行时,我面临一个问题

有谁能帮我把矢量表重新定位到SRAM或其他地方吗


提前感谢。

您只包括堆栈设置,而不是SRAM的偏移设置。请包括所有相关代码。请注意,这是偏移量,不是绝对地址。不要忘记TBLBASE和保留位。参考: