【问题标题】:Include binary file as array of constants包含二进制文件作为常量数组
【发布时间】:2016-02-03 19:42:51
【问题描述】:

我有一个使用 Eclipse 编译的嵌入式 C 项目。 我需要将二进制文件作为常量数组读入应用程序代码。

此二进制文件约为 200kB,需要成为应用程序代码的一部分,以便应用程序代码可以随时读取二进制映像并将其加载到板上需要此初始化映像的另一个设备中。

我通常会将映像加载到板上的非易失性存储器中,然后读取并移动它,但这在这里不可行,它必须是可执行映像的一部分。

我可以在 makefile 中通过将 .bin 文件链接到某个地址来执行此操作,或者在 C 代码中类似

const char binFileImage [] = { file.bin };

这显然行不通,但我还没有想出可行的语法。

仅供参考,file.bin 确实是一个二进制文件。

关于如何做到这一点的任何想法?

【问题讨论】:

标签: c file binary include


【解决方案1】:

使用链接描述文件将二进制文件放在特定地址可能是最好和最简单的解决方案。

其他解决方案包括使用 makefile 调用的某些程序将文件转换为包含有效数组定义的源文件。例如,假设文件以值0x230x050xb30x8f 开头,那么自动生成的源文件可能类似于

const uint8_t binary_file_data[] = {
    0x23, 0x05, 0xb3, 0x8f, ...
};

【讨论】:

  • 嗨,我知道你打算用这个去哪里,但是如果我看一下我看到的瓷砖
  • ff ff ff eb ff ... not 0xff 0xff -- 我需要一个应用程序来进行转换,我不知道有一个程序可以很好地完成转换,我希望这样做它是动态的,因为 .bin 文件可能会改变
  • @user2969503 自己写。除此之外,您还可以使用 binutils 中的 objcopy 来执行此操作。
  • 在 Linux 上:ld -r -b binary -o binary.o binary.file。见stackoverflow.com/questions/22455274/…
猜你喜欢
  • 2018-05-16
  • 1970-01-01
  • 2016-03-03
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
相关资源
最近更新 更多