這次我將在原來的基礎上(http://www.cnblogs.com/libra13179/p/5787084.html)繼續講解HEX文件的格式
打開app_valid_setting_apply.hex如下
:020000040003F7 :10FC00000100000000000000FE000000FFFFFFFFF9 :00000001FF
分析如下
對數據幀結構
|
補充
數據類型
'00' Data Rrecord:用來記錄數據,HEX文件的大部分記錄都是數據記錄
'01' End of File Record:用來標識文件結束,放在文件的最后,標識HEX文件的結尾
'02' Extended Segment Address Record:用來標識擴展段地址的記錄
'03' Start Segment Address Record:開始段地址記錄
'04' Extended Linear Address Record:用來標識擴展線性地址的記錄
'05' Start Linear Address Record:開始線性地址記錄
校驗碼
以020000040003F7為例子
具體算法為 0x100-((0x02+0x00+0x00+0x04+0x00+0x03)%256)= 0xF7
相關校驗測試程序:
下面算法實現記錄的校驗,校驗成功返回1,失敗返回0
//代碼引用http://blog.chinaunix.net/uid-24789420-id-1635048.html bit AnalyseHEX(char hex[],int len) { unsigned char i=1; unsigned char data; int cc=0; char temp[2]; do { temp[0] = hex[i++]; temp[1] = hex[i++]; sscanf(temp,"%x",&data); cc += data; } while (i<(len-2)); cc%=256; cc=0x100-cc; temp[0] = hex[i++]; temp[1] = hex[i++]; sscanf(temp,"%x",&data); return (cc==data)?1:0; } int _tmain(int argc, _TCHAR* argv[]) { char hex[]="::020000040000FA"; AnalyseHEX(hex,sizeof(hex)); }