那曲檬骨新材料有限公司

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

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

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

單片機(jī)Hex文件的格式詳解

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 2023-09-24 11:50 ? 次閱讀

單片機(jī)的朋友都會(huì)使用hex文件作為燒錄文件。那么當(dāng)我們寫一個(gè)在線升級(jí)軟件要支持hex文件的升級(jí),就需要通過hex文件轉(zhuǎn)成bin文件進(jìn)行傳輸,那么hex文件的格式和知識(shí)就必不可少了。

Intel HEX文件是由一行行符合Intel HEX文件格式的文本所構(gòu)成的ASCII文本文件。在Intel HEX文件中,每一行包含一個(gè)HEX記錄。這些記錄由對(duì)應(yīng)機(jī)器語言碼和/或常量數(shù)據(jù)的十六進(jìn)制編碼數(shù)字組成。Intel HEX文件通常用于傳輸將被存于ROM或者EPROM中的程序和數(shù)據(jù)。大多數(shù)EPROM編程器或模擬器使用Intel HEX文件。

1 Hex文件記錄格式

以行為單位,每行以冒號(hào)開頭,內(nèi)容全部為16進(jìn)制碼,以ASCII碼形式顯示。

在HEX文件里面,每一行代表一個(gè)記錄。記錄的基本格式為如表所示:

wKgZomUPslGAR0WpAAALDyN76m8322.png

wKgaomUPslGALBYWAABsglzcKGw348.png

Start code一個(gè)字符,ASCII冒號(hào):。

Byte count兩個(gè)十六進(jìn)制數(shù)字(一個(gè)十六進(jìn)制數(shù)字對(duì)),表示數(shù)據(jù)字段中的字節(jié)數(shù)(十六進(jìn)制數(shù)字對(duì))。最大字節(jié)數(shù)為 255 (0xFF)。16 (0x10) 和 32 (0x20) 是常用的字節(jié)數(shù)。

Address四位十六進(jìn)制數(shù)字,表示數(shù)據(jù)的 16 位起始內(nèi)存地址偏移量。數(shù)據(jù)的物理地址是通過將此偏移量添加到先前建立的基地址來計(jì)算的,從而允許內(nèi)存尋址超出 16 位地址的 64 KB 限制。默認(rèn)為零的基地址可以通過各種類型的記錄進(jìn)行更改?;刂泛偷刂菲屏渴冀K表示為大端值。

Record type兩個(gè)十六進(jìn)制數(shù)字,00到05,定義數(shù)據(jù)字段的含義。參考下文

Data一個(gè)由n個(gè)字節(jié)組成的數(shù)據(jù)序列,由 2n 個(gè)十六進(jìn)制數(shù)字表示。一些記錄省略了這個(gè)字段(n等于零)。數(shù)據(jù)字節(jié)的含義和解釋取決于應(yīng)用程序。

Checksum兩個(gè)十六進(jìn)制數(shù)字,一個(gè)可用于驗(yàn)證記錄沒有錯(cuò)誤的計(jì)算值。計(jì)算校驗(yàn)和前所有16進(jìn)制碼的累加和。

2 數(shù)據(jù)記錄格式

Intel HEX文件由任意數(shù)量以回車換行符結(jié)束的數(shù)據(jù)記錄組成.

數(shù)據(jù)記錄外觀如下:

[:10246200464C5549442050524F46494C4500464C33]

其中:

10是這個(gè)記錄當(dāng)中數(shù)據(jù)字節(jié)的數(shù)量。

2462是數(shù)據(jù)將被下載到存儲(chǔ)器當(dāng)中的地址。

00是記錄類型(數(shù)據(jù)記錄)。

464C…464C是數(shù)據(jù)。

33是這個(gè)記錄的校驗(yàn)和的補(bǔ)足碼。

3 擴(kuò)展線性地址記錄格式(HEX386)

