在可执行文件中添加代码的哈希值
Add the hash of the code in executable file
我有一个使用两个内存块的 STM32 应用程序。在第 0 个块中,我有一个引导代码(在开机后 运行s),在第 7 个块中,我有一个应用程序代码(可能 运行 取决于给定的授权决定通过启动代码)。
这两个代码是由两个独立的项目开发的。它们使用 openocd 工具通过给定 offset openocd 的 write_image 命令的值。
我基本上想在启动代码中做的是计算应用程序代码的哈希值并将其与参考摘要进行比较。如果它们相等,我将把手交给应用程序代码。为此,在生成应用程序代码的可执行文件(可以是 elf、hex 或 bin 格式)后,我想:
- 创建另一个大小为 128K 字节的文件(以上列出的任何格式)
- 将可执行文件的内容从开头(0 偏移量)复制到最近创建的文件中
- 将可执行文件的哈希写入最近创建的文件的最后 32 个字节
- 用 0xFF 填补空白
- 最后把这个可执行文件(如果还在的话)烧写到内存的第7块
您认为可行、可行吗?如果是:
- 我应该使用哪种格式来生成可执行文件?
- 我需要特别注意什么才能实现这一目标吗?
最后,您认为这样做是否有意义,或者是否有其他更标准的方法可以达到此目的?
非常感谢。
您只需要在构建序列中添加一个额外的步骤。链接后从 elf 中提取二进制文件
然后用你最喜欢的编程语言编写一个程序,它会计算一些东西并将结果附加到那个 bin 文件
我有一个使用两个内存块的 STM32 应用程序。在第 0 个块中,我有一个引导代码(在开机后 运行s),在第 7 个块中,我有一个应用程序代码(可能 运行 取决于给定的授权决定通过启动代码)。
这两个代码是由两个独立的项目开发的。它们使用 openocd 工具通过给定 offset openocd 的 write_image 命令的值。
我基本上想在启动代码中做的是计算应用程序代码的哈希值并将其与参考摘要进行比较。如果它们相等,我将把手交给应用程序代码。为此,在生成应用程序代码的可执行文件(可以是 elf、hex 或 bin 格式)后,我想:
- 创建另一个大小为 128K 字节的文件(以上列出的任何格式)
- 将可执行文件的内容从开头(0 偏移量)复制到最近创建的文件中
- 将可执行文件的哈希写入最近创建的文件的最后 32 个字节
- 用 0xFF 填补空白
- 最后把这个可执行文件(如果还在的话)烧写到内存的第7块
您认为可行、可行吗?如果是:
- 我应该使用哪种格式来生成可执行文件?
- 我需要特别注意什么才能实现这一目标吗?
最后,您认为这样做是否有意义,或者是否有其他更标准的方法可以达到此目的?
非常感谢。
您只需要在构建序列中添加一个额外的步骤。链接后从 elf 中提取二进制文件 然后用你最喜欢的编程语言编写一个程序,它会计算一些东西并将结果附加到那个 bin 文件