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.
工具与软件:
我想将 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错误?
您好、Rose、
首先、我建议您参考下面的线程以了解复位和断电期间 RAM 的运行方式。
(+)复位后的 RM48 RAM 状态-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
(+) TMS570LC4357:Halcogen -用于生成软复位的 API -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
(+) nPORRST 之后的 TMS570 RAM 状态-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
[报价 userid="571459" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1454250/tms570lc4357-noinit-variables-on-ram "]我想将 ram 的一部分用作非易失性存储器、如 EEPROM。可能无法将 RAM 用作非易失性存储器。
——
谢谢、此致、
Jagadish。
尊敬的 Jagadish:
我阅读了您提到的线程。 这个线程解释了不同复位条件下的 RAM 运行方式。 但我的问题并不是完全相关的。 我知道当 PORRST 发生时、我必须正确地初始化或零初始化所有 RAM。
请阅读该主题、了解我尝试执行的操作。
可能无法将 RAM 用作非易失性存储器。
我知道它并不完全是非易失性存储器、我只想使用一些 RAM 变量作为 NOINIT 变量、如我上面提到的线程。
我知道如果发生 PORRST、我不能使用 RAM 变量、但当发生 CPU 复位或软件复位时、我不想初始化变量、如果有用、我想使用它。
我做的完全是我用 tms570ls3137将图像附加到线程上的图。
请再次阅读我的问题,如果你不明白,我可以再次解释。 您能回答我编号的问题(特别是第4个)吗?
您好!
我找到了一个示例项目、该项目可使 RAM 的部分不用于 NOINIT。
(+) TMS570LC4357:复位时没有用于存储复位信息的初始化存储器-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
它经过测试、似乎可以按照他们分享的屏幕截图工作。
请先看一下、然后下载该项目。
——
谢谢、此致、
Jagadish。
您好!
4)什么是 ESM 组3通道8错误?
我认为这不是 ESM 组3通道8错误、因为它被保留了 ESM 通道:
您能否 再次验证 ESMSR3值、因为如果它是0x8、则表示不是第8个通道。
如果值为0x8表示该通道是第3个通道、因为寄存器中的每个位都代表一个来自通道0的通道。
如果错误为通道3则更有意义、因为通道3是不可纠正的 RAM 错误。
这意味着 RAM 和相应 ECC 段中存在的数据不匹配。
2)为什么我关闭电源和 PORRST 按钮时 RAM 的行为不同?
(8) nPORRST 之后的 TMS570 RAM 状态-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
(8) RM57L843:SYSESR 寄存器中的 EXTRST 和 PORST 位-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
我认为断电和 PORRST 在 RAM 上有不同的运行方式影响、正如上面的线程所提到的、即使对于 PORRST 也是 如此、RAM 的内容将不会生效并且只有在真正断电情况下、RAM 将包含垃圾值。
我怀疑由于这种行为、只有我们得到了 ECC 不匹配、这会导致 ESM 组3通道3错误。
——
谢谢、此致、
Jagadish。