我正在开发使用 Aurix TC234 的嵌入式设备。我的 (AUTOSAR) 软件在其上运行时需要在启动期间在特定 ROM 地址范围内进行一些检查。
在刷新我的软件十六进制文件期间,未写入必须检查的数据。这意味着必须在我的软件在该设备上闪存之前写入地址范围。
我最坏的情况:有人忘记刷新该地址范围。我的软件已刷新,并且在启动期间访问了该内存。在这种情况下,就会出现陷阱。
我的问题:是否有一种安全的方法来检查特定的 ROM 地址范围是否已写入?有可能处理这样的陷阱吗?
我正在开发使用 Aurix TC234 的嵌入式设备。我的 (AUTOSAR) 软件在其上运行时需要在启动期间在特定 ROM 地址范围内进行一些检查。
在刷新我的软件十六进制文件期间,未写入必须检查的数据。这意味着必须在我的软件在该设备上闪存之前写入地址范围。
我最坏的情况:有人忘记刷新该地址范围。我的软件已刷新,并且在启动期间访问了该内存。在这种情况下,就会出现陷阱。
我的问题:是否有一种安全的方法来检查特定的 ROM 地址范围是否已写入?有可能处理这样的陷阱吗?
经过几次检查,对于 ROM 的 ECC 错误的 TC29X 流,可以如下处理:
希望此帮助和类似的解决方案将在您的微机上可用。
我不熟悉 TC234,但如果在任何嵌入式设备上访问未写入的闪存会导致陷阱,我会感到惊讶。写入和未写入闪存之间的唯一区别应该是后者应该全部写入(假设闪存开始擦除)。您应该能够简单地检查您的数据块中的所有字节是否为 0xFF。
如果您的闪存最初没有被擦除,您可以在数据块中添加一个校验字段,可能包含块其余部分的 CRC 值。启动时,对照 CRC 字段检查块内容。
编辑:如果您确实遇到了陷阱,我希望这是由于您的代码使用了块中的数据而没有先验证它,从而导致使用无效索引到数组或错误指针之类的事情。
答案收回。看评论。