EDA365电子工程师网

标题: 教你一眼看出.HEX和.BIN文件格式 [打印本页]

作者: duzy    时间: 2016-6-16 10:41
标题: 教你一眼看出.HEX和.BIN文件格式
HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别:
+ Q5 ^8 K6 _8 w; C: O7 K4 Q- p& k" i% `4 L5 [7 O
1 - HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身7 ~  y. j, D, X; A
         在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。而烧写BIN
# p; j% Z/ E$ s/ C         文件的时候,用户是一定需要指定地址信息的。6 C0 y( \% {  p- s( V! V! ^
         ' v8 c% k9 Z& F! X
         , L* q# P+ u# u+ E7 D
3 - BIN文件格式9 \8 g7 }+ m  D
         对二进制文件而言,其实没有”格式”。文件只是包括了纯粹的二进制数据。% I/ B3 _" }5 @2 Y0 ^7 D
         ( B( G- V8 t! \3 T! m
         
5 }8 |* P8 A% o' M* |8 I$ G4 - HEX文件格式
- K  {3 s% j* x3 [4 z         HEX文件都是由记录(RECORD)组成的。在HEX文件里面,每一行代表一个记录。记录的基本格式为:& j* R6 @2 s  p  k% w: d2 o
& e5 F' M2 y0 \; g4 L
+---------------------------------------------------------------+
6 k2 Y( [% R! o# p         |   RECORD  | RECLEN |  LOAD  | RECTYPE | INFO or DATA | CHKSUM |% T) w4 p7 w1 `9 |9 f2 g  w, X% b( m
         |  MARK ':' |        | OFFSET |         |              |        |) r  k+ W! V  W5 V3 e: r+ @) l
         +---------------------------------------------------------------+
& E6 T5 {% E9 B% B4 _         |  1-byte   | 1-byte | 2-byte | 1-byte  |    n-byte    | 1-byte |) a9 j1 {+ b* E6 f, u' r9 l2 e
         +---------------------------------------------------------------+: }* K: L8 h/ |! z5 i
记录类型包括:- U- }. S/ v* u& R9 l2 X% i) P6 D
         '00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
9 z' [$ q. m$ L% J8 b         '01' End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾! l' j: a% A. `
         '04' Extended Linear Address Record: 用来标识扩展线性地址的记录5 i! q( e0 @1 J
         '02' Extended Segment Address Record: 用来标识扩展段地址的记录: i( E2 [" E6 k3 d7 b; S/ M2 O
         
! {+ Y. s' N* \8 F         在上面的后2种记录,都是用来提供地址信息的。每次碰到这2个记录的时候,都可以根据记录计算出一个“基”地址。& y6 R) ~/ R! ?2 W
         对于后面的数据记录,计算地址的时候,都是以这些“基”地址为基础的。
3 ~% O2 B- ^0 e' s9 U9 @0 O( T         
) D) _9 A! D' t6 K         数据记录的具体格式:# \4 R& T" G+ F, Y
         +---------------------------------------------------------------+
& ~) R* o* t+ {* @+ t         |   RECORD  | RECLEN |  LOAD  | RECTYPE | INFO or DATA | CHKSUM |$ X- R& e6 ]- R! y  P! Z+ M
         |  MARK ':' |        | OFFSET |  '00'   |              |        |. K( P1 j  y: G
         +---------------------------------------------------------------+  K/ R8 C& y/ t# d
         |  1-byte   | 1-byte | 2-byte | 1-byte  |    n-byte    | 1-byte |
8 R$ _5 ^- [* l9 D         +---------------------------------------------------------------+         0 K7 F% Q1 I7 [- d
         
2 v/ m9 O1 X$ n0 Z' V8 c' g         看个例子:
4 z8 @  e# O$ o0 e; e5 ~        :020000040000FA
) P& u  Y7 D, R) ?8 T( J        :10000400FF00A0E314209FE5001092E5011092E5A38 v3 `1 F3 }+ F2 x2 z) W
        :00000001FF         ( H# B1 A: e% v/ D( |
       ' |) U' J5 c# p! H" b
        对上面的HEX文件进行分析:* `6 H* c8 j" ?2 f* v2 D; ^% ?
        第1条记录的长度为02,LOAD OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。数据为0000,校验和为9 X6 r7 Z8 h! f. j; |( q
        FA。从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为0X0000。后面的数据记录都以这个地址为基& \) _* V& F2 y) r" }' X% F% k) R
        地址。
' j' E- j: B2 j  S- s) b        第2条记录的长度为10(16),LOAD OFFSET为0004,RECTYPE为00,说明该记录为数据记录。4 S) T8 ^, z/ _% B  K
        数据为FF00A0E314209FE5001092E5011092E5,共16个BYTE。这个记录的校验和为A3。此时的基地址为0X0000,加上OFFSET,
' p3 B, f2 X- L" P! [        这个记录里的16BYTE的数据的起始地址就是0x0000 + 0x0004 = 0x0004.5 `" }" n# K' _4 q$ X
        第3条记录的长度为00,LOAD OFFSET为0000,TYPE = 01,校验和为FF。说明这个是一个END OF FILE RECORD,标识- C- ~5 Q/ Z; e& i+ C$ t
        文件的结尾。
7 W- [; J" R- y. @3 {* W5 I      
$ H3 i  J/ {$ R        在上面这个例子里,实际的数据只有16个BYTE:FF00A0E314209FE5001092E5011092E5,其起始地址为0x46 O( Y: q! @. H, |- s$ _* P9 Q
           , ^5 F: `. p0 `) n0 \% v6 Q7 F: q

9 p: X( `$ O3 ]* l( k2 w5 - HEX文件和BIN文件大小有区别
! l/ Y6 M' Y& h     HEX文件是用ASCII来表示二进制的数值。例如一般8-BIT的二进制数值0x3F,用ASCII来表示就需要分别表示字符'3'
$ F) x" G2 v" M) @! A/ M     和字符'F',每个字符需要一个BYTE,所以HEX文件需要 > 2倍的空间。! D, a& f% V6 Q  F. U1 F0 B
     对一个BIN文件而言,你查看文件的大小就可以知道文件包括的数据的实际大小。而对HEX文件而言,你看到的文件$ \" e" M" h( k; k9 G' n
     大小并不是实际的数据的大小。一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。
1 \$ B# ]' {/ c. i" [
$ Q7 U3 i  b4 c8 o
4 t% P, r6 V2 X6 M! d/ b
: I. `: E8 w2 m要想详细了解HEX文件格式, 请参见

INTEL HEX PDF文档.pdf

18.49 KB, 下载次数: 1, 下载积分: 威望 -5


作者: Gegu    时间: 2016-6-20 14:08
感谢分享!!!- ?% w: ]0 e9 \# B) L





欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2