0

我正在开发使用 Aurix TC234 的嵌入式设备。我的 (AUTOSAR) 软件在其上运行时需要在启动期间在特定 ROM 地址范围内进行一些检查。

在刷新我的软件十六进制文件期间,未写入必须检查的数据。这意味着必须在我的软件在该设备上闪存之前写入地址范围。

我最坏的情况:有人忘记刷新该地址范围。我的软件已刷新,并且在启动期间访问了该内存。在这种情况下,就会出现陷阱。

我的问题:是否有一种安全的方法来检查特定的 ROM 地址范围是否已写入?有可能处理这样的陷阱吗?

4

2 回答 2

2

经过几次检查,对于 ROM 的 ECC 错误的 TC29X 流,可以如下处理:

  • 启用 SMU 警报
  • 从 SMU 捕获 ISR 中的 ECC 错误
  • 将标志存储在无初始化 RAM 区域中
  • 必须调用 SW 复位(ECC 不退出陷阱)
  • 在下次启动检查标志值

希望此帮助和类似的解决方案将在您的微机上可用。

于 2016-05-23T08:59:34.803 回答
0

我不熟悉 TC234,但如果在任何嵌入式设备上访问未写入的闪存会导致陷阱,我会感到惊讶。写入和未写入闪存之间的唯一区别应该是后者应该全部写入(假设闪存开始擦除)。您应该能够简单地检查您的数据块中的所有字节是否为 0xFF。

如果您的闪存最初没有被擦除,您可以在数据块中添加一个校验字段,可能包含块其余部分的 CRC 值。启动时,对照 CRC 字段检查块内容。

编辑:如果您确实遇到了陷阱,我希望这是由于您的代码使用了块中的数据而没有先验证它,从而导致使用无效索引到数组或错误指针之类的事情。 答案收回。看评论。

于 2016-05-19T19:33:17.360 回答