單片機hex和bin文件的區別

2022-01-03 電子芯

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

免責聲明:公眾號轉載作品均儘可能註明出處,該作品所有人的一切權利均不因本站而轉移。作者如不同意轉載,既請通知本站予以刪除或改正。轉載的作品可能在標題或內容上或許有所改動。

相關焦點

  • 單片機下載文件:HEX文件和BIN文件的區別
    單片機程序寫好之後,我們都要把程序下載到單片機的內存中,單片機才會按照程式設計師的邏輯執行命令實現功能。
  • 單片機中hex、bin文件的區別
    單片機程序寫好之後,我們都要把程序下載到單片機的內存中,單片機才會按照程式設計師的邏輯執行命令實現功能。之前也講過下載單片機的幾種方式,比如ISP下載,JTAG下載,下載文件的格式最常見的是hex文件,這個格式大家都是知道的,還有一種bin文件是單片機的下載文件。下面介紹這兩種格式的區別。
  • bin文件轉換為hex文件C語言實現
    文件可能大家再熟悉不過了,對,我們大學時學習的51單片機編寫的代碼在keil上編譯後就生成了hex文件。那bin文件又是什麼意思呢,它又和hex文件的區別在哪?這也不是本文的重點,下面簡單的描述下:最通俗的來講,hex是帶地址的,用下載器下載時,不需要設置偏移地址,它是文件流格式的,都是標準的ASCII碼。而bin文件是不帶地址的,全部是二進位數據流,打住一下,其實就是我們所謂的機器代碼。有興趣的同學,可以嘗試著用反彙編,得到的就是彙編代碼了。
  • 關於bin、hex和axf文件格式的描述
    本文接著上一篇文章講述兩點內容:1.格式轉換2.bin、hex和axf的描述上一篇文章講述的人【MDK-ARM如何生產Bin文件】,只是簡單的講述了實現過程,這裡再簡單提一下有朋友問的問題:fromelf的格式和使用。
  • 輕鬆理解bin、hex、axf和elf文件格式
    ,bin、hex、axf和elf這四種格式的文件很常見。作為普通嵌入式軟體開發者,可能只知道如何使用他們,並不會在意這些文件裡面具體是什麼內容。bin 和 hex 大家都不陌生,就是我們下載到晶片的程序文件。bin文件只是單純的程序數據,hex除程序數據之外還有一定格式數據。而 axf 和 bin、 hex 同樣也屬於程序文件,差別在於 axf 具有更多的調試信息。
  • 程序燒錄中SREC、Hex、Bin文件格式有啥區別?一文看懂!
    Bin文件這種文件格式最簡單最直接,直接存儲flash memory的raw data。Bin文件有其優點和缺點——簡單直接,是優點也是缺點。例如對於bin文件,可以在前面128個字節中存放一些諸如CRC32,Length等信息,以方便升級程序的解析。空白處填充特定內容Hex文件和Srec文件中,是允許有空隙的,即某些地址是沒有內容的。
  • HEX文件如何直接放在程序數組中是直接使用?
    文件直接在APP中寫入到Flash的指定位置,所以就需要查看BootLoader代碼生成的bin文件的具體內容,然後通過static const uint8_t bootload_src[]__attribute__((at(0x08000000)))={}寫入Flash的指定位置然而網上的bin查看器以及可以打開bin
  • 51單片機開機復位、按鍵復位原理講解
    按鍵復位:按鍵按下之前,電解電容是在開機復位後的狀態,也就是電容充滿電,Reset為0V,按鍵按下後,電解電容和按鍵組成迴路,電解電容開始放電,Reset電壓升高0V到5V,當升高到1.5V時,Reset變為高電平,升高到5V,電解電容完全放電完成,由於按鍵已經放開,所以電解電容開始充電,此後的過程和開機啟動相同,所以按鍵復位的高電平維持時間比開機復位長
  • 單片機的Bootloader,可以實現用戶輕鬆升級程序
    去某新能源大廠出了一次差,這次出差是為了升級程序解決Bug,需要給單片機重新燒錄.hex文件,用戶已經將產品封裝起來,無法開蓋,只能使用
  • 單片機怎麼燒錄程序_單片機燒錄程序步驟說明
    只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調製電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。
  • 單片機編程軟體大佬:明確單片機編程軟體編寫單片機程序步驟
    機器彙編是通過彙編軟體將源程序變為機器碼,用於MCS-51單片機的彙編軟體有早期的A51,隨著單片機開發技術的不斷發展,從普遍使用彙編語言到逐漸使用高級語言開發,單片機的開發軟體也在不斷發展,Keil軟體是目前最流行開發MCS-51系列單片機的軟體,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。
  • 單片機如何燒錄程序?
    廣告單片機燒錄程序和調試方法。
  • 學51單片機必看!51單片機導論
    引腳功能:VCC(40腳)是單片機電源正,GND(20腳)是電源正;P0、P1、P2、P3是四組輸入輸出口,顯高電阻狀態,對外能發出高電平和低電平;10腳是串行輸入口,11腳是串行接收口;12、13腳是外部中斷輸入;18、19腳用於外接時鐘;9腳是復位引腳,有兩個機器周期以上的高電平則使單片機復位;其它引腳不要求掌握。
  • FPGA入門--在FPGA中實現8051單片機
    RAM中執行編寫好的C代碼,成功地把FPGA變成了8051單片機…也許,這就是傳說中的變通吧…接下來,跟大家分享:如何在FPGA中實現開源8051單片機如何將編寫好的c程序載入FPGA中如何在FPGA中讓51單片機執行c程序以上操作均以北郵版FPGA開發板為藍本,如果換用其他的開發板,請適當修改相關配置
  • 單片機keil 常見問題
    一、混合編程1、模塊內接口:使用如下標誌符:#pragma asm彙編語句#pragma endasm注意:如果在c51程序中使用了彙編語言,注意在keil編譯器中需要激活Properties中的「Generate Assembler SRC File」 和「
  • 單片機簡介
    單片機簡介數字電路簡介在一個控制系統中, 單片機是電路的一部分, 單片機中的程序是針對其所在的電路編寫的。因此,要對單片機編程並實現一定的功能,必須了解整個系統的電路圖。單片機編程是針對某個特定的電路進行的單片機編程是針對某個特定的電路進行的, 這一點和普通的編程不一樣。 編程時很可能要經常參照電路圖。
  • 單片機小白(13):點亮第一個LED——好的開始,成功的一半
    3、源文件新建好了。源文件只是一個獨立的文本文件,而工程文件現在和剛剛新建的源文件還是完全獨立、沒有關聯的。這一點也充分體現了,單片機編程是和實際硬體電路息息相關的,程序和電路要配套,才能正常運行。#includesbit LED = P1^0;void main(){    LED = 0;    while(1);}
  • IAR中eww、ewp、ewd···等各文件的含義和用途
    看過我代碼的人,或許都會發現在同工程文件目錄下面有一個.bat文件「雙擊刪除「編譯產生文件」.bat」,這個文件的作用就是刪除一些編譯過程中產生的文件,這些文件是可以刪除,而對工程不會產生影響的文件,在我們打包工程原始碼保存,或者提交代碼時不需要的文件。
  • 圖形化編程玩51單片機(十七)-數字鐘
    我們學習單片機的同學們,大家都想用自己學到的單片機知識來做一個有實用價值的電子產品。那麼數字鐘就是最好的首選。1,邏輯思維相對簡單,容易理解,比如:我們都知道60秒=1分鐘;60分鐘=1小時;24小時=1天,;所以,到了24小時清零,再循環就可以了。2,儘管邏輯相對簡單,但要運用我們單片機的多個器件的配合使用。
  • Arduino-使用IR遙控器控制LED - 【單片機教程-Arduino】
    合作或投稿請發郵件到:rebaby@qq.com【單片機】編譯報導 | 項目作者:RuiSantos分享我最近完成的一個項目:使用遙控器和Arduino控制某些LED。但是您可以將其應用於任何電子設備,例如電動機,照明燈。