Bin与Hex文件解析
| 我們在編譯生成固件的時候,有時候生成Hex文件有時候生成Bin文件,這兩種文件有什么關系呢,它們存在的價值又是什么呢? | 
Hex文件和Bin文件是什么
Hex文件是以ASCII文本形式保存編譯后的二進制文件信息。Hex文件使用ASCII文本的形式保存Bin文件的內容和Bin文件的一些配置信息。Hex文件可以由下載器(比如jlink)燒寫到MCU的ROM中。
Bin文件是MCU固件燒寫的最終形式,也就是說MCU的ROM中燒寫的內容完全就是Bin文件的內容。
Hex文件和Bin文件的關系
Hex文件可以說是MCU固件的中間形式,由下載器的軟件根據Hex文件生成Bin文件再燒寫到MCU的ROM中。既然Bin文件是最終我們想要的,那么Hex文件有什么存在價值?我們為什么不直接生成Bin文件,卻要生成Hex文件呢?這就要從Hex文件的內容格式說起來了。
Hex的內容格式
從上面我們知道Hex文件不只是保存Bin文件的內容,還有一些配置信息。我們以一個例子大概說下Hex文件的結構,見下圖:
上圖的Hex文件總共6行的內容。每行都是以':'開始,之后是地址域、數據類型、數據域和校驗和。
最后一行的數據類型是0x01,代表文件結束了。
Hex文件和Bin文件的存在價值
從上面的介紹中,我們發現Hex文件中每行的內容,就像我們發送串口數據的數據幀,并且最后一行還指示出文件結束了。我們得出hex文件的兩個優點:
- 1. 使用ASCII文本保存固件信息,方便查看一些固件內容;
 
- 2. 通過文件每行的校驗和與最后一行的文件結束標志,在文件的傳輸與保存過程中能夠發現固件是否完整。
 
Hex文件有更好的可讀性,最重要的是hex文件能夠保證固件在保存與傳輸時的完整性。因此hex文件更適用于保存與傳輸。而Bin文件是純二進制文件,內部只包含程序編譯后的機器碼和變量數據。當文件損壞時,我們也無法知道文件已損壞。不過Bin文件作為固件的最終形式,在使用串口下載程序或者遠程升級時,是不可替代的。
參考:科普:Bin與Hex是什么鬼 | 《Linux就該這么學》
總結
以上是生活随笔為你收集整理的Bin与Hex文件解析的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: FFmpeg:视频转码、剪切、合并、播放
 - 下一篇: 电路分析基础复习整理