直接上圖上代碼(代碼在結尾),有不會用的可以留言:
第一步:工程介紹,關鍵點--- 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)。