博客專欄

EEPW首頁 > 博客 > 不用工具,合并 bootloader 和 APP 文件就是這么簡單!

不用工具,合并 bootloader 和 APP 文件就是這么簡單!

發(fā)布人:魚鷹談單片機(jī) 時(shí)間:2021-12-19 來源:工程師 發(fā)布文章

只要你經(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è)就是合并后的文件了。

1.png

搞定?。]有借助任何工具(記事本算不?),在沒有工具的情況下,最快的解決方案?。。?/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í)目錄下,比如這樣:

2.png

最后工程配置一下:

1

3.png

2

設(shè)置命令(在上面的文件開始處已注釋)

"C:\Program Files\Git\bin\sh.exe" --login -i -c "./boot_app.sh"

4.png

注意上面 "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)系工作人員刪除。



關(guān)鍵詞: 單片機(jī)

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