直接上图上代码(代码在结尾),有不会用的可以留言:
第一步:工程介绍,关键点--- 1.bat文件放所在app和boot工程的同级目录下 2.release为运行bat自动生成文件夹
第二步:合版.bat 针对具体项目需要修改的变量如下图, apppath 、bootpath、size
第三步:双击bat,运行如下图,显示merge success说明成功,按任意键弹出release窗口的发行版bin可以交给生产烧录了!
源代码:
1 :: XX公司 XX设备 合版bin 2 :: creater: 第一puck time: 20170909 3 :: 该文件需要放在工程文件夹相同目录下 4 5 :: 开/关显示cli信息 6 @echo off 7 echo ***************** XX工程项目 ***************** 8 9 :: CMD标题 10 title XX有限公司合版bin工具 11 12 :: 创建目标文件夹release,并清空 13 mkdir "%~dp0release" 14 del %~dp0\release\*.bin 15 16 ::变量声明 17 set apppath="%~dp0XX - APP -V1.00\EWARM\rtos\Exe\XX_APP_V1.00.bin" 18 set bootpath="%~dp0XX- BOOT\EWARM\DEMO\Exe\XX_BOOT_V1.00.bin" 19 set merge="%~dp0release\XX_APP_BOOT_V1.bin" 20 21 22 :: 准备boot文件 空bin文件撑开不需要写部分,size取决于app在flash起始地址之前的空间大小 23 for %%a in (%bootpath%) do set /a size=128*1024-%%~za 24 fsutil file createnew temp.bin %size% 25 copy /b %bootpath% + temp.bin boot.bin 26 27 :: 生成合版文件 28 copy /b boot.bin + %apppath% %merge% 29 30 :: 删除临时文件 31 del temp.bin 32 del boot.bin 33 34 :: 执行成功与否 35 if exist %merge% (goto success) else goto failure 36 37 38 :success 39 echo *************** Merger success! ***************** 40 Pause 41 start "" "%~dp0release\" 42 exit 43 :failure 44 echo **************** Merger failure! **************** 45 Pause 46 exit
注:网上合并bin的工具比如UBIN原理都差不多,撑开部分都是00(bat暂时我没找到方法写入FF,需要调用其他插件就不方便了),我拿J-LINK ARM合并的bin和上述合并的bin用beyondcompare比较了下唯一区别就是撑开部分是00和ff区别,一般情况不会有影响(flash写入前都会先擦除00->FF)。