合并BIN檔案的兩種方法

來源:互聯網
上載者:User

      在單片機的開發過程中,經常需要將兩個單獨的BIN檔案合并成一個檔案,方便燒寫和生產。下面結合STM32的IAP Bootloader Code和Application Code的合并,介紹兩種合并BIN檔案的方法。

      首先簡單介紹一下STM32的IAP。IAP(In-application-programming),即在應用中編程。有了它,產品發布之後,仍然可以方便的升級韌體,而不需要拆機並用JTAG等方式更新程式。IAP系統的韌體一般有兩部分組成,IAP BootLoader Code和Application Code,如所示。

     

      系統啟動時,首先運行IAP BootLoader Code,並檢測相應狀態,判斷是執行升級的流程還是直接運行本地的Application Code。 一般來說,BootLoader和Application是分別編譯的,會產生兩個二進位檔案。在工廠生產時,如果分別燒寫這兩個檔案,顯然有些麻煩。這時,我們就可以將兩個BIN檔案合并成一個,直接燒寫。假設Application Code的位移地址為0x1000,IAP韌體在Flash中的分布如所示。

     

      下面介紹第一種方法,使用二進位檔案合并工具(UBIN.exe),這個小工具是以前在S3C2410上開發uCOS時做的,功能比較簡單,滿足一般的需求。

      首先,添加第一個檔案1.bin,其地址為0x0000,所以,位移量設定為0x00000000,設定完位移量後點擊“添加”按鈕。

     

      然後添加第二個檔案,位移量根據需要設定為0x00001000,如所示。

       

      設定目標檔案為C:\dst.bin,然後點擊“合并”按鈕。

     

      正常情況下,會成功產生目標檔案,並有如所示的提示資訊。

       

      這種方法相對比較靈活,對合并檔案的個數和位移地址沒有限制。缺點是不支援設定檔,不能儲存所設的配置,所以,每次合并都得手動做很多重複工作。在調試階段會比較浪費時間。

      下面介紹一種通過命令列工具合并兩個檔案的方法。該方法需要用到fsutil.exe、cat.exe和hbin.exe。寫一個批次檔,分別調用這三個工具,最終將1.bin和2.bin合并成dest.bin。批次檔的內容如下:

del dest.bin
fsutil  file createnew dest.bin 4096 
cat 2.bin >>dest.bin
hbin 1.bin dest.bin

       批次檔各行的簡單說明,

  •       del dest.bin,刪除原來的目標檔案
  •       fsutil  file createnew dest.bin 4096,建立一個大小為4096位元組的空白檔案dest.bin,該值的大小由位移地址0x1000決定
  •       cat 2.bin >>dest.bin,將2.bin追加到空白檔案dest.bin之後
  •       hbin 1.bin dest.bin,將1.bin放到dest.bin的頭上,填充dest.bin頭上4KB的空白

      dest.bin就是我們最終需要的合并完成的檔案。將它與第一種方法合并的檔案dst.bin對比一下,如下。

     

      可以看到兩種方法合并出的檔案,完全一樣。

      第二種方法的好處在於,可以在整合式開發環境中設定編譯選項,在編譯完成之後自動執行該批處理,這樣,編譯完成後即得到能夠直接固化到Flash中的二進位檔案,節省了一些時間。

       文中介紹的相關工具的:http://files.cnblogs.com/we-hjb/HEBING.rar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.