大家好、
我正在为 TMS570LC43x 实施引导加载程序和应用。 在应用中、我想使用 SafeTI 库。 根据提供的示例、我将在 应用程序开头从 sl_asm_api.asm 调用 sl_Init_R5Registers ()和 sl_Init_StackPointers ()例程。 而在引导加载程序中、我从 HL_sys_core.asm 调用_coreInitRegisters_()和_coreInitStackPointer_()。
我注意到的是、当在 应用程序中留下 SL_Init_R5Registers ()时、连接寄存器(LR)为返回地址保留了错误的值。 因此、在调用 sl_Init_R5Registers ()后执行不会继续、这是错误的。 据我所知、发生这种情况的原因是 sl_Init_R5Registers ()假定控制器处于监控器模式、但并非因为我们已经在引导加载程序中切换到了系统模式(在 _coreInitRegisters_()中)。
- 我应该如何处理这个问题? 这些例程是否应仅在复位后调用、是否仅在引导加载程序中调用?
- 在读取这些例程的代码后、我不清楚 HL_SYS_CORE.asm 和 sl_ASM_API.asm 的例程_coreInitRegisters_()和_coreInitStackPointer_()与 sl_ASM_API.asm 的例程 SL_Init_R5Registers()和 sl_Init_StackPointers()之间有何差异?
感谢你的帮助、
Simon