微控制器内部的十六进制文件验证

问题描述

众所周知,十六进制文件是我们应用程序代码的核心,它将被编程到微控制器的闪存中以执行。我的疑问是在执行此十六进制文件之前,它会被微控制器验证还是在所有启动过程完成后立即执行?

解决方法

免责声明:因为我不知道所有的微控制器,所以这不是一个完整的答案。 *

闪烁的二进制可执行文件将被执行。

某些微控制器会在固定地址处检查某个值,以决定是启动内置引导加载程序还是刷新用户程序。

如果需要检查用户程序,则需要自己实施。我曾经使用过这种系统,这很常见,尤其是在与安全相关的环境中。


关于十六进制文件的格式:

Intelhex以及其他类似SREC的格式都是二进制数据的人类可读文本表示形式。使用这些格式的校验和的常见原因是为了确保传输期间的数据一致性,这是在发明格式时通过不可靠的通道完成的。

另一个优点是限制了7位ASCII字符,可以通过旧的Internet协议无损地传输这些字符。

但是,“实际”内容(二进制数据)直接存储在微控制器的闪存中。当要刷新用户程序时,微控制器中的接收软件(例如,引导加载程序)可能会使用校验和。但是闪烁后它们消失了。