This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:SRAM 矢量表无法正常工作

Guru**** 2318830 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1523354/tms570lc4357-sram-vector-table-not-working-properly

器件型号:TMS570LC4357

工具/软件:

对于我的应用、我需要在 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)前后设置指令和数据屏障指令。

这里缺少一些东西吗?