工具/软件:
你(们)好 我们与您的团队讨论了这个问题。 Ryan Taylor 想让我把信息放到这个论坛上。
第一封电子邮件:
我们使用贵公司的 AM3356处理器与 IAR 8.4编译器相结合。
我们遇到处理器问题。
我们将在最高优先级中断时对器件运行内存测试、存储器大小为128MB。
以下是我们在内存测试中所做的操作:
- 复制16 * 4字节的数据以将其保存到临时缓冲区中。
- 发出_mcr (15、0、 reinterpret_cast (Ext_Ram_Test_Address)、7、14、1)以清除数据缓存并使其失效
- 然后、器件将测试模式 A5A5A5A5写入 RAM。 我们一次测试4个字节。 此步骤将运行16次。
- 然后我们测试不同的模式。 器件将将测试模式:5A5A5A5A 写入 RAM。 我们一次测试4个字节。 此步骤将运行16次。
- 发出_mcr (15、0、 reinterpret_cast (Ext_Ram_Test_Address)、7、14、1)以清除数据缓存并使其失效
- 存储步骤1中的数据并写回 RAM。
- 发出_mcr (15、0、 reinterpret_cast (Ext_Ram_Test_Address)、7、14、1)以清除数据缓存并使其失效
一段时间(运行几周后)、我们会看到 RAM 存储器损坏、 在某些存储器位置留下的值为‘A5’。
您是否知道可能导致此类行为的任何勘误表或类似处理器相关问题?
第二封电子邮件:然后泰勒问了一些问题。 这就是回应。
感谢您在此处进行 ping 操作—您能帮助我了解以下内容吗? :
看起来问题与外部 DRAM 有关—您使用什么 DRAM? ISSI 的 IS46TR16640CL-125JBLA2-TR
为什么您认为存储器位置卡在该值会成为 AM3356中的问题、而不是 DRAM 芯片中的问题? 我认为这不是 AM3356或 DRAM 的硬件问题。 我相信我们滥用了处理器。
我们正在寻求 TI 的一些建议来解决该问题。
第三封电子邮件:
此测试是否与其他测试同时定期运行? 测试在中断时运行。 该测试每256ms 运行一次。
什么是操作系统? TheadX 是我们的操作系统。
您正在使用的 SW 缓存一致性管理命令—它们是否来自 IAR 编译器?
在测试中、我们使用以下命令:__mcr (15、0、 reinterpret_cast (Ext_Ram_Test_Address)、7、14、1);这是为了清除缓存并使其失效。
您能附上代码吗?
我不确定是否允许我附加代码。 讨论结束后、我复制了一行代码来回答前一个问题、如果您仍然需要代码、我会询问是否允许这样做。
例如、您是否设置障碍以确保软件缓存管理操作完成? 除了我在上面发布的"清除和失效"命令之外、我们在此 RAM 测试中没有使用任何障碍。
几周内的成功测试意味着多少? 即、128MB 的测试频率是多少? RAM 测试继续以256ms 的速率运行。 每256ms、器件测试64个字节。 对于在几周内运行测试以损坏内存意味着内存损坏是随机发生的。
最后一封电子邮件:
Ryan:
您有任何更新吗? 此外、如果我们使用_mcr (15、0、 reinterpret_cast ( Ext_Ram_Test_Address ), 7, 14, 1)为了清除和使数据缓存无效,我们是否应该在其周围添加屏障操作以防止数据和指令不同步?
谢谢