博客專欄

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

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

        發布人:魚鷹談單片機 時間:2021-12-19 來源:工程師 發布文章

        只要你經歷過稍微復雜一點的項目,一般都會要求 BOOT 和 APP 兩個程序,即是為了方便客戶功能升級,也是為了咱自己解 BUG,所謂好處多多。

        剛畢業那年,魚鷹接手的項目中就需要 BootLoader,為此,魚鷹寫了幾篇相關的筆記《固件升級經驗總結》《STM32固件升級之基礎知識(一)》(關注公眾號,菜單欄中有合集,或點擊藍色字體查看)。

        這里面介紹的升級知識不管對初學者還是有經驗的道友來說,都有一定的參考價值。特別是里面對一些特殊要求的處理,更有巧妙的設計(比如最后才更新 APP 前 8 個字節,比如傳參等問題)。

        今天魚鷹繼續介紹如何合并 BOOT 和 APP 兩個程序,方便一次下載。

        在網上,有各種各樣的合并方法,有通過 J-flash 工具的,有通過寫入單片機再讀回來的,有自己寫合并程序的,或者魚鷹介紹的專業工具 《功能強大的 HEX 開源轉換工具,你值得擁有》,可謂八仙過海,各顯神通。

        以上方法大部分方法都要使用工具,或者過程繁瑣。那么有沒有一種快速、簡單、方便的不需要借助工具的合并方法呢?當然有了。

        今天魚鷹就介紹這個史上最簡單的方法(這可是老工程師傳授的技巧):

        手工法

        1、復制bootlaoder 的 HEX 文件后用記事本打開;

        2、刪除最后一行(一般是 :00000001FF);

        3、打開 APP 的HEX 文件;

        4、復制所有 APP 文件的內容,粘貼到第二步文件修改后的 Boot 文件末尾。

        5、保存修改后的 boot 文件,這個就是合并后的文件了。

        1.png

        搞定!!沒有借助任何工具(記事本算不?),在沒有工具的情況下,最快的解決方案!!!

        自動法

        既然只是對文件的刪除、追加操作,我們完全可以用腳本代替,所以魚鷹寫了一個非常非常簡單的腳本,幫助我們自動完成上面的操作(本來想用windows 的批處理,可惜太菜了,搞不定,只能用 shell 了,如果有道友會這些操作,歡迎留言,這樣就更簡單了)。

        第一步,先安裝 git bash,這個工具應該開發人員基本都安裝了才是,就如 MDK 一樣,畢竟 git 這么火。

        然后獻上魚鷹編寫的腳本:

        #!/bin/bash
        #"C:\Program Files\Git\bin\sh.exe" --login -i -c "./boot_app.sh"  # MDK 中執行的命令
        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}     # 復制新文件 boot 文件
        sed -i '$d' ${boot_app_name_file_hex}               # 刪除最后一行
        cat ${app_name_file_hex} >>  ${boot_app_name_file_hex} # 追加文件

        將上面的文件保存為 boot_app.sh ,然后把它放在工程文件同級目錄下,比如這樣:

        2.png

        最后工程配置一下:

        1

        3.png

        2

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

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

        4.png

        注意上面 "C:\Program Files\Git\bin\sh.exe"  路徑和自己安裝的 git 工具有關可以自行修改,boot  和 app 文件名也是如此。

        完成以上操作后,編譯后就會自動在工程目錄下生成 mege-app-boot.hex 文件,這就是你要的合并文件了(名字可以隨意取)。

        關于如何下載

        既然說不要工具,有種下載也不用 j-flash 或 STM32 ST-LINK Utility 呀!

        安排上:《如何使用 KEIL 下載 HEX 文件?》

        這樣不就一條龍服務了嘛,從如何制作 bootloader 到如何合并 到下載,大功告成。

        關于如何優化更新

        其實使用調試器更新固件還是挺麻煩的,有沒有更簡單、更傻瓜的操作呢?

        當然有,那就是一鍵拖曳燒錄,就像拷貝文件一樣簡單,這個估計很多人有了解,也可能實現過,魚鷹對此也挺感興趣的。后期有時間魚鷹也去搞搞,爭取開源一個讓大家都學習一下,對此感興趣的話,歡迎關注魚鷹吶。

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: 單片機

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 济源市| 张家港市| 南康市| 布尔津县| 福海县| 宾川县| 江西省| 临江市| 蒙自县| 长兴县| 云安县| 博湖县| 宁河县| 郑州市| 永康市| 政和县| 淮北市| 乌兰察布市| 金溪县| 诸暨市| 伊通| 岳池县| 宜黄县| 洪洞县| 麻栗坡县| 江川县| 长汀县| 车致| 古丈县| 虹口区| 浦北县| 滦平县| 金门县| 鹤岗市| 潮州市| 大厂| 博湖县| 额济纳旗| 南澳县| 当雄县| 乐至县|