Other Parts Discussed in Thread: HALCOGEN, TMS570LC4357
主题中讨论的其他器件:HALCOGEN、
工具/软件:
大家好!
我请参阅论坛条目 TMS570LC4357:在 RAM 中运行代码时数据中止 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛 、在此论坛中、这个问题已经讨论过但很遗憾未解决。
我还遇到了一个问题、即当将过多的代码移动到 RAM 时、经过查看周期后会发生异常。 进行了以下设置:
HalCoGen:

RAM 已为执行代码做好准备。

函数 Scheduler_L4 从软件中断启动、并位于 RAM 区域中。

这是该函数中表示未定义操作码的第一条指令。 在执行组装步骤时、跳转至地址 0x00000004、但未定义合理内容。 然后发生 UNDEF 异常。
我从闪存复制到 RAM 的函数大小为 0x57ac。

不违反 RAM 区域。 0x806d4e0 + 0x57ac = 0x8072C8C、这是 MPU 区域 3 内的有效地址。
仅复制 0x3504 字节代码时、一切都正常运行。

然后,函数 Scheduler_L4() 的第一条指令如下所示:

因此、指令从 0xE92D4010 更改为 0x F 92D4010.
更多信息:在软件中断 ISR 中启用缓存、并调用复制到 RAM 中的完整代码。
您…帮助我、为什么复制到 RAM 的代码大小与其中一个函数中更改的指令之间存在这种明显的相关性
所有设置(HALCOGEN,链接器文件)保持不变、只是更改了代码大小。
谢谢、
基督教