擴(kuò)展線性地址記錄也叫作32位地址記錄或HEX386記錄。這些記錄包含數(shù)據(jù)地址的高16位。擴(kuò)展線性地址記錄總是有兩個(gè)數(shù)據(jù)字節(jié)。

外觀如下:

[:02000004FFFFFC]

其中:

02是這個(gè)記錄當(dāng)中數(shù)據(jù)字節(jié)的數(shù)量。

0000是地址域,對(duì)于擴(kuò)展線性地址記錄,這個(gè)域總是0000。

04是記錄類型 04(擴(kuò)展線性地址記錄)。

FFFF是地址的高16位。

FC是這個(gè)記錄的校驗(yàn)和的補(bǔ)足碼。

當(dāng)一個(gè)擴(kuò)展線性地址記錄被讀取,存儲(chǔ)于數(shù)據(jù)域的擴(kuò)展線性地址被保存,它被應(yīng)用于從Intel HEX文件讀取來的隨后的記錄。線性地址保持有效,直到它被另外一個(gè)擴(kuò)展地址記錄所改變。

通過把記錄當(dāng)中的地址域與被移位(16位)的來自擴(kuò)展線性地址記錄的地址數(shù)據(jù)相加獲得數(shù)據(jù)記錄的絕對(duì)存儲(chǔ)器地址。

以下的例子演示了這個(gè)過程:

來自數(shù)據(jù)記錄地址域的地址2462
擴(kuò)展線性地址記錄的數(shù)據(jù)域FFFF0000
---------------------
絕對(duì)存儲(chǔ)器地址FFFF2462

4 標(biāo)擴(kuò)展段地址記錄(HEX86)

擴(kuò)展段地址記錄也叫HEX86記錄,它包括4-19位數(shù)據(jù)地址段。擴(kuò)展段地址記錄總是有兩個(gè)數(shù)據(jù)字節(jié)。

外觀如下:

[:020000021200EA]

其中:

02是記錄當(dāng)中數(shù)據(jù)字節(jié)的數(shù)量。

0000是地址域,對(duì)于擴(kuò)展段地址記錄,這個(gè)域總是0000。

02是記錄類型 02(擴(kuò)展段地址記錄)。

1200是地址段。

EA是這個(gè)記錄的校驗(yàn)和的補(bǔ)足碼。

當(dāng)一個(gè)擴(kuò)展段地址記錄被讀取,存儲(chǔ)于數(shù)據(jù)域的擴(kuò)展段地址被保存,它被應(yīng)用于從Intel HEX文件讀取來的隨后的記錄。段地址保持有效,直到它被另外一個(gè)擴(kuò)展地址記錄所改變。

通過把記錄當(dāng)中的地址域與被移位(4位)的來自擴(kuò)展段地址記錄的地址數(shù)據(jù)相加獲得數(shù)據(jù)記錄的絕對(duì)存儲(chǔ)器地址。以下的例子演示了這個(gè)過程:

來自數(shù)據(jù)記錄地址域的地址  2462
擴(kuò)展段地址記錄數(shù)據(jù)域  1200
  -----------------
絕對(duì)存儲(chǔ)器地址        00014462

5 文件結(jié)束記錄(EOP)

Intel HEX文件必須以文件結(jié)束(EOF)記錄結(jié)束。這個(gè)記錄的記錄類型域的值必須是01。EOF記錄外觀總是如下

[:00000001FF]

其中:

00是記錄當(dāng)中數(shù)據(jù)字節(jié)的數(shù)量。

0000是數(shù)據(jù)被下載到存儲(chǔ)器當(dāng)中的地址。在文件結(jié)束記錄當(dāng)中地址是沒有意義被忽略的。0000H是典型的地址。

01是記錄類型01(文件結(jié)束記錄)。

FF是這個(gè)記錄的校驗(yàn)和的補(bǔ)足碼。

6 Intel Hex 完成例子

下面是一個(gè)完整的Intel HEX文件的例子:


