科普:Bin與Hex是什麼鬼

導讀 咱們在編譯生成固件的時候,有時候生成Hex文件有時候生成Bin文件,這兩種文件有什麼關係呢,它們存在的價值又是什麼呢?

科普:Bin與Hex是什麼鬼科普:Bin與Hex是什麼鬼

Hex文件和Bin文件是什麼html

Hex文件是以ASCII文本形式保存編譯後的二進制文件信息。Hex文件使用ASCII文本的形式保存Bin文件的內容和Bin文件的一些配置信息。Hex文件能夠由下載器(好比jlink)燒寫到MCU的ROM中。linux

Bin文件是MCU固件燒寫的最終形式,也就是說MCU的ROM中燒寫的內容徹底就是Bin文件的內容。htm

Hex文件和Bin文件的關係get

Hex文件能夠說是MCU固件的中間形式,由下載器的軟件根據Hex文件生成Bin文件再燒寫到MCU的ROM中。既然Bin文件是最終咱們想要的,那麼Hex文件有什麼存在價值?咱們爲何不直接生成Bin文件,卻要生成Hex文件呢?這就要從Hex文件的內容格式提及來了。編譯

Hex的內容格式table

從上面咱們知道Hex文件不僅是保存Bin文件的內容,還有一些配置信息。咱們以一個例子大概說下Hex文件的結構,見下圖:
科普:Bin與Hex是什麼鬼科普:Bin與Hex是什麼鬼變量

上圖的Hex文件總共6行的內容。每行都是以':'開始,以後是地址域、數據類型、數據域和校驗和。
科普:Bin與Hex是什麼鬼科普:Bin與Hex是什麼鬼軟件

最後一行的數據類型是0x01,表明文件結束了。
科普:Bin與Hex是什麼鬼科普:Bin與Hex是什麼鬼配置

Hex文件和Bin文件的存在價值下載

從上面的介紹中,咱們發現Hex文件中每行的內容,就像咱們發送串口數據的數據幀,而且最後一行還指示出文件結束了。咱們得出hex文件的兩個優勢:

  • 1. 使用ASCII文本保存固件信息,方便查看一些固件內容;
  • 2. 經過文件每行的校驗和與最後一行的文件結束標誌,在文件的傳輸與保存過程當中可以發現固件是否完整。

科普:Bin與Hex是什麼鬼科普:Bin與Hex是什麼鬼

Hex文件有更好的可讀性,最重要的是hex文件可以保證固件在保存與傳輸時的完整性。所以hex文件更適用於保存與傳輸。而Bin文件是純二進制文件,內部只包含程序編譯後的機器碼和變量數據。當文件損壞時,咱們也沒法知道文件已損壞。不過Bin文件做爲固件的最終形式,在使用串口下載程序或者遠程升級時,是不可替代的。

原文來自:http://www.toutiao.com/a6389936124517138690/

本文地址:http://www.linuxprobe.com/bin-hex-difference.html

相關文章
相關標籤/搜索