工具/软件:
对于我的应用、我需要在 MRAM 中的不同位置链接几个不同的映像。 然后、引导加载程序可以根据某些条件选择要引导的映像。 我可以在 MRAM 开始时成功引导映像、使用引导加载程序的矢量表(在0x0处)将 IRQ 和异常重定向到 MRAM 中的应用矢量表。 但是、我现在需要将该矢量表复制到内部 SRAM、以便能够通过以局部方式设置 SRAM 矢量表来使用 MRAM 中的任何应用程序映像、如 SPNA236中所述。
应用程序在初始化时复制矢量表、调试显示其已正确复制:
生成中断后、它会按预期跳转到 SRAM 矢量表 IRQ 条目、因此我的引导加载程序矢量表重新分区似乎正常工作。 但是、如图所示、执行的下一条指令是 FIQ 矢量条目(0x0800001C)、然后是0x08000020、依此类推。 CPU 似乎没有正确获取操作码。
我已经尝试了该区域的几种 MPU 配置、目前已将其配置为 NORMAL_OITNOWA_NONSHARED 和 PRIV_RW_USER_RO_EXEC。 我在压缩矢量表(DSB 和 ISB)前后设置指令和数据屏障指令。
这里缺少一些东西吗?