0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何實(shí)現(xiàn)程序拼接和hex/bin格式互轉(zhuǎn)?

strongerHuang ? 來(lái)源:strongerHuang ? 作者:strongerHuang ? 2021-03-20 11:39 ? 次閱讀

現(xiàn)在很多產(chǎn)品都有IAP(BootLoader)和APP(應(yīng)用程序),一般在量產(chǎn)的時(shí)候,需要把兩部分程序合在一起。

一般來(lái)說(shuō),通過(guò)編程下載)工具就能實(shí)現(xiàn)程序拼接,以及hex/bin格式互轉(zhuǎn)。

下面結(jié)合STM32,以及對(duì)應(yīng)的ST-LINK Utility、STM32CubeProg工具給大家簡(jiǎn)單描述下:

IAP、APP程序拼接

hex、bin格式的互轉(zhuǎn)

1

理解bin、hex、axf

想要掌握程序IAP+APP程序拼接,需要理解程序文件hex、bin文件格式內(nèi)容。

用一個(gè)表格來(lái)區(qū)分bin、hex和axf三者的關(guān)系:

bin hex axf
程序數(shù)據(jù) 程序數(shù)據(jù) 程序數(shù)據(jù)
地址、類型、校驗(yàn)等標(biāo)記信息 地址、類型、校驗(yàn)等標(biāo)記信息
調(diào)試信息

Bin文件

Bin文件就是一種沒(méi)有格式的程序文件,只是包含了程序數(shù)據(jù)。

Hex文件

Hex是由Intel制定的一種十六進(jìn)制標(biāo)準(zhǔn)文件格式,是由編譯器轉(zhuǎn)換而成的一種用于下載帶處理器里面的文件。

Hex文件格式是由一行一行的十六進(jìn)制數(shù)據(jù)組成,每行包含:開(kāi)始、長(zhǎng)度、數(shù)據(jù)、類型、校驗(yàn)和等重要信息。

axf文件

axf文件是經(jīng)過(guò)編譯器編譯之后,包含具有程序、調(diào)試等更多信息的一種文件。

對(duì)比MDK-ARM編譯后三個(gè)文件大小

Objects目錄下:

Demo.axf(236K)

Demo.hex(4K)

Bin目錄下:

Demo.bin(2K)

請(qǐng)參看:理輕松理解bin、hex、axf和elf文件格式

2

通過(guò)工具實(shí)現(xiàn)IAP+APP拼接

用于產(chǎn)品量產(chǎn),燒錄的程序文件,一般是hex,或bin文件。

不管是hex文件,還是bin文件,我們都需要通過(guò)燒錄軟件 +燒錄(編程)工具實(shí)現(xiàn)。

燒錄軟件針對(duì)不同MCU,一般有不同的燒錄軟件。

針對(duì)STM32,一般建議使用官方提供的STVP、ST-LINK Utility和STM32CubeProg這三種編程軟件。

拼接說(shuō)明拼接IAP+APP兩段程序,一般簡(jiǎn)單方法就是:將兩個(gè)程序分別燒錄進(jìn)去,再統(tǒng)一讀取出來(lái),保存成一個(gè)量產(chǎn)文件。 拼接說(shuō)明IAP 和 APP程序的起始地址是不同的,因此燒錄進(jìn)芯片,是存儲(chǔ)在兩片區(qū)域的。 燒錄程序的時(shí)候,特別是燒錄bin文件(沒(méi)有地址)時(shí),要注意設(shè)置好起始地址。hex文件有地址地址,不用自己設(shè)置地址。 讀取“合并”程序的時(shí)候,同樣要注意起始地址,還有讀取大小,保證讀取全部程序。 比如通過(guò)ST-LINK Utility讀取STM32程序:

通過(guò)STM32CubeProg讀取STM32程序:

再次提示:

燒錄bin文件時(shí),設(shè)置好起始地址;

讀取時(shí),設(shè)置起始地址,讀取大小;

保存可選擇hex,還是bin文件;

這里推薦閱讀:

ST-Link專欄

ST-LINK Utility介紹、下載、安裝和使用教程

STM32CubeProg介紹、下載、安裝和使用教程

3

