Embedded 寻找一个二进制图像布局工具

Embedded 寻找一个二进制图像布局工具,embedded,Embedded,我正在寻找一个工具的建议,它可以让我从一系列较小的图像中构造出一个二进制图像 我有一个带闪存ROM的嵌入式系统,我用一个图像编程。该图像由一系列以特定偏移量放置的较小对象(数据、编译代码等)组成。我继承的构建系统使用了旧的16位DOS实用程序的令人不安的混合体,将映像整合在一起。我希望找到一个现代的工具,以一种不那么神秘(也不那么容易出现bug)的方式完成这项工作 该工具需要能够从配置文件运行。也就是说,我在配置文件中指定文件A.bin需要放置在偏移量4KB处,文件B.bin需要放置在偏移量16

我正在寻找一个工具的建议,它可以让我从一系列较小的图像中构造出一个二进制图像

我有一个带闪存ROM的嵌入式系统,我用一个图像编程。该图像由一系列以特定偏移量放置的较小对象(数据、编译代码等)组成。我继承的构建系统使用了旧的16位DOS实用程序的令人不安的混合体,将映像整合在一起。我希望找到一个现代的工具,以一种不那么神秘(也不那么容易出现bug)的方式完成这项工作

该工具需要能够从配置文件运行。也就是说,我在配置文件中指定文件A.bin需要放置在偏移量4KB处,文件B.bin需要放置在偏移量16KB处,等等,这样工具就不需要重复手动命令行调用。这主要是因为我们有另一个系统将自动生成这些配置文件

该工具还需要是开源的(或者至少是跨平台的)。我们有使用Windows的开发人员和使用Linux的自动构建系统,该工具需要同时在这两个平台上工作

我曾经讨论过如何在C语言中整合我自己的实用程序,但在我经历所有开发和调试的麻烦之前,我想问问是否有人知道我错过的一个工具

编辑:Cygwin相关工具不幸不是我们的选择。如果在安装了Cygwin的系统上运行,我们的一个关键构建工具将崩溃(我认为它使用的是一个特定的、较旧的Cygwin DLL,但这本身就是一个完全不同的失败)。

肯定是您最好的朋友


为windows用户使用cygwin。

我通常自己写,但通过Jack Ganssle的第184期通讯,我发现它几乎可以处理任何类型的二进制图像文件(尽管它的名称远远超过摩托罗拉s记录的格式,包括原始二进制文件)。它可能会为您节省一些时间。

随OKL4分发的Elfweaver实用程序可能适合您。从手册中: “Elfweaver是一种可用于操作ELF文件的工具。Elfweaver是作为Python 2.3应用程序编写的,只使用跨平台库。因此,Elfweaver应在Linux、Mac OS X和Windows上运行。Elfweaver的主要功能是允许用户将多个ELF文件合并到单个ELF文件中。”


如果您认为这看起来合适,您可以从okl4网站上获得该工具以及okl4源代码。

我最初考虑了
dd
,但对于添加到二进制图像中的每个组件,我必须调用
dd
。考虑到我继承的构建系统的性质,一个只需一次调用就可以构建整个ROM映像的工具将是非常可取的。编写一个shell、python、ruby或perl脚本,其中包含多个参数,并反复调用dd?Cygwin来运行dd!?我认为是大锤和螺母的情况!;-)如果你已经安装了Cygwin,我建议;否则使用windows上的dd有很多选项。就这一点而言,编写自己的工具来连接平面二进制文件,并在它们之间留出可能的偏移空间,只需不到半个小时的时间
Srecord
对于这类事情来说是非常有用的工具。我在几个项目中使用过它;比以前用C/C++编写自定义工具要好得多。谢谢你的推荐
Srecord
似乎确实是一个非常灵活的工具。这不是我们所需要的100%,但我应该能够相当容易地添加剩余的功能(比从头开始构建自己的功能要好得多)。当部署多个依赖Cygwin的工具,并在同一台机器上安装工具或DLL的独立不兼容副本时,它经常会中断。这就是为什么我担心在没有健康警告的情况下推荐它。您可能需要的许多实用程序在或中作为本机Win32工具提供,但我仍然建议您在这种情况下使用。请尝试添加与DLL同名的文件,但
。local
已添加到程序所在的文件夹和DLL的(适当的旧版本)副本中。应该有用。