找回密码
 注册
关于网站域名变更的通知
查看: 527|回复: 2
打印 上一主题 下一主题

教你一眼看出.HEX和.BIN文件格式

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-6-16 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别:
* [& N) G" e4 m
  g2 p3 U9 m6 ]. L: Q- E7 ]1 - HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身8 V8 V2 a1 \+ \. _8 u! O
         在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。而烧写BIN
3 x  Y5 t3 Y3 L) m: k         文件的时候,用户是一定需要指定地址信息的。
9 R$ s0 C* H* |% ~1 X2 y% [9 ?         
5 f: ?. |1 B4 v, T. `         ( E) F  {' N7 m- v. [0 n0 Y
3 - BIN文件格式( T: z1 E: a5 g! p* W
         对二进制文件而言,其实没有”格式”。文件只是包括了纯粹的二进制数据。
7 O( v3 B  x0 n$ Z! Q# A+ P* E         - a- n$ m6 A6 f2 T4 Y6 V
         # d/ C8 z0 b) P7 q
4 - HEX文件格式1 Y! h. @. Z8 r3 g  P
         HEX文件都是由记录(RECORD)组成的。在HEX文件里面,每一行代表一个记录。记录的基本格式为:2 R5 E2 G+ r! I" k  L2 @6 P( P

) k8 l1 O3 B/ f8 y+---------------------------------------------------------------+" Q: m6 z7 t) f5 `3 Z9 q: y( K
         |   RECORD  | RECLEN |  LOAD  | RECTYPE | INFO or DATA | CHKSUM |
0 ^% s! K/ g3 N         |  MARK ':' |        | OFFSET |         |              |        |' r! c: [: ^$ v1 f8 k0 `
         +---------------------------------------------------------------+% F3 b+ A5 |/ N1 s# T+ S9 f% r8 k
         |  1-byte   | 1-byte | 2-byte | 1-byte  |    n-byte    | 1-byte |1 L+ G1 ^+ q# R8 S6 o; d3 B
         +---------------------------------------------------------------+6 A0 a: V# y; O) w8 j8 J
记录类型包括:
  ]1 [- W+ M5 N# N         '00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
0 d: a5 z& P1 p( W) ~         '01' End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾% e) `, `; L. K! g4 p2 H' e: v
         '04' Extended Linear Address Record: 用来标识扩展线性地址的记录
$ i7 g) F8 `; {# u- G         '02' Extended Segment Address Record: 用来标识扩展段地址的记录* j$ L& l4 s2 n/ |. S- f2 E; Q
         5 I+ X6 }6 ?0 Z% C' g
         在上面的后2种记录,都是用来提供地址信息的。每次碰到这2个记录的时候,都可以根据记录计算出一个“基”地址。& P( X4 n! W8 V$ m  ~7 r4 b& Z
         对于后面的数据记录,计算地址的时候,都是以这些“基”地址为基础的。
& h" E0 r$ a0 r$ ^$ b" ?9 I         & ~1 V1 I1 ~; u( g8 m5 l) r1 T
         数据记录的具体格式:9 L* N, d( r: m
         +---------------------------------------------------------------+& S4 {5 z, `3 J4 m
         |   RECORD  | RECLEN |  LOAD  | RECTYPE | INFO or DATA | CHKSUM |
1 e: Z; E$ M3 q0 ]- w1 @         |  MARK ':' |        | OFFSET |  '00'   |              |        |
5 C1 H+ `) ^! K% o: q5 x  D3 u         +---------------------------------------------------------------+
1 C  {% t! F5 K: K         |  1-byte   | 1-byte | 2-byte | 1-byte  |    n-byte    | 1-byte |/ @+ W% j4 O: ^( y
         +---------------------------------------------------------------+         
3 i1 l0 X9 \, R         5 R  l- u0 a/ E6 f. ~
         看个例子:& S* w' f  z% d9 W
        :020000040000FA$ {% m4 C; J$ C7 K. s" q  A
        :10000400FF00A0E314209FE5001092E5011092E5A3
, W( @0 Z* N# W% x3 r+ x) j, ?$ _8 p        :00000001FF         1 R3 g$ X  T" a. \6 l
      
5 `+ S4 w. J/ S* Q4 j        对上面的HEX文件进行分析:
6 j* y4 f0 ?; D" p; X7 ~        第1条记录的长度为02,LOAD OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。数据为0000,校验和为
) q; M: d/ s2 w( l7 ?5 J' W        FA。从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为0X0000。后面的数据记录都以这个地址为基
; [8 ]: D) _6 [* A1 R( N        地址。
, B/ W2 i; b3 `        第2条记录的长度为10(16),LOAD OFFSET为0004,RECTYPE为00,说明该记录为数据记录。
- A! h+ z* `8 {        数据为FF00A0E314209FE5001092E5011092E5,共16个BYTE。这个记录的校验和为A3。此时的基地址为0X0000,加上OFFSET,& Z3 i- f" I7 P" y6 j4 \
        这个记录里的16BYTE的数据的起始地址就是0x0000 + 0x0004 = 0x0004.9 t# E2 d7 Q: z: R- L7 k
        第3条记录的长度为00,LOAD OFFSET为0000,TYPE = 01,校验和为FF。说明这个是一个END OF FILE RECORD,标识0 @  P& L6 d, @: e' N
        文件的结尾。( P4 i! F; C7 m# Q. h/ I) b
       5 y% L4 j, g% x8 o
        在上面这个例子里,实际的数据只有16个BYTE:FF00A0E314209FE5001092E5011092E5,其起始地址为0x4$ i1 I4 D8 q( k$ H
           % {+ F) S2 o" F& X

% x) e- z7 h$ I4 H5 - HEX文件和BIN文件大小有区别
9 g! @. f7 O" i# \. N     HEX文件是用ASCII来表示二进制的数值。例如一般8-BIT的二进制数值0x3F,用ASCII来表示就需要分别表示字符'3'4 A! A$ }& ^0 X5 q6 d$ ]
     和字符'F',每个字符需要一个BYTE,所以HEX文件需要 > 2倍的空间。
- W5 e# _/ k" i- g0 d) }( \     对一个BIN文件而言,你查看文件的大小就可以知道文件包括的数据的实际大小。而对HEX文件而言,你看到的文件
+ C! o" F5 V9 n& |2 ?     大小并不是实际的数据的大小。一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。
5 a9 J' y6 W& r7 v8 b# j8 w" z0 P3 {/ |- p% O, f3 n
0 l" S$ K( f7 l- I$ M3 b* M: @
" y! k, F, W# L. Y7 _
要想详细了解HEX文件格式, 请参见

INTEL HEX PDF文档.pdf

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

该用户从未签到

3#
发表于 2019-2-18 17:38 | 只看该作者
不错,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-4 16:48 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表