:10001300AC12AD13AE10AF1112002F8E0E8F0F2244
:10000300E50B250DF509E50A350CF5081200132259
:03000000020023D8
:0C002300787FE4F6D8FD7581130200031D
:10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016
:04003F00A42EFE22CB
:00000001FF
看了這個(gè)例子,我自己也打開了之前寫的51單片機(jī)的hex文件:

:2000000002000E75210675225B75230200267B007C00900090758140758901758CF1758A45
:2000200028D28C75A882758CF1758A280BBBFA157B00EC75F00A8485F020F5210CBC64027A
:200040007C00120051C0E0C0D0120051D0D0D0E032E52193F580D2A2C2A27580FED2A3C29C
:20006000A3120087E52093F580D2A2C2A27580FDD2A3C2A3120087227D327E287FF81151AA
:1A008000DFFEDEF8DDF4227E047FF8DFFEDEFA223F065B4F666D7D077F6FBC
:00000001FF

審核編輯:湯梓紅

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

    關(guān)注

    6043

    文章

    44619

    瀏覽量

    638479
  • intel
    +關(guān)注

    關(guān)注

    19

    文章

    3483

    瀏覽量

    186433
  • HEX文件
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    12827
  • ASCII
    +關(guān)注

    關(guān)注

    5

    文章

    172

    瀏覽量

    35197
  • EPROM
    +關(guān)注

    關(guān)注

    3

    文章

    132

    瀏覽量

    54521

