intel hex
檔案是記錄文字行的ascii文字檔案,在intel hex檔案中,每一行是乙個hex記錄,由十六進製制數組成的機器碼或者資料常量。intel hex檔案經常被用於將程式或資料傳輸儲存到rom、eprom,大多數程式設計器和模擬器使用intel hex檔案。
hex格式檔案以行為單位,每行由「:」(0x3a)開始,以回車鍵結束(0x0d,0x0a)。行內的資料都是由兩個字元表示乙個16進製制位元組,比如」01」就表示數0x01;」0a」,就表示0x0a。對於16位的位址,則高位在前低位在後,比如位址0x010a,在hex格式檔案中就表示為字串」010a」。下面為hex檔案中的一行:
:10000000ff0462ff051eff0a93ff0572ff0a93ffbc
「:」表示一行的開始。
「:」後的第1,2個字元「10」表示本行包含的資料的長度,這裡就是0x10即16個。
第3,4,5,6個字元「0000」表示資料儲存的起始位址,這裡表示從0x0000位址開始儲存16個資料,其中高位位址在前,低位位址在後。
第7,8個字元「00」表示資料的型別。該型別總共有以下幾種:
00 ----
資料記錄
01 ----檔案結束記錄
02 ----擴充套件段位址記錄
04 ----擴充套件線性位址記錄
這裡就是0x00即為普通資料記錄。
自後的32個字元就是本行包含的資料,每兩個字元表示乙個位元組資料,總共有16個位元組資料跟行首的記錄的長度相一致。
最後兩個字元表示校驗碼。
每個hex格式的最後一行都是固定為:
:00000001ff
以上的資訊其實就足夠進行hex轉bin格式的程式的編寫。首先我們只處理資料型別為0x00及0x01的情況。0x02表示對應的儲存位址超過了64k,由於我的程式設計器只針對64k以下的微控制器,因此在次不處理,0x04也是如此。
我的程式設計思路是從檔案中乙個乙個讀出字元,根據「:」判斷一行的開始,然後每兩個字元轉換成乙個位元組,並解釋其對應的意義。然後將資料從該行中剝離出來儲存到緩衝區中,並最終輸出到檔案中。
具體程式如下,該程式在vc2005下採用控制台專案編譯,需要在release下編譯,在debug模式中會提示乙個dll檔案無法找到,這可能是vc自身的錯誤。
// hextobin.cpp :
定義控制台應用程式的入口點。 //
#i nclude "stdafx.h"
#i nclude
#i nclude
typedef unsigned char byte; //
將兩個字元轉化為乙個位元組量
void chartobyte(char* pchar,byte* pbyte)
int _tmain(int argc, _tchar* argv)
//將檔案長度計算出來用於申請儲存資料的緩衝區
while (!feof(myfile))
rewind(myfile);
//因為是每兩個字元表示乙個位元組,所以最大的資料個數要少於檔案字元個數的一半
outbuf = (byte*)malloc(len/2);
memset(outbuf,0xff,len/2);
while (!feof(myfile))
totallen += datalen;}//
當資料型別為時,表示到了最後一行
if (datatype == 0x01)
//當資料型別為時,表示本行包含的是擴充套件段位址記錄
if (datatype == 0x02)
//當資料型別為時,表示本行包含的是擴充套件線性位址記錄
if (datatype == 0x04) }}
fclose(myfile);
printf("
請輸入儲存的bin格式檔案名:");
scanf_s("%s",filename);
if (fopen_s(&myfile,filename,"w") != 0)
for (i=0;i
return 0;
}
HEX檔案和BIN檔案格式的區別
hex檔案和bin檔案格式的區別 hex檔案和bin檔案是我們經常碰到的2種檔案格式。下面簡單介紹一下這2種檔案格式的區別 1 hex檔案是包括位址資訊的,而bin檔案格式只包括了資料本身。2 bin檔案格式 對二進位制檔案而言,其實沒有 格式 檔案只是包括了純粹的二進位制資料。3 hex檔案格式 ...
HEX檔案和BIN檔案格式的區別
在微控制器開發中hex檔案和bin檔案是非常常見的燒寫檔案格式,以常用開發環境keil為例,分別建立hex和bin檔案,比如 1 建立hex 在keil裡面可以通過勾選 魔法棒 output creat hex file 讓工程輸出hex檔案。2 建立bin 在keil中在 魔法棒 user aft...
彎曲評論上關於SOC的一段文章 整理
進行了熱烈的討論。這個文章本無關乎soc,不過,有業界同仁willchen將話題引到了soc上,並發表了一番言論 整理如下 btw,看著willchen的文字,讓我想到了segelo soc是所有安全售前的痛。其實不只是soc,安全審計平台也是能把所有產品很好串起來,並形成技術壁壘的好東西。可惜我在...