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.
大家好、
我正在尝试在 RM46 Launchpad (RM46L852PGE)目标上设置一个简单的 hello world 项目。 我正在使用 Segger J-Link 和 GDB 通过其20引脚 TI JTAG 接头对电路板进行调试。
我能够进入一 个正在运行的应用程序、并且尝试使用 RTI 比较0中断来实现一个基本的1kHz 时基。 但是、当我启用中断时、似乎处理器跳转到 undefEntry 处理程序、该处理程序目前是 Halcogen 生成的无限循环。 我在 rtiCompare0Interrupt 向量以及 rtiNotification 上设置了一个断点、该 IRQ 向量应在 RTI 中断被应答后调用该断点。
它在 rtiCompare0Interr()到 rtiNotification()的跳转中的某个位置显示,CPU 从未在该位置生成它,而是在 undefEntry... 有什么想法可以导致这种情况?
快速跟进:我成功解决了问题。 对于安装到 VIM RAM 的中断处理程序、HALCogen 似乎不会生成 ARM 模式 pragma。 因此、在 Thumb 模式下(也是我的项目的大部分)编译的代码包括这些处理程序、在进入 IRQ 时导致 UNDEF 异常。 我能够通过在 RTI.c 中的 RTI IRQ 中添加一个__attribute__((target ("arm")))来解决此问题
最后、作为 TI Cortex-R 产品 RM 和 TMS 系列的较长时间用户、我向 HALCogen 团队提出了一个谦逊的建议:请测试您的代码生成输出、不仅适用于 TI 工具、还适用于 GCC。 这一问题应该被发现在真正的基本 V&V 中、绝不能进入客户的项目。 我还注意到,即使是最新的 HALCogen (我正在运行的是)*Still *也有6年前我在 TI 论坛上报告的与 C 入口点_c_int00相关的代码生成错误,它没有 ARM 模式 pragma,因此在执行冷复位时会导致 CPU 到达即损。 这是不可接受的。
谢谢 Abhl。 我会将您的解决方案添加到 HalcogGen 发行说明中。 目前、我们没有计划更新 IAR/GCC/GHS 工具的 HALCoGen。