原文標(biāo)題:單片機(jī)Hex文件的格式

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)中的hex和bin文件

    單片機(jī)程序編譯之后,除了生成hex文件之外還生成了bin文件,實(shí)際它們都是單片機(jī)的下載文件,下文
    發(fā)表于 07-29 09:21 ?4275次閱讀

    STM32單片機(jī)生成的hex文件與bin文件區(qū)別與應(yīng)用

    調(diào)試單片機(jī)程序時(shí),通常下載的是Hex文件。由于在Hex文件中已經(jīng)包含了地址信息,在上述下載步驟中不需要設(shè)置內(nèi)存地址。
    的頭像 發(fā)表于 01-03 11:06 ?7425次閱讀

    Hex文件格式是什么意思

    hex文件格式hex文件格式是可以燒寫到單片機(jī)中,被單片機(jī)執(zhí)行的一種
    發(fā)表于 01-12 06:17

    51單片機(jī)中各種小例子的hex文件

    51單片機(jī)基礎(chǔ)實(shí)驗(yàn)的各種實(shí)例的hex文件,能幫助大家從0開始學(xué)習(xí)51單片機(jī)
    發(fā)表于 02-26 17:18 ?63次下載

    Hex格式詳解

    Hex格式詳解
    發(fā)表于 10-31 14:46 ?10次下載
    <b class='flag-5'>Hex</b>的<b class='flag-5'>格式</b><b class='flag-5'>詳解</b>

    單片機(jī)hex和bin文件的區(qū)別

    單片機(jī)程序?qū)懞弥?,我們都要把程序下載到單片機(jī)的內(nèi)存中,單片機(jī)才會(huì)按照程序員的邏輯執(zhí)行命令實(shí)現(xiàn)功能。之前也講過下載單片機(jī)的幾種方式,比如ISP下載,JTAG下載,下載
    發(fā)表于 11-10 17:30 ?6725次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>hex</b>和bin<b class='flag-5'>文件</b>的區(qū)別

    單片機(jī)hex和bin文件的區(qū)別

    hex文件是可以燒寫到單片機(jī)中,被單片機(jī)執(zhí)行的一種文件格式,生成Hex
    發(fā)表于 11-15 09:07 ?5251次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>hex</b>和bin<b class='flag-5'>文件</b>的區(qū)別

    使用單片機(jī)控制LED燈的HEX文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)控制LED燈的HEX文件免費(fèi)下載。
    發(fā)表于 10-31 08:00 ?4次下載
    使用<b class='flag-5'>單片機(jī)</b>控制LED燈的<b class='flag-5'>HEX</b><b class='flag-5'>文件</b>免費(fèi)下載

    單片機(jī)燒錄hex文件是如何解析

    含有單片機(jī)的電子產(chǎn)品在量產(chǎn)的時(shí)候會(huì)用到.hex文件或者.bin。hex是十六進(jìn)制的,包含地址信息和數(shù)據(jù)信息,而bin文件是二進(jìn)制的,只有數(shù)據(jù)
    的頭像 發(fā)表于 11-07 10:33 ?6913次閱讀
    <b class='flag-5'>單片機(jī)</b>燒錄<b class='flag-5'>hex</b><b class='flag-5'>文件</b>是如何解析

    可以讀取hex文件的stc單片機(jī)下載器

    可以讀取hex文件的stc單片機(jī)下載器
    發(fā)表于 01-17 11:52 ?88次下載

    單片機(jī)中的hex和bin文件

    經(jīng)過這幾步后,程序下載工作就完成了,在以上的步驟中我們并沒有選擇要把程序下載到單片機(jī)的哪塊內(nèi)存中,即不需要設(shè)置地址。因?yàn)?b class='flag-5'>HEX文件內(nèi)部的信息已經(jīng)包括了地址。 單片機(jī)一般是下載
    的頭像 發(fā)表于 04-18 10:16 ?5708次閱讀

    STM32單片機(jī)Hex、Bin文件的區(qū)別及應(yīng)用詳解

    ? ? STM32、51等單片機(jī)程序經(jīng)過編譯后,生成的hex文件、bin文件,它們都是單片機(jī)燒寫文件
    的頭像 發(fā)表于 07-05 17:23 ?1.3w次閱讀

    單片機(jī)hex文件和bin文件有什么不同

    單片機(jī)程序編譯之后,除了生成hex文件之外還生成了bin文件,實(shí)際它們都是單片機(jī)的下載文件。
    發(fā)表于 01-26 16:09 ?2298次閱讀

    單片機(jī)hex、bin文件的區(qū)別

    單片機(jī)hex、bin文件的區(qū)別
    的頭像 發(fā)表于 09-21 17:38 ?2223次閱讀
    <b class='flag-5'>單片機(jī)</b>中<b class='flag-5'>hex</b>、bin<b class='flag-5'>文件</b>的區(qū)別

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

    使用C語言編寫,然后編譯成機(jī)器碼并燒錄到單片機(jī)的存儲(chǔ)器中。 Hex文件是一種用于存儲(chǔ)單片機(jī)程序的文件格式,它包含了程序的機(jī)器碼和一些附加信息
    的頭像 發(fā)表于 09-02 10:49 ?3831次閱讀
    百家乐投注杀手| 女神百家乐官网娱乐城| 大发888官网游戏平台| 百家乐官网麻将牌| 武胜县| 百家乐7scs娱乐场| 长方形百家乐官网筹码| 大发888卡| 百家乐投注翻倍方法| 真人百家乐官网开户须知| 水果老虎机的程序| 宝马百家乐官网的玩法技巧和规则 | 88娱乐城2| 百家乐tt娱乐网| 百家乐官网大赌城| 瑞发国际| 百家乐博娱乐赌百家乐的玩法技巧和规则 | 金沙足球投注网| 百家乐娱乐平台网| 大连百家乐官网商场| 百家乐官网开户就送现金| 大发888娱乐官网地址| 百家乐投注必胜法| 广州百家乐官网酒店用品制造有限公司| 大发888官方备用网址| 网络百家乐必胜投注方法| 戒掉百家乐官网的玩法技巧和规则| 承德县| 德州扑克排名| 新彩百家乐的玩法技巧和规则| 做生意布局风水| 百家乐官网赌博机有鬼吗| 游艇会娱乐城| 路劲太阳城金旭园| 百家乐赌博软件下载| 百家乐官网首选| 金宝博百家乐官网娱乐城| 大佬娱乐城怎么样| 百家乐资深| 澳门百家乐庄闲和| 百利宫百家乐官网的玩法技巧和规则|