在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一个文件,方便烧写和生产。
超好用的一个工具,可以实现两个二进制bin文件的合并,任一指定偏移量合并。使用它可以直接将编译好的两个bin文件按照程序员需要合并,而不需费力去重建工程重新编译。有兴趣的朋友可以试试。
方法:
首先简单介绍一下STM32的IAP。IAP(In-application-programming),即在应用中编程。有了它,产品发布之后,仍然可 以方便的升级固件,而不需要拆机并用JTAG等方式更新程序。IAP系统的固件一般有两部分组成,IAP BootLoader Code和Application Code,如下图所示。
系统启动时,首先运行IAP BootLoader Code,并检测相应状态,判断是执行升级的流程还是直接运行本地的Application Code。 一般来说,BootLoader和Application是分别编译的,会生成两个二进制文件。在工厂生产时,如果分别烧写这两个文件,显然有些麻烦。这 时,我们就可以将两个BIN文件合并成一个,直接烧写。假设Application Code的偏移地址为0x1000,IAP固件在Flash中的分布如下图所示。
下面介绍第一种方法,使用二进制文件合并工具(UBIN.exe),这个小工具是以前在S3C2410上开发uCOS时做的,功能比较简单,满足一般的需求。
首先,添加第一个文件1.bin,其地址为0x0000,所以,偏移量设置为0x00000000,设置完偏移量后点击“添加”按钮。
然后添加第二个文件,偏移量根据需要设置为0x00001000,如下图所示。
设置目标文件为C:\dst.bin,然后点击“合并”按钮。
正常情况下,会成功生成目标文件,并有如下图所示的提示信息。
这种方法相对比较灵活,对合并文件的个数和偏移地址没有限制。缺点是不支持配置文件,不能保存所设的配置,所以,每次合并都得手动做很多重复工作。在调试阶段会比较浪费时间。
下面介绍一种通过命令行工具合并两个文件的方法。该方法需要用到fsutil.exe、cat.exe和hbin.exe。写一个批处理文件,分别调用这三个工具,最终将1.bin和2.bin合并成dest.bin。批处理文件的内容如下:
fsutil file createnew dest.bin 4096
cat 2.bin >>dest.bin
hbin 1.bin dest.bin
批处理文件各行的简单说明,
- del dest.bin,删除原来的目标文件
- fsutil file createnew dest.bin 4096,创建一个大小为4096字节的空白文件dest.bin,该值的大小由偏移地址0x1000决定
- cat 2.bin >>dest.bin,将2.bin追加到空白文件dest.bin之后
- hbin 1.bin dest.bin,将1.bin放到dest.bin的头上,填充dest.bin头上4KB的空白
dest.bin就是我们最终需要的合并完成的文件。将它与第一种方法合并的文件dst.bin对比一下,如下。
可以看到两种方法合并出的文件,完全一样。
第二种方法的好处在于,可以在集成开发环境中设置编译选项,在编译完成之后自动执行该批处理,这样,编译完成后即得到能够直接固化到Flash中的二进制文件,节省了一些时间。





























大小: 28.4M

大小: 94.9M
PDF文件转换成Word(Solid Converter PDF)10.0.9341.3476 中文特别版
Restorator 2009V1807Bulid绿色中文免费版
汉王PDF转Wordv8.1简体中文版
得力PDF转WORDv1.8.6.6 官方免费版
福昕PDF转Word转换器4.0.0.1211官方免费版
PDF修改器2.5.2.0 绿色免费版
Flash转换工具Magic Swf2Avi2008 汉化特别版
Excel文件修复工具(GetData Repair My Excel)v1.1.0.71 英文破解版
DocTranslate(翻译Doc和Ppt文档的语言)V1.1.0.2英文绿色版
扬帆绿色软件制作工具那片叶子最终版
Cogniview PDF2XL Enterprise(把pdf转换excel工具)v4.6.0.179英文绿色特别版
Abdio PDF Converter Pro(转换文件格式到PDF)V6.1英文安装版
用友U8科目错误修正工具V1.0绿色版
AJC Grep(文件搜索替换、数据提取)V1.3.4绿色英文特别版
RecycleBinExV1.0.5.530 汉化绿色版
AJC Diffv1.91英文绿色特别版