请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F280039 工具与软件:
我将链接器配置为在几个段上生成存储器 CRC、如 附录 C 中的《TMS320C28x 汇编语言工具》手册中所述
代码(如所附最小项目中的代码)主要是手册的副本、但有一些更改。
没有问题、直到被测部分包含了测试代码 应用 、生成错误的 CRC。
我考虑了对原始代码的(小的)更改是否具有破坏性。 但是、其他存储器区中的结果始终是正确的、并且在 PC 版本上处理同一组二进制数据时也是如此。
测试方法:
- 构建和加载示例项目
- 在
ref_check_CRC()
gen_crc()
调用之前/之后添加断点、该断点用于链接器生成的每个 CRC:出错时、生成的 CRC 与预期的 CRC 不同
注意:
- 故障段是只读的、执行过程中不会发生任何变化
- 为了确保:我将故障部分保存到磁盘为二进制文件、并在其上运行为 PC 重新编译的相同 CRC 代码、结果正确
- 我的代码没有活动的 printf()。 然而、启用它们的代码也会产生一些段 CRC 错误-还不知道原因
- 在随附的测试代码中添加了一条指令
#pragma SET_CODE_SECTION(".crc_code")
、当启用后会在另一个段中移动 CRC 计算:这会使.text
该段的 CRC 正常工作
有人发现了我在示例中忽略的巨大错误吗?