在可执行文件中添加代码的哈希

时间:2018-08-24 12:39:24

标签: stm32 flash-memory

我有一个使用两个内存块的STM32应用程序。在第0个块中,我有一个引导代码(在开机后立即运行),在第7个块中,我有一个应用程序代码(根据启动代码给出的授权决定,它可能会或可能不会运行)。

因此,这两个代码是由两个单独的项目生成的。通过使用 openocd 工具,通过为openocd的<< em> write_image 命令。

我基本上想在启动代码中做的是,我想计算应用程序代码的哈希值,并将其与参考摘要进行比较。如果它们相等,我将介绍应用程序代码。为此,在生成应用程序代码的可执行文件(可以是elf,hex或bin格式)之后,我想:

  • 创建另一个文件(上面列出的任何格式),文件大小为128K字节
  • 将可执行文件的内容从其开头(偏移量为0)复制到最近创建的文件中
  • 将可执行文件的哈希值写入最近创建的文件的最后32个字节
  • 用0xFF填充间隙
  • 最后将此可执行文件(如果仍然存在)刷新到内存的第7个块

您认为它可行且可行吗?如果是这样:

  • 我应使用哪种格式生成可执行文件?
  • 要实现这一目标,我需要特别注意吗?

最后,您认为这样做是有意义的,还是为此目的还有其他更标准的方法吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您只需要在构建顺序中增加一个步骤即可。链接后,从elf提取二进制文件 然后用您喜欢的编程语言编写一个程序,该程序将计算出一些内容并将结果附加到该bin文件中