通過(guò)工具實(shí)現(xiàn)bin、hex格式轉(zhuǎn)換

在某些情況下需要使用特定格式的文件,比如我們遠(yuǎn)程升級(jí),要求通過(guò)bin文件實(shí)現(xiàn)。

通過(guò)上面的介紹,其實(shí)你會(huì)發(fā)現(xiàn),使用編程軟件ST-LINK Utility,或STM32CubeProg,就能直接另存為hex,或bin文件格式。

ST-LINK Utility另存為:

STM32CubeProg另存為:

之前我有介紹在MDK-ARM中,直接轉(zhuǎn)換成bin文件的文章:Keil MDK利用 fromelf 實(shí)現(xiàn)axf 轉(zhuǎn) bin 的方法

當(dāng)然,這些方法是比較簡(jiǎn)單,也比較使用的方法。bin和hex格式文件互相轉(zhuǎn)換的工具,網(wǎng)上有很多,感興趣的朋友可以搜索了解一下。

原文標(biāo)題:IAP、APP程序拼接,及hex/bin格式互轉(zhuǎn)

文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356045
  • IAP
    IAP
    +關(guān)注

    關(guān)注

    2

    文章

    163

    瀏覽量

    24290

原文標(biāo)題:IAP、APP程序拼接,及hex/bin格式互轉(zhuǎn)

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    hex格式和二進(jìn)制的區(qū)別

    HEX格式和二進(jìn)制在多個(gè)方面存在顯著的區(qū)別。以下是對(duì)這兩者的對(duì)比: 一、定義與表示方式 HEX格式HEX,全稱為Intel
    的頭像 發(fā)表于 11-18 15:24 ?523次閱讀

    盛顯科技:拼接處理器如何實(shí)現(xiàn)高效數(shù)據(jù)拼接操作?

    眾所周知,高效的數(shù)據(jù)拼接操作無(wú)疑是數(shù)據(jù)處理領(lǐng)域的核心優(yōu)勢(shì),它能極大地縮短了處理時(shí)間,讓拼接處理器能夠迅速應(yīng)對(duì)海量數(shù)據(jù)的挑戰(zhàn),實(shí)現(xiàn)數(shù)據(jù)的快速整合與輸出。因此,高效數(shù)據(jù)拼接操作不僅是技術(shù)進(jìn)
    的頭像 發(fā)表于 10-23 10:58 ?245次閱讀
    盛顯科技:<b class='flag-5'>拼接</b>處理器如何<b class='flag-5'>實(shí)現(xiàn)</b>高效數(shù)據(jù)<b class='flag-5'>拼接</b>操作?

    labview中浮點(diǎn)數(shù)與十六進(jìn)制字符串相互轉(zhuǎn)

    與下位機(jī)數(shù)據(jù)交流及通訊時(shí),經(jīng)常有浮點(diǎn)數(shù)與十六進(jìn)制字符串相互轉(zhuǎn)化的需求,經(jīng)過(guò)兩天總結(jié),找到了最簡(jiǎn)潔的相互轉(zhuǎn)化的方法,萌新歡迎大佬指正,文件也附上。*附件:HEX字符串與浮點(diǎn)數(shù)轉(zhuǎn)換.rar
    發(fā)表于 10-21 19:51

    單片機(jī)hex文件反編譯成C語(yǔ)言的過(guò)程

    使用C語(yǔ)言編寫(xiě),然后編譯成機(jī)器碼并燒錄到單片機(jī)的存儲(chǔ)器中。 Hex文件是一種用于存儲(chǔ)單片機(jī)程序的文件格式,它包含了程序的機(jī)器碼和一些附加信息,如起始地址、結(jié)束地址等。
    的頭像 發(fā)表于 09-02 10:49 ?3280次閱讀

    hex文件如何查看原c語(yǔ)言代碼

    直接將 .hex 文件轉(zhuǎn)換回原始的 C 語(yǔ)言代碼是不可能的,因?yàn)?.hex 文件是二進(jìn)制文件,它包含了單片機(jī)程序編譯后的機(jī)器碼,這些機(jī)器碼與原始的 C 語(yǔ)言代碼在結(jié)構(gòu)和表達(dá)上存在巨大的差異。機(jī)器碼
    的頭像 發(fā)表于 09-02 10:37 ?2307次閱讀

    用labview實(shí)現(xiàn)串口bin文件或hex文件的燒錄。bin要用Xmodem協(xié)議。

    最近遇到項(xiàng)目需要用串口更新程序,mcu已經(jīng)部署好bootloader來(lái)實(shí)現(xiàn)?,F(xiàn)在就需要用labview來(lái)完成文件的傳輸?,F(xiàn)在是頭疼這個(gè)文件傳輸應(yīng)該怎么去實(shí)現(xiàn)。讀取了bit文件后是直接字符串發(fā)送嗎,需
    發(fā)表于 08-12 15:19

    使用CY521 EVAL配置CYPD2122,如何將文件保存為HEX格式?

    我正在使用 CY521 EVAL 配置 CYPD2122。 一切運(yùn)行正常,我現(xiàn)在希望將文件保存為 HEX 格式,以便通過(guò) MiniProg4 進(jìn)行編程。但是,當(dāng)我進(jìn)入\"保存到固件文件
    發(fā)表于 08-12 08:19

    液晶拼接屏有無(wú)縫拼接的嗎

    液晶拼接屏存在無(wú)縫拼接的技術(shù)。具體來(lái)說(shuō),無(wú)縫液晶拼接屏的實(shí)現(xiàn)方式主要有兩種:
    的頭像 發(fā)表于 08-01 09:27 ?465次閱讀

    AD7124的程序如何將它導(dǎo)出成hex格式呢?

    ,那么如何將它導(dǎo)出成hex格式呢?我翻遍了其中的資料還是沒(méi)有找到辦法。因?yàn)橹挥邪堰@個(gè)hex文件燒寫(xiě)到黑色的評(píng)估板里,才能測(cè)試AD7124呢。
    發(fā)表于 07-23 08:13

    TSMaster 中 Hex 文件編輯器使用詳細(xì)教程

    TSMaster中Hex文件編輯器的使用方法,該編輯器能實(shí)現(xiàn)將現(xiàn)有的Hexbin、mot、s19和tsbinary類型的文件按地址分割;并且能將H
    的頭像 發(fā)表于 06-01 08:21 ?812次閱讀
    TSMaster 中 <b class='flag-5'>Hex</b> 文件編輯器使用詳細(xì)教程

    Dave編譯后的bin格式文件大于hex格式文件,可能是什么原因呢?

    如題,今天使用Dave4.5編譯時(shí),生成的.bin文件大于.hex文件,請(qǐng)問(wèn)可能是什么原因呢?哪里沒(méi)設(shè)置嗎? .bin格式編譯的信息,使用release模式編譯的 .
    發(fā)表于 05-24 07:40

    stm32下載freertos,hex文件小燈就閃爍,下載bin文件就毫無(wú)反應(yīng)呢?

    為什么我下載hex文件小燈就閃爍,下載bin文件就毫無(wú)反應(yīng)呢求高手解答 謝謝
    發(fā)表于 05-16 08:05

    stm32使用SD卡保存HEX升級(jí)芯片內(nèi)部flash,需要轉(zhuǎn)換成BIN文件嗎?

    請(qǐng)問(wèn)下:stm32 自己使用SD卡保存HEX升級(jí)芯片內(nèi)部flash,需要轉(zhuǎn)換成BIN文件嗎?
    發(fā)表于 05-09 06:15

    求助,為什么binhex文件開(kāi)始的前面4個(gè)字節(jié)不一樣?

    最后面bin文件也多了幾個(gè)字節(jié)的00,另外iap升級(jí)用hex還是bin好點(diǎn)?
    發(fā)表于 04-12 06:12

    用STM32進(jìn)行bootloader開(kāi)發(fā)時(shí),能不能將boot和app程序hex合成為一個(gè)hex進(jìn)行燒錄?

    大家好,請(qǐng)問(wèn)用STM32進(jìn)行bootloader開(kāi)發(fā)時(shí),能不能將boot和app程序hex合成為一個(gè)hex進(jìn)行燒錄?我之前分別燒錄兩個(gè)hex,是可以
    發(fā)表于 04-01 08:20