嵌入式:访问未写入的ROM地址内容

时间:2016-05-19 17:37:41

标签: memory embedded access-violation flash-memory autosar

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

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

我最糟糕的情况: 有人忘了闪烁那个地址范围。我的软件闪烁,在启动期间访问内存。 在那种情况下发生陷阱。

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

2 个答案:

答案 0 :(得分:2)

经过几次检查后,对于带有ECC错误的TC29X流程,ROM的处理方式如下:

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

希望您的微观提供此帮助和类似解决方案。

答案 1 :(得分:0)

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

如果您可能拥有最初未擦除的闪存,则可以向数据块添加一个检查字段,可能包含该块其余部分的CRC值。启动时,根据CRC字段检查块内容。

编辑:如果你确实遇到了陷阱,我希望这是因为你的代码使用了块中的数据而没有先验证它,导致使用无效索引一个数组或一个坏指针。 回答缩回。见评论。