怎样将单片机引导程序和APP程序打包成一个固件?

1. 应用背景

       为了使单片机拥有自定义的OTA功能,单片机程序都是有两段或者两段以上的程序组成,其中,负责实现OTA功能的程序叫做BootLoader程序,被升级的程序就是APP程序;

       在量产过程中,为了一次性将BootLoader程序与APP程序烧录到单片机中,需要单片机工程师将BootLoader与APP的固件合并成一个固件;

2. 固件合并的原理

怎样将单片机引导程序和APP程序打包成一个固件?_第1张图片

       主要操作就是将两个文件合并成一个文件,不过要注意的是,因为每段程序都有固定的起始地址,因此注意以下两点:

        1)固件的大小不能超过下一段固件的起始地址;

        2)在BootLoader与APP程序中基本都会存在一些空白区域;

3. JFlash固件合并操作

下载链接:

1)打开JFlash.exe,点击“File” -> “Open data file”,选择第一个固件;

怎样将单片机引导程序和APP程序打包成一个固件?_第2张图片

 2) 输入起始地址,bin格式的固件内部没有保存程序的地址信息,因此,起始地址可以直接输入0;【注:STM32单片机烧录起始地址一般是0x08000000】【注:选取的如果是hex文件不用输入地址,hex文件自带地址管理】

怎样将单片机引导程序和APP程序打包成一个固件?_第3张图片

 3)继续点击“File” -> “Merage data file”,选择第二个固件后,会继续弹出填写地址的对话框,这里需要填的地址 = 第二个固件的偏移量 ,然后点击“OK”即可;【注:选取的如果是hex文件不用输入地址,hex文件自带地址管理】

怎样将单片机引导程序和APP程序打包成一个固件?_第4张图片

4)最后点击“File” -> “Save data file as ...”,保存为新的固件文件;

怎样将单片机引导程序和APP程序打包成一个固件?_第5张图片

 注:下图中的蓝色边框内就是两段固件间的空白区域,合并得到的新固件中该区域的信息被0xFF填充

怎样将单片机引导程序和APP程序打包成一个固件?_第6张图片

 

你可能感兴趣的:(单片机,嵌入式硬件)