4

我正在寻找一种机制来使用唯一的设备 ID 来操作我的 eeprom 图像。我想在 make 文件中执行此操作,以便设备自动获取新 ID,然后将其更新为数据映像,然后将其刷新。在伪代码中:

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

所以首先我们将一个 id 放入一个单独的文件中,然后我们用这个 ID 文件的内容覆盖图像(从给定的偏移量)。然后闪现。但是第二部分怎么做呢?我查了一下bvi,它似乎有一些脚本能力,但我并没有完全理解它,老实说 vi 总是让我毛骨悚然。

提前感谢您的帮助!

4

3 回答 3

2

如果您知道要替换的文件的偏移量,则可以使用split命令将初始文件拆分到偏移量。cat然后可以使用该命令将所需的部分连接在一起。

处理二进制文件时另一个有用的工具是od它可以让您检查人类可读格式的二进制文件。

于 2012-09-04T11:41:39.450 回答
2

(完全披露:我最初投票关闭作为副本。这个答案改编自引用的问题。)

ddnotrunc选项一起使用:

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

您可能想先在副本上尝试一下,以确保它正常工作。

于 2012-09-04T13:23:46.547 回答
0

我可能会使用类似的东西Perl。请参见此处,特别是标记为更新随机访问文件的部分(此处为示例)

于 2012-09-04T11:35:28.833 回答