BIN文件與NB0的區別

用PB編譯的鏡像文件,一般都會同時以BIN文件和NB0文件兩種形式給出。

  NB0文件是地址空間的一個完整的映像文件,相當於地址空間的硬拷貝。

  BIN文件是一種二進制ROM映像文件格式,同NB0文件相比,它壓縮了無效的數據。BIN文件中包含了文件頭和許多的段,每個段都給出了在實際映像中的首地址、長度、校驗碼和數據。

BIN文件的詳細格式如下:

文件頭(長度:7字節,內容固定),相當於字符串“B000FF”加一個回車符

42 30 30 30 46 46 0A

緊跟着的是整個映像的基本信息:(8字節)

00 00 00 00    00 00 00 00

映射到的首地址 整個映像的長度

接下來是各個段的定義

00 00 00 00  00 00 00 00  00 00 00 00   00 00 …… 00 00

段的首地址 段的長度 校驗碼 映像數據,長度已給出

每個段的定義都同上面一樣。

注:NB0文件是地址空間的一個完整的映像文件,相當於地址空間的硬拷貝。

—————————————–

4 月 23 日

今天生產上反映有一臺計算機燒寫nk.bin不能通過校驗,上去看了一下,我燒寫時習慣把nk.bin直接拉到workspace中,試了一下,拉過去提示不是有效的文件,用md5校驗了一下跟下發的md5對比發現校驗變了,雖然文件大小沒變。懷疑是病毒所致。

結論: 1. 下發軟件時同時下發文件的MD5還是很有必要的;

2. 多虧是用.bin文件通過網絡下載內核,才提前發現了問題,如果

用其他方式燒寫.nb0文件,這個問題可能不容易發現,導致內核

不穩定。

—————————————–

———————–

在H-JTAG論壇裏摘錄了下邊的一段:

HEX文件和BIN文件格式的區別

HEX文件和BIN文件是我們經常碰到的2種文件格式。下面簡單介紹一下這2種文件格式的區別:

1 - HEX文件是包括地址信息的,而BIN文件格式只包括了數據本身
在燒寫或下載HEX文件的時候,一般都不需要用戶指定地址,因爲HEX文件內部的信息已經包括了地址。而燒寫BIN
文件的時候,用戶是一定需要指定地址信息的。

3 - BIN文件格式
對二進制文件而言,其實沒有”格式”。文件只是包括了純粹的二進制數據。

4 - HEX文件格式
HEX文件都是由記錄(RECORD)組成的。在HEX文件裏面,每一行代表一個記錄。記錄的基本格式爲:
+—————————————————————+
| RECORD | RECLEN | LOAD | RECTYPE | INFO or DATA | CHKSUM |
| MARK ':' | | OFFSET | | | |
+—————————————————————+
| 1-byte | 1-byte | 2-byte | 1-byte | n-byte | 1-byte |
+—————————————————————+

記錄類型包括:
'00' Data Rrecord:用來記錄數據,HEX文件的大部分記錄都是數據記錄
'01' End of File Record: 用來標識文件結束,放在文件的最後,標識HEX文件的結尾
'04' Extended Linear Address Record: 用來標識擴展線性地址的記錄
'02' Extended Segment Address Record: 用來標識擴展段地址的記錄

在上面的後2種記錄,都是用來提供地址信息的。每次碰到這2個記錄的時候,都可以根據記錄計算出一個“基”地址。
對於後面的數據記錄,計算地址的時候,都是以這些“基”地址爲基礎的。

數據記錄的具體格式:
+—————————————————————+
| RECORD | RECLEN | LOAD | RECTYPE | INFO or DATA | CHKSUM |
| MARK ':' | | OFFSET | '00' | | |
+—————————————————————+
| 1-byte | 1-byte | 2-byte | 1-byte | n-byte | 1-byte |
+—————————————————————+

看個例子:
:020000040000FA
:10000400FF00A0E314209FE5001092E5011092E5A3
:00000001FF

對上面的HEX文件進行分析:
第1條記錄的長度爲02,LOAD OFFSET爲0000,RECTYPE爲04,說明該記錄爲擴展段地址記錄。數據爲0000,校驗和爲
FA。從這個記錄的長度和數據,我們可以計算出一個基地址,這個地址爲0X0000。後面的數據記錄都以這個地址爲基
地址。
第2條記錄的長度爲10(16),LOAD OFFSET爲0004,RECTYPE爲00,說明該記錄爲數據記錄。
數據爲FF00A0E314209FE5001092E5011092E5,共16個BYTE。這個記錄的校驗和爲A3。此時的基地址爲0X0000,加上OFFSET,
這個記錄裏的16BYTE的數據的起始地址就是0×0000 + 0×0004 = 0×0004.
第3條記錄的長度爲00,LOAD OFFSET爲0000,TYPE = 01,校驗和爲FF。說明這個是一個END OF FILE RECORD,標識
文件的結尾。

在上面這個例子裏,實際的數據只有16個BYTE:FF00A0E314209FE5001092E5011092E5,其起始地址爲0×4

4 - HEX文件和BIN文件大小有區別
HEX文件是用ASCII來表示二進制的數值。例如一般8-BIT的二進制數值0×3F,用ASCII來表示就需要分別表示字符'3'
和字符'F',每個字符需要一個BYTE,所以HEX文件需要 > 2倍的空間。
對一個BIN文件而言,你查看文件的大小就可以知道文件包括的數據的實際大小。而對HEX文件而言,你看到的文件
大小並不是實際的數據的大小。一是因爲HEX文件是用ASCII來表示數據,二是因爲HEX文件本身還包括別的附加信息。

要想詳細瞭解HEX文件格式,請GOOGLE INTEL HEX,就能找到詳細的PDF文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章