我正在使用LEON2处理器(Sparc V8)开发一个项目。
该处理器使用8MB的RAM,在我的引导自检中需要进行一致性检查。
问题在于,我的引导程序显然会使用部分RAM用于其Heap/BSS/Stack,如果我修改这些部分,应用程序就会崩溃。
我的RAM测试非常简单,将特定值写入所有RAM地址,然后读取它们以确保RAM芯片可以被寻址。
虽然这种方式可以用于大部分RAM,但我如何安全地检查剩余RAM的一致性呢?
如果您在 C 运行时环境启动之前进行测试,可以毫无问题地破坏堆和 BSS 区域。
通常情况下,在运行时设置期间堆栈不会被大量使用,因此您可能能够毫无影响地破坏它。只需检查您的系统即可。
如果您需要在测试期间使用堆栈或需要保留它,请将其移动到已经测试过的区域并调整堆栈指针。之后只需恢复旧堆栈并继续即可。
一旦进入运行时环境,就没有简单的方法来做到这一点。