Hex文件是可以燒寫到單片機中,被單片機執行的一種文件格式,生成Hex文件的方式由很多種,可以通過不同的編譯器將C程序或者彙編程序編譯生成hex。
Hex文件如果用特殊的程序來查看(一般記事本就可以實現)。打開後可發現,整個文件以行為單位,每行以冒號開頭,內容全部為16進位碼。Hex文件可以按照如下的方式進行拆分來分析其中的內容:
例如:
:020000040000FA , 我把它看做 0x02 0x00 0x00 0x04 0x00 0x00 0xFA
第一個 0x02 為數據長度。
緊跟著後面的0x00 0x00 為地址。
再後面的0x04為數據類型,類型共分以下幾類:
'00' Data Record
'01' End of File Record
'02' Extended Segment Address Record
'03' Start Segment Address Record
'04' Extended Linear Address Record
'05' Start Linear Address Record
然後,接著0x04後面的兩個 0x00 0x00就是數據。最後一個0xFA是校驗碼。
HEX文件的每一行都是這樣的格式:
Intel hex 由一條或多條記錄組成,每條記錄都由一個冒號「:」打頭,其格式如下:
:CCAAAARR...ZZ
其中:
CC
本條記錄中的數據字節數
AAAA
本條記錄中的數據在存儲區中的起始地址
RR
記錄類型:
00 數據記錄 (data record)
01 結束記錄 (end record)
02 段記錄 (paragraph record)
03 轉移地址記錄 (transfer address record)
...
數據域
ZZ
數據域校驗和
Intel hex文件記錄中的數字都是16進位格式,兩個16進位數字代表一個字節。CC域是數據域中的實際字節數,地址、記錄類型和校驗和域沒有計算在內。校驗和是取記錄中從數據字節計數域(CC)到數據域(...)最後一個字節的所有字節總和的2的補碼。
而Bin文件是最純粹的二進位機器代碼,沒有格式,或者說是"順序格式"按assembly code順序翻譯成binary machine code.由於分析出來Hex文件中的數據域ASCII碼表示的十六進位與二進位一一對應,而且我公司DSP又是16位的,以一個word為最小單位,所以四個十六進位ASCII碼代表一條機器指令單位或者地址.借於上面分析,編寫了工具代碼.大體原理是用fscanf函數在每行的數據域讀入四個ASCII碼,以短整形(short int 16bit)形式儲存,在把這個短整形變量順序fwrite到文件流中去即可.
舉一例說明:
表1
ORG 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;設堆棧
LOOP:
NOP
LJMP LOOP ;循環
END ;結束
表2
:03000000020040BB
:0700400075815F000200431F
表3
02 00 40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF 75 81 5F 00 02 00 43
表1為源程序,表2是彙編後得到的HEX文件,表3是由HEX文件轉換成的目標文件,也就是最終寫入EPROM的文件,它由編程器轉換得到,也可以由HEXBIN一類的程序轉換得到。學過手工彙編者應當不難找出表3與表1的一一對應關係,值得注意的是從02 00 40後開始的一長串『FF』,直到75 81,這是由於偽指令:ORG 040H造成的結果。
往期文章
👍五個階段判斷你的電路設計能力
👍零基礎怎麼學電路設計?
👍單片機按鍵設計的四個方案詳解
👍單片機17種常見的電路設計模塊
👍單片機最小系統解析(電源、晶振和復位電路)
👍六款簡單的開關電源電路設計原理圖詳解
👍五款蜂鳴器驅動電路原理圖
👍電容的分類與區別
👍你需要了解的與PCB差分對過孔有關的四件事
👍繼電器驅動電路匯總
👍步進電機驅動電路圖大全
👍數碼管驅動電路大全
👍談一談單片機開發的幾種調試方案
👍如何打造一份it項目計劃書
👍超聲波發生器電路圖大全
👍A/D轉換電路圖大全
👍USB轉TTL電路圖大全
👍SPI總線 通俗易懂講解
👍STM32存儲器理解
👍51單片機開發流程,你知道嗎?
👍485通信電路圖
👍四種直流電機驅動電路圖及設計思路講解,有圖有真相!
👍利用51單片機輸出PWM
👍51單片機寄存器功能一覽表
👍三極體基本電路原理解析
👍單片機學習路線分析
👍51單片機按鍵控制輸出PWM的佔空比
👍51單片機P0口原理
👍PCB的絲印多大才合適,你知道嗎?
👍51單片機和52單片機有什麼區別
👍單片機項目開發流程,經驗之談單片機學習路線分析
👍單片機學習路線分析
👍51單片機晶振電路原理
行業交流群
如果微信二維碼失效,請聯繫微信xiaocaoxsd
免責聲明:公眾號轉載作品均儘可能註明出處,該作品所有人的一切權利均不因本站而轉移。作者如不同意轉載,既請通知本站予以刪除或改正。轉載的作品可能在標題或內容上或許有所改動。