主要總結(jié)下使用 SEGGER 工具集的 JFLASH 軟件實現(xiàn)hex/bin
文件合并以及程序的自動下載使用方法。
起因是最近使用到LVGL字庫文件的制作,每次都要將分散的bin文件按既定分配的偏移作合并處理,剛開始使用的是二進制文件合并工具,文件少的時候還行,但是文件一多,一個個的添加就很麻煩,雖說它配套工具集里面有可以使用bat
處理合并,但是文檔資料太少,不知如何使用,就放棄了未作深究。
由于之前有看到文章說 JFLASH 軟件可以使用命令行操作,就做了一定了解,且里面本身就有merge
合并功能,搭配bat
處理可以實現(xiàn)一鍵式合并/下載,一下子就提高了工作效率。
1.文件自動合并
以各類字體庫文件為例,創(chuàng)建bat批處理將其打包為一個bin文件,如圖:
- 創(chuàng)建的
lv_font_merge.bat
文件內(nèi)容:
::1.首先建立一個jflash工程
::2.編輯bat腳本內(nèi)容
:: 先刪除已有的合并文件
del lv_fontlib.bin
:: 設(shè)置創(chuàng)建的JFLASH工程的路徑(創(chuàng)建時,芯片選項隨便定義一個就行,無所謂的)
set jflash_project="C:\Users\DELL\Desktop\bin_files\merge.jflash"
:: 設(shè)置JFLASH.exe程序路徑
set path="C:\Program Files\SEGGER\JLink\JFlash.exe"
:: openprj 打開一個JLFLASH工程
:: open 打開一個文件
:: merge打開要合并的文件
:: saveas保存合并文件
:: ^是續(xù)行符;注意 openprj/open/merge/saveas 命令后面緊接工程/文件名,沒有空格的!!!,但是每條命令之間是由空格的。
:: -openprj<jflash_project>
:: -open<file>,[flash_saddr],[]是可選項
:: -merge<file>,[flash_saddr],[]是可選項
:: -saveas<file>,[flash_saddr-flash_eaddr] ,[]是可選項
%path% -openprj%jflash_project% ^
-openlv_font_Alibaba_PuHuiTi_B12.bin,0x100000 ^
-mergelv_font_Alibaba_PuHuiTi_B15.bin,0x14B000 ^
-mergelv_font_Alibaba_PuHuiTi_B18.bin,0x19B000 ^
-mergelv_font_Alibaba_PuHuiTi_B22.bin,0x1F0000 ^
-mergelv_font_Alibaba_PuHuiTi_M15.bin,0x24A000 ^
-mergelv_font_Alibaba_PuHuiTi_M18.bin,0x29A000 ^
-mergelv_font_Alibaba_PuHuiTi_M22.bin,0x2EF000 ^
-mergelv_font_Alibaba_PuHuiTi_M40.bin,0x349000 ^
-mergelv_font_Alibaba_PuHuiTi_R12.bin,0x3D5000 ^
-mergelv_font_Alibaba_PuHuiTi_R15.bin,0x420000 ^
-saveaslv_fontlib.bin^
-exit
::退出
exit
假如我有兩個由批處理文件執(zhí)行生成的bin文件需要再進一步執(zhí)行合并,如下是要生成另一個bin文件:
- 創(chuàng)建的
pixel_font_merge.bat
文件內(nèi)容:
del pixel_fontlib.bin
set jflash_project="C:\Users\DELL\Desktop\bin_files\merge.jflash"
set path="C:\Program Files\SEGGER\JLink\JFlash.exe"
%path% -openprj%jflash_project% ^
-openpixel_photo_bmp.bin,0x00000000 ^
-mergepixel_font_alipht_R16.bin,0x00000400 ^
-mergepixel_font_alipht_M18.bin,0x00005400 ^
-mergepixel_font_alipht_M24.bin,0x0000A400 ^
-mergepixel_font_alipht_B20.bin,0x00012400 ^
-saveaspixel_fontlib.bin ^
-exit
exit
然后我需要將兩個上面的介紹的兩個bin文件(lv_fontlib
&& pixel_fontlib
)再合并一個最終的bin文件fontlib.bin
。
- 創(chuàng)建
font_merge.bat
文件,內(nèi)容如下:
del fontlib.bin
set jflash_project="C:\Users\DELL\Desktop\bin_files\merge.jflash"
set path="C:\Program Files\SEGGER\JLink\JFlash.exe"
set lvgl_fontlib="C:\Users\DELL\Desktop\bin_files\v1.5\lvgl_font_bin\lv_fontlib.bin"
set pixel_fontlib="C:\Users\DELL\Desktop\bin_files\v1.5\pixel_font_bin\pixel_fontlib.bin"
%path% -openprj%jflash_project% ^
-open%pixel_fontlib%,0x000000 ^
-merge%lvgl_fontlib%,0x100000 ^
-saveasfontlib.bin ^
-exit
exit
但是每一個bin文件的創(chuàng)建都要去手動一下,還是有點麻煩,能否再建立一個bat文件去執(zhí)行上面三個bat文件呢,這樣就執(zhí)行一個bat文件完成最終的合并任務(wù),下面就是創(chuàng)建現(xiàn)實一鍵合并所有的onekey_merge.bat
內(nèi)容:
::cmd /k "cd /d 路徑&&命令"
del font_lib.bin
echo "執(zhí)行點陣字庫合并命令"
start cmd /k "cd /d C:\Users\DELL\Desktop\bin_files\v1.5\pixel_font_bin&&pixel_font_merge.bat"
echo "LCD字庫合并命令"
:: 由于文件的創(chuàng)建過程中JFLASH軟件打開需要一定時間,為保證創(chuàng)建成功,添加延時1sec
timeout /t 1 >nul
start cmd /k "cd /d C:\Users\DELL\Desktop\bin_files\v1.5\lvgl_font_bin&&lv_font_merge.bat"
timeout /t 1 >nul
echo "執(zhí)行點陣字庫與LCD字庫合并命令"
start cmd /k "cd /d C:\Users\DELL\Desktop\bin_files\v1.5&&font_merge.bat"
:: exit
這樣就可每次執(zhí)行onekey_merge.bat
文件就可以輕松搞定所有步驟,省時省力。文章來源:http://www.zghlxwxcb.cn/news/detail-811951.html
2. 文件合并及自動下載
例如下面案例實現(xiàn)bootloader+app
合并,然后自動下載(要先保證JLINK硬件已經(jīng)跟目標MCU連接上)。文章來源地址http://www.zghlxwxcb.cn/news/detail-811951.html
- 創(chuàng)建的
auto_download.bat
文件內(nèi)容
::首先建立一個jflash工程(下載就需要創(chuàng)建的JFLASH工程選擇目標MCU型號)
::bat腳本內(nèi)容
set jflash_project="C:\Users\DELL\Desktop\firmware_lbcu30\stm32f103.jflash"
set path="C:\Program Files\SEGGER\JLink\JFlash.exe"
del LBCU30.bin
::auto :即自動實現(xiàn)connect/erase/progama/varify動作
%path% -openprj%jflash_project% -openSTM32F103VC_BOOT.hex,0x08000000 -mergebal_1260.bin,0x08004000 -saveasLBCU30.bin -openLBCU30.bin,0x08000000 -auto -exit
exit
到了這里,關(guān)于使用JFLASH實現(xiàn)文件程序自動化合并及下載功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!