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.

[参考译文] TMS570LC4357:RAM 上的 NOINIT 变量

Guru**** 2027820 points
Other Parts Discussed in Thread: TMS570LS3137
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1454250/tms570lc4357-noinit-variables-on-ram

器件型号:TMS570LC4357
Thread 中讨论的其他器件:TMS570LS3137

工具与软件:

我想将 RAM 的一部分用作 EEPROM 等非易失性存储器。 我不想在没有上电复位的情况下初始化变量或将其设置为零。 我正在尝试此概念、但要避免 ECC 错误并确保 RAM 的完整性、我想对所有 RAM 使用 meminit function。 我 ı 使用 MEMINITDOMAIN 寄存器将 meminit 存储到 RAM 部分的一半(总共8个硬件部分,每4个硬件部分将这个8个硬件部分分组为2个软件部分),然后我将数据从没有初始化的部分复制到这个部分。 我使用 meminit 函数来初始化 RAM 的后半部分。 在 RAM 第二部分初始化后、我再次将数据从 RAM 的第一部分复制到 RAM 的第二部分、并且我使用 meminit 函数来初始化 RAM 的第一部分。 (我还将正确编辑我的链接器文件)


在理论上,它似乎是一个合法的方法来使用 RAM 的一部分作为 noinit 内存。 但是、在使用此场景时、我将会遇到一些问题。

当我软件、CPU 或系统复位时也没有问题当我使用 HDK 上的 PORRST (上电复位)按钮时也没有问题。 但是、当我尝试关闭 HDK 的电源时、在该电源打开之后、所有 RAM 变量都是垃圾值。 (我在断电/上电序列后通过 IDE 重新连接到 HDK 以查看 RAM 变量)。 当我试图再次使用 PORRST 按钮来查看损坏 RAM 的运行方式时、在 PORst 按钮之后的 RAM 变量看起来正常。 我再次运行代码、这次在启动时会遇到 ESM 错误。

我要附加一个文件、以阐明我正在尝试的内容。


我看到的 ESM 错误是 ESM 组3通道8错误。 在查看数据表时、显示该误差是保留的、因此我无法分析该误差。
我认为 ECC 逻辑会导致这些问题。
1)当代码在启动文件上运行时,我可以禁用 ECC 逻辑吗?
2)为什么在我关闭电源和 PORRST 按钮时 RAM 的行为不同?
3)如何正确使用 RAM 的一部分作为 NOINIT 部分? 是否有实施的法律途径?
4)什么是 ESM 组3通道8错误?