Other Parts Discussed in Thread: TMS570LC4357
器件型号: TMS570LC4357
尊敬的 TI 专家:
我正在上开发自定义引导加载程序 TMS570LC4357 (定制板)。 目标是从引导加载程序(内部闪存@ 0x00000000)跳转到存储在中的多个应用程序 外部存储器 (EMIF MRAM) 从0x60000000(应用 1)或其他偏移开始。
当前实施和问题:
目前、我已0x60000000通过修改引导加载程序sys_intvecs.asm以svcEntry将直接转发到应用程序vPortSWI处理程序 (FreeRTOS)、成功跳转到的单个应用程序。 这样可以正常工作、但它会在引导加载程序和特定应用程序地址之间建立很强的依赖关系。
我的要求是支持 多个应用程序 在 EMIF 中(例如,App A at、App B at)0x600000000x60100000。 因此、对引导加载程序矢量表中的跳转地址进行硬编码并不是一种可行的解决方案。
目标:
我需要一种方法、在跳转后使应用程序完全独立于引导加载程序的矢量表。 具体来说、我希望应用使用它HL_sys_intvecs.asm位于 EMIF 中的自己、以便中断(尤其是 FreeRTOS 的 SVC)直接由活动应用的矢量表处理。
问题:
-
VBAR 重定向: 正在修改 VBAR(矢量基址寄存器) 在应用程序的启动代码 (
_c_int00) 中、在 Cortex-R5 上实现此目的的建议方法是什么?-
我尝试使用
_MCR内在函数写入 CP15 C12 (VBAR)、但遇到Undefined Instruction异常或系统挂起。 将 VBAR 指向 EMIF 时、我是否可能缺少特定的约束(例如 MPU 设置,特权模式)?
-
-
多个应用程序的最佳实践: TI 是否有引导加载程序的参考设计或示例、该引导加载程序支持跳转到外部存储器中的多个应用程序映像、其中每个应用程序都管理自己的中断矢量?
非常感谢有关将向量表切换到 EMIF 的正确序列的任何建议或代码片段。