【发布时间】:2017-06-20 13:38:58
【问题描述】:
我有一个带有闪存的嵌入式系统。程序存储在闪存中。我有一个函数可以计算存储我的非易失性代码的闪存的 .text 部分的校验和。我想将计算的校验和与在编译时存储在闪存中的固定值和已知值进行比较。我在链接器中创建了一个新的闪存部分。我想用 0xABCD 填充它,这是校验和。我怎样才能在链接器中做到这一点?编译器是GCC
【问题讨论】:
-
那么,你真的需要在链接时比较校验和吗?如果它们不匹配会发生什么?
-
这听起来像是你要为引导加载程序而不是链接器添加一些检查,因为后者与引导目标系统无关。
-
受控系统故障。基本上不启动向用户抛出消息。 - 什么系统?哪个用户?链接发生在主机上,而不是嵌入式系统上。
-
顺便问一下什么样的校验和?纯内存故障校验和?或者加密校验和作为防篡改的一部分?像 CRC 这样的简单校验和允许设置闪存,以便校验和始终为 0(或任何其他选择的常数)。然后验证它可以被硬编码,而不需要从任何地方读取校验和。
标签: c linker embedded checksum