大家好、
我的客户正在 TMS570LS0714平台上开发 CAN_bootloader、他们尝试将应用矢量表重新映射到0x20000、并按照此链接中的说明进行操作:
但他们对如何 理解 cmd 配置以及如何使用引导加载程序处理应用程序中断有一些疑问。
1.为什么引导加载程序中的中断矢量表 是"应用程序起始地址- 0x08"? "-0x08"代表什么?
2. 为什么 SVC、中止(预取)、中止(数据)的地址与“应用程序起始地址- 0x08”相同 ?
在其应用 sys_intvecs.asm 中、代码如下所示、与 引导加载程序中的中断矢量表相比有何差异?
.sect ".intvecs" ARM ;-------------------------------------------------------------- ;中断例程的导入引用 .ref _c_int00 .ref _dabort .ref phantomInterrupt .def resetEntry ;-------------------------------------------------------- ;中断向量 resetEntry b _c_int00 undefEntry b undefEntry svcEntry b svcEntry 预取 Entry B prefetchEntry b _dabort b 相位中断 LDR PC、[PC、#-0x1b0] LDR PC、[PC、#-0x1b0] ;------------------------------------------------------------------
4. 在上面的线程中,newiseman 说:“注意代码“switch (getResetSource()....” hL_sys_startup.c 文件中。
当代码从引导加载程序跳转到应用程序时、在引导加载程序中清除复位源、不会执行中断矢量初始化和其他函数、因此无法进入应用程序中断。
如果未修改此位置,则会遇到此问题。"
因此、客户希望了解如何修改文件以避免此问题。
5. 在重新映射中断矢量表并在应用程序代码中运行 FIQ 和 IRQ 中断时,是否需要修改和注意任何内容?
