1寫在前面
在產(chǎn)品量產(chǎn)時(shí),產(chǎn)品具有IAP和APP兩部分程序時(shí),一般需要拼接成一個(gè)量產(chǎn)程序文件。
有人肯定會(huì)好奇,為什么要拼接成一個(gè)程序文件呢?
這個(gè)答案很簡(jiǎn)單:為了提高生產(chǎn)效率,在量產(chǎn)只燒錄一個(gè)程序文件(而不是燒錄IAP + APP兩個(gè)程序文件)。
下面寫幾點(diǎn)內(nèi)容:
理解bin、hex、axf
IAP+APP拼接方法
bin和hex互相轉(zhuǎn)換
2
理解bin、hex、axf
想要掌握程序IAP+APP程序拼接,需要理解程序文件hex、bin文件格式內(nèi)容。
先給一張三者的對(duì)比圖:
Bin文件
Bin文件就是一種沒有格式的程序文件,只是包含了程序數(shù)據(jù)。
Hex文件
Hex是由Intel制定的一種十六進(jìn)制標(biāo)準(zhǔn)文件格式,是由編譯器轉(zhuǎn)換而成的一種用于下載帶處理器里面的文件。
Hex文件格式是由一行一行的十六進(jìn)制數(shù)據(jù)組成,每行包含:開始、長(zhǎng)度、數(shù)據(jù)、類型、校驗(yàn)和等重要信息。
axf文件
axf文件是經(jīng)過編譯器編譯之后,包含具有程序、調(diào)試等更多信息的一種文件。
對(duì)比MDK-ARM編譯后三個(gè)文件大小
Objects目錄下:
Demo.axf(236K)
Demo.hex(4K)
Bin目錄下:
Demo.bin(2K)
請(qǐng)參看:關(guān)于bin、hex和axf文件格式的描述
3
IAP+APP拼接方法
用于產(chǎn)品量產(chǎn),燒錄的程序文件,一般是hex,或bin文件。
不管是hex文件,還是bin文件,我們都需要通過燒錄軟件 +燒錄(編程)工具實(shí)現(xiàn)。
燒錄軟件針對(duì)不同MCU,一般有不同的燒錄軟件。
針對(duì)STM32,一般建議使用官方提供的STVP、ST-LINK Utility和STM32CubeProg這三種編程軟件。
拼接說明
拼接IAP+APP兩段程序,一般簡(jiǎn)單方法就是:將兩個(gè)程序分別燒錄進(jìn)去,再統(tǒng)一讀取出來(lái),保存成一個(gè)量產(chǎn)文件。
拼接說明
IAP和 APP程序的起始地址是不同的,因此燒錄進(jìn)芯片,是存儲(chǔ)在兩片區(qū)域的。
燒錄程序的時(shí)候,特別是燒錄bin文件(沒有地址)時(shí),要注意設(shè)置好起始地址。hex文件有地址地址,不用自己設(shè)置地址。
讀取“合并”程序的時(shí)候,同樣要注意起始地址,還有讀取大小,保證讀取全部程序。
比如通過ST-LINK Utility讀取STM32程序:
通過STM32CubeProg讀取STM32程序:
再次提示:
燒錄bin文件時(shí),設(shè)置好起始地址;
讀取時(shí),設(shè)置起始地址,讀取大?。?/p>
保存可選擇hex,還是bin文件;
這里推薦閱讀:我的ST-Link專欄
4
bin、hex文件互相轉(zhuǎn)換
在某些情況下需要使用特定格式的文件,比如我們遠(yuǎn)程升級(jí),要求通過bin文件實(shí)現(xiàn)。
通過上面的介紹,其實(shí)你會(huì)發(fā)現(xiàn),使用編程軟件ST-LINK Utility,或STM32CubeProg,就能直接另存為hex,或bin文件格式。
ST-LINK Utility另存為:
STM32CubeProg另存為:
之前我有介紹在MDK-ARM中,直接轉(zhuǎn)換成bin文件的文章:MDK-ARM如何生產(chǎn)Bin文件
當(dāng)然,bin和hex格式文件互相轉(zhuǎn)換的工具,網(wǎng)上有很多,感興趣的朋友可以搜索了解一下。
-
IAP
+關(guān)注
關(guān)注
2文章
165瀏覽量
25030 -
編譯器
+關(guān)注
關(guān)注
1文章
1661瀏覽量
50192 -
BIN文件
+關(guān)注
關(guān)注
0文章
27瀏覽量
8681
發(fā)布評(píng)論請(qǐng)先 登錄
無(wú)法將Jlink調(diào)試器與CYBT263065EVAL COOLDIM_PRG_BOARD連接在一起怎么解決?
ADS1217是需要2個(gè)電源隔離供電嗎?還是接在一起,對(duì)測(cè)量精度有多大影響?
ADS1198有兩個(gè)時(shí)鐘,CLK和SCLK,這兩個(gè)時(shí)鐘信號(hào)能接在一起嗎?
ADS1274“模擬地”和“數(shù)字地”是接在一起好,還是分開連接好?
能否把16個(gè)ADS1282的CLK、RESET、SCLK、SYNC管腳分別連在一起?
TAS57XX當(dāng)BCLK為64*fs的頻率,BCLK和MCLK引腳連接在一起用,這個(gè)是對(duì)57XX所有芯片都適用嗎?
OLED拼接屏被經(jīng)常利用在哪些領(lǐng)域?

請(qǐng)問三片PCM1864如何級(jí)聯(lián)在一起?
隔離電源的地能接在一起嗎,隔離電源能不能直接共地使用
將5G信號(hào)鏈與電平轉(zhuǎn)換結(jié)合在一起

評(píng)論