2010-01-29 74 views
3

我在尋找一個工具的建議,它可以讓我從一系列較小的圖像中構建一個二進制圖像。尋找一個二進制圖像佈局工具

我有一個嵌入式系統的閃存ROM,我編程使用單個圖像。該圖像由一系列放置在特定偏移處的較小對象(數據,編譯代碼等)組成。我繼承的構建系統使用了一個令人不安的混合的舊的16位DOS工具來共同破解圖像。我希望能夠找到一種現代化的工具,能夠以一種不那麼神祕的方式來完成這項工作。

該工具需要能夠從配置文件運行。也就是說,我指定文件A.bin需要放置在偏移量4KB處,文件B.bin需要放置在偏移量16KB等位置,以便該工具不需要重複的手動命令行調用。這主要是因爲我們有另一個系統會自動生成這些配置文件。

該工具還需要是開源的(或者至少是跨平臺的)。我們有使用Windows的開發人員和使用Linux的自動構建系統,而且該工具需要兼顧兩者。

我曾經在C中討論過我自己的實用程序,但在開始和調試之前我經歷了所有的麻煩,我想問一下,看看是否有人知道已經存在的工具,我錯過了。

編輯:不幸的是Cygwin相關的工具不是我們的選擇。我們的一個關鍵構建工具會在安裝了Cygwin的系統上運行時崩潰(我認爲它使用了一個特定的,較舊的cygwin DLL,但它本身就是一個完全不同的失敗)。

+0

當部署多個Cygwin依賴工具並在同一臺計算機上安裝單獨的不兼容的工具或DLL副本時,它經常會中斷。這就是爲什麼我擔心什麼時候建議沒有健康警示。您可能需要的很多實用程序都可以在http://unxutils.sourceforge.net/或http://gnuwin32.sourceforge.net/中用作原生Win32工具,但我仍然建議使用http://srecord.sourceforge .net /在這種情況下。 – Clifford 2010-01-31 14:07:46

+0

嘗試添加與DLL相同名稱的文件,但在程序和(適當的較舊的)DLL副本所在的文件夾中添加'.local'。應該管用。 – 0xC0000022L 2011-11-15 23:01:54

回答

2

我通常寫我自己的,而是通過傑克Ganssle的Embedded Muse通訊第184號我碰到http://srecord.sourceforge.net/來到這將做的只是用幾乎任何類型的二進制圖像文件的任何東西(儘管它的名字它處理的不僅僅是的Motorola S更爲格式 - 記錄,包括原始二進制文件)。它可以爲你節省一些時間。

+0

我會推薦這個建議。 'Srecord'是這類事情的一個非常有用的工具。我用過幾個項目;比之前做的要好得多,那就是在C/C++中編寫一個自定義工具。 – 2010-01-31 02:45:35

+0

感謝您的建議。 Srecord似乎確實是一個非常靈活的工具。它不是我們需要的100%,但我應該能夠相當容易地添加其餘的功能(比從頭開始構建我自己的功能要好得多)。 – bta 2010-02-01 17:12:21

2

dd將是最好的朋友。

對於windows用戶使用cygwin。

+0

我最初考慮過'dd',但是我必須爲添加到二進制映像的每個組件調用一次'dd'。考慮到我繼承的構建系統的性質,使用單一調用構建整個ROM映像的工具將是非常可取的。 – bta 2010-01-29 23:46:12

+1

編寫一個帶有多個參數並重復調用dd的shell,python,ruby或perl腳本? – 2010-01-30 01:20:30

+1

Cygwin只是爲了運行dd!一個大錘和堅果的情況methinks! ;-)只有當你已經安裝了Cygwin時,我才建議;否則請使用http://unxutils.sourceforge.net/ – Clifford 2010-01-30 09:18:11

0

與OKL4一起發佈的Elfweaver實用程序可能適合您。從手冊: 「Elfweaver是一個可用於操作ELF文件的工具,Elfweaver是一款Python 2.3應用程序,僅使用跨平臺庫,因此Elfweaver應該在Linux,Mac-OS X和Windows上運行。 Elfweaver的主要功能是,它允許用戶將多個ELF文件合併成一個單一的ELF文件」 http://wiki.ok-labs.com/downloads/release-3.0/okl4-ref-manual-3.0.pdf

如果你認爲看起來合適,你可以從OKL4網站OKL4源代碼相處的工具。