不用工具,合并 bootloader 和 APP 文件就是這么簡單!
只要你經(jīng)歷過稍微復(fù)雜一點(diǎn)的項(xiàng)目,一般都會(huì)要求 BOOT 和 APP 兩個(gè)程序,即是為了方便客戶功能升級(jí),也是為了咱自己解 BUG,所謂好處多多。
剛畢業(yè)那年,魚鷹接手的項(xiàng)目中就需要 BootLoader,為此,魚鷹寫了幾篇相關(guān)的筆記《固件升級(jí)經(jīng)驗(yàn)總結(jié)》《STM32固件升級(jí)之基礎(chǔ)知識(shí)(一)》(關(guān)注公眾號(hào),菜單欄中有合集,或點(diǎn)擊藍(lán)色字體查看)。
這里面介紹的升級(jí)知識(shí)不管對(duì)初學(xué)者還是有經(jīng)驗(yàn)的道友來說,都有一定的參考價(jià)值。特別是里面對(duì)一些特殊要求的處理,更有巧妙的設(shè)計(jì)(比如最后才更新 APP 前 8 個(gè)字節(jié),比如傳參等問題)。
今天魚鷹繼續(xù)介紹如何合并 BOOT 和 APP 兩個(gè)程序,方便一次下載。
在網(wǎng)上,有各種各樣的合并方法,有通過 J-flash 工具的,有通過寫入單片機(jī)再讀回來的,有自己寫合并程序的,或者魚鷹介紹的專業(yè)工具 《功能強(qiáng)大的 HEX 開源轉(zhuǎn)換工具,你值得擁有》,可謂八仙過海,各顯神通。
以上方法大部分方法都要使用工具,或者過程繁瑣。那么有沒有一種快速、簡單、方便的不需要借助工具的合并方法呢?當(dāng)然有了。
今天魚鷹就介紹這個(gè)史上最簡單的方法(這可是老工程師傳授的技巧):
手工法
1、復(fù)制bootlaoder 的 HEX 文件后用記事本打開;
2、刪除最后一行(一般是 :00000001FF);
3、打開 APP 的HEX 文件;
4、復(fù)制所有 APP 文件的內(nèi)容,粘貼到第二步文件修改后的 Boot 文件末尾。
5、保存修改后的 boot 文件,這個(gè)就是合并后的文件了。
搞定?。]有借助任何工具(記事本算不?),在沒有工具的情況下,最快的解決方案?。。?/p>
自動(dòng)法
既然只是對(duì)文件的刪除、追加操作,我們完全可以用腳本代替,所以魚鷹寫了一個(gè)非常非常簡單的腳本,幫助我們自動(dòng)完成上面的操作(本來想用windows 的批處理,可惜太菜了,搞不定,只能用 shell 了,如果有道友會(huì)這些操作,歡迎留言,這樣就更簡單了)。
第一步,先安裝 git bash,這個(gè)工具應(yīng)該開發(fā)人員基本都安裝了才是,就如 MDK 一樣,畢竟 git 這么火。
然后獻(xiàn)上魚鷹編寫的腳本:
#!/bin/bash #"C:\Program Files\Git\bin\sh.exe" --login -i -c "./boot_app.sh" # MDK 中執(zhí)行的命令 boot_name_file_hex=./bootloader.hex # BOOT 文件所在位置和名稱 app_name_file_hex=./Objects/app.hex #dir_file_name_hex=`find ${app_dir_file_hex} -name "*.hex"` boot_app_name_file_hex=./mege-app-boot.hex cp ${boot_name_file_hex} ${boot_app_name_file_hex} # 復(fù)制新文件 boot 文件 sed -i '$d' ${boot_app_name_file_hex} # 刪除最后一行 cat ${app_name_file_hex} >> ${boot_app_name_file_hex} # 追加文件
將上面的文件保存為 boot_app.sh ,然后把它放在工程文件同級(jí)目錄下,比如這樣:
最后工程配置一下:
1
2
設(shè)置命令(在上面的文件開始處已注釋)
"C:\Program Files\Git\bin\sh.exe" --login -i -c "./boot_app.sh"
注意上面 "C:\Program Files\Git\bin\sh.exe" 路徑和自己安裝的 git 工具有關(guān)可以自行修改,boot 和 app 文件名也是如此。
完成以上操作后,編譯后就會(huì)自動(dòng)在工程目錄下生成 mege-app-boot.hex 文件,這就是你要的合并文件了(名字可以隨意?。?/p>
關(guān)于如何下載
既然說不要工具,有種下載也不用 j-flash 或 STM32 ST-LINK Utility 呀!
安排上:《如何使用 KEIL 下載 HEX 文件?》
這樣不就一條龍服務(wù)了嘛,從如何制作 bootloader 到如何合并 到下載,大功告成。
關(guān)于如何優(yōu)化更新
其實(shí)使用調(diào)試器更新固件還是挺麻煩的,有沒有更簡單、更傻瓜的操作呢?
當(dāng)然有,那就是一鍵拖曳燒錄,就像拷貝文件一樣簡單,這個(gè)估計(jì)很多人有了解,也可能實(shí)現(xiàn)過,魚鷹對(duì)此也挺感興趣的。后期有時(shí)間魚鷹也去搞搞,爭取開源一個(gè)讓大家都學(xué)習(xí)一下,對(duì)此感興趣的話,歡迎關(guān)注魚鷹吶。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。