2012-09-04 56 views
4

我正在尋找一種機制來操縱我的eeprom圖像與唯一的設備ID。我想在make文件中這樣做,以便設備自動獲得一個新的ID,然後將其更新到數據映像,然後將其刷新。在僞代碼:腳本命令來操縱二進制文件(在Linux上)

wget http://my.centralized.uid.service/new >new.id 
binedit binary.image -write 0xE6 new.id 
flash binary.image into device 

所以首先我們得到一個ID到一個單獨的文件,然後我們覆蓋映像(自定的偏移量),與此ID文件的內容。然後閃光。但如何做第二部分?我擡起頭,看起來有一些腳本功能,但我沒有完全理解它,老實說,vi總是給我一些毛骨悚然的東西。

感謝您的幫助!

+0

可能重複[Bash腳本:如何修補文件? (在一個給定的文件位置寫一個給定的字符串)](http://stackoverflow.com/questions/5196096/bash-scripting-how-to-patch-files-write-a-given-string-in-a -given-position-of) – chepner

回答

2

(全面披露:我做了初步投票關閉爲重複這個答案是從引用的問題改編。)

使用ddnotrunc選項:

offset=$((0xe6)) 
length=$(wc -c < new.id) 
dd bs=1 if=new.id of=binary.image count=$length seek=$offset conv=notrunc 

您可能希望首先在一個拷貝上試試這個,只是爲了確保它能正常工作。

+0

你是對的,是重複的。我沒有在原始關鍵字搜索中加入「修補」。答案正是我所追求的。謝謝! –

0

我也許會用Perl之類的東西。見here特別是部分標記更新一個隨機訪問文件(例如here

2

如果你知道你想從替換文件的偏移量,你可以使用split命令分割初始文件直到抵消。然後可以使用cat命令將所需的部分連接在一起。

使用二進制文件時另一個有用的工具是od這將允許您檢查二進制文件的可讀格式。

+0

毫米,拆分/貓解決方案是相當創新的,從來沒有想到這一點。 –

相關問題