合并BIN文件的两种方法

      在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一个文件,方便烧写和生产。下面结合STM32的IAP Bootloader Code和Application Code的合并,介绍两种合并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。批处理文件的内容如下:

del 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中的二进制文件,节省了一些时间。

       文中介绍的相关工具的下载地址:http://files.cnblogs.com/we-hjb/HEBING.rar

时间: 2024-09-19 01:40:21

合并BIN文件的两种方法的相关文章

合并HEX文件的一种方法

      <合并BIN文件的两种方法>介绍了如何合并BIN文件,在这个基础之上再配合hex2bin.exe和bin2hex.exe这两个小工具就可以很方便的将两个HEX文件合并成一个了.当然,最终目标是在编译完成之后,自动完成所有转换的工作.而这需要在Keil MDK中配置一下编译选项,如下图所示.       在编译完成之后,分别执行两个批处理.先将生成的hex文件转换为bin文件,然后将IAP和Main App的bin文件合并之后,再转换为hex文件.如下图所示.       可以看到,

Flash文件嵌入音频文件的两种方法

核心提示:本文介绍在flash文档中嵌入音频文件的两种方法,使其可以在Flash player中正常播放. 本文介绍在flash文档中嵌入音频文件的两种方法,使其可以在Flash player中正常播放. 1.建立 Sound 对象用 load() 方法加载外部的 MP3 来播放; 2.让 Sound 对象监听 sampleData 事件,这样可以播放由程序动态生成的声音,例如: 下面的示例播放简单的正弦波. 以下是引用片段: var mySound:Sound = new Sound(); f

解析PHP实现下载文件的两种方法

本篇文章是对使用PHP实现下载文件的两种方法进行了详细的分析介绍,需要的朋友参考下   方法一: 复制代码 代码如下:  header('Content-Description: File Transfer');  header('Content-Type: application/octet-stream');  header('Content-Disposition: attachment; filename='.basename($filepath));  header('Content-

win7系统如何打开csv文件|win7系统打开csv文件的两种方法

  win7系统如何打开csv文件|win7系统打开csv文件的两种方法.最近很多网友询问小编win7系统如何打开csv文件?csv文件是什么?CSV格式文件(逗号分隔值)是一种用来存储数据的纯文本文件,通常都是用于存放电子表格或数据的一种文件格式.那么win7系统如何打开csv文件?下面和大家分享下几种常用的CSV文件打开方法. 方法一:用写字板打开csv文件 1.不用任何软件,使用电脑中的写字板来打开csv文件.在电脑桌面,点击左下方的"开始",点击所有程序--附件--写字板; 2

不用安装软件查看docx文件的两种方法

  docx是Microsoft Word 2007-2010文档的扩展名.若是97-2003版本的Word没有安装兼容包是无法打开docx文件的.为了能够正常打开文档,我们不得不去下载兼容安装包或者安装高版本的微软Office软件.但是有的用户更喜欢使用旧版本,不愿意再安装新的软件.那么有没有不需安装软件就能打开docx文件的方法呢?答案是有的,接下来系统城小编和大家分享的是不用安装软件就能查看docx文件的两种方法. 方法一:使用QQ邮箱在线查看docx文件 1.打开QQ邮箱,点击写信(可写

动态加载JavaScript文件的两种方法_javascript技巧

这篇文章主要为大家详细介绍了动态加载JavaScript文件的两种方法,感兴趣的小伙伴们可以参考一下 第一种便是利用ajax方式,把script文件代码从背景加载到前台,而后对加载到的内容经过eval()实施代码.第二种是,动静创建一个script标签,配置其src属性,经过把script标签插入到页面head来加载js,相当于正在head中写了一个<script src="..."></script>,只可是这个script标签是用js动静创建的 比喻说是我们

php原生导出excel文件的两种方法(推荐)_php实例

第一种方法: $filename='文件名称'; $filetitle='你的标题'; if($_POST){ set_time_limit(10000): $title = ''; ini_set('memory_limit','300M'); header('Content-Type: application/vnd.ms-excel;charset=utf-8'); $name = $title.".xls"; header('Content-Disposition: attac

php原生导出excel文件的两种方法(推荐)

第一种方法: $filename='文件名称'; $filetitle='你的标题'; if($_POST){ set_time_limit(10000): $title = ''; ini_set('memory_limit','300M'); header('Content-Type: application/vnd.ms-excel;charset=utf-8'); $name = $title.".xls"; header('Content-Disposition: attac

JSP实现上传文件的两种方法

js|上传 在用Java开发企业器系统的使用,特别是涉及到与办公相关的软件开发的时候,文件的上传是客户经常要提到的要求.因此有 一套很好文件上传的解决办法也能方便大家在这一块的开发. 首先申明,该文章是为了自己记录一备以后开发需要的时候,不用手忙脚乱哈哈........ 现在在国内用的非常多的一般是两种方法解决来解决文件上传. cos.jar + uploadbean.jar + filemover.jar 这个是用的非常普遍的,原因是因为他操作方便,是我们不必再去关注,那些文件的输入和输出流,