找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 51|回复: 1
打印 上一主题 下一主题

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

[复制链接]

163

主题

525

帖子

1236

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

EDA365欢迎您!

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

x
HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别:
. A8 _) i4 R, F3 J) `, _; X$ W
' t: m! X. ~, [+ u  C. }! X1 - HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身
& M- j2 _) {: b$ t9 g         在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。而烧写BIN
+ E# R9 ]6 u; q; k/ c) \( Q         文件的时候,用户是一定需要指定地址信息的。5 s3 w& s7 T( z; l4 F
         # k( U1 B5 I" x# N6 n: X& f7 d
         - e  Z/ |  z& A$ ]
3 - BIN文件格式  r& V. G' l2 s& a6 K+ T# k5 P. F
         对二进制文件而言,其实没有”格式”。文件只是包括了纯粹的二进制数据。
- F% I) }- k0 X7 X         6 t3 L6 A$ D% f; m+ j; M
         
0 \2 O, |) r: l3 {; t; h4 - HEX文件格式" o8 U9 d8 a! d. W
         HEX文件都是由记录(RECORD)组成的。在HEX文件里面,每一行代表一个记录。记录的基本格式为:
8 {& h* n0 H! D! a5 ?6 v0 r4 k  s! y/ p0 ?; a2 ^
+---------------------------------------------------------------+) T1 o. e/ `/ z1 W) G
         |   RECORD  | RECLEN |  LOAD  | RECTYPE | INFO or DATA | CHKSUM |
9 L/ ^: x8 m$ M  E; j         |  MARK ':' |        | OFFSET |         |              |        |
/ y7 E/ D& G1 e: P, g         +---------------------------------------------------------------+9 X5 q, w. M2 ?3 w
         |  1-byte   | 1-byte | 2-byte | 1-byte  |    n-byte    | 1-byte |' A: k3 }) b( B) P, w! L- y( T
         +---------------------------------------------------------------+6 }9 h5 I3 T, t. s8 N4 M9 P' ~$ N
记录类型包括:  |' P& W9 r8 ]) F* c
         '00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
( I  R( q5 M/ ]1 Z  c& W2 y         '01' End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾$ _9 n! v9 @' F3 A, F. T# B  G
         '04' Extended Linear Address Record: 用来标识扩展线性地址的记录; Y+ a7 F/ y# V
         '02' Extended Segment Address Record: 用来标识扩展段地址的记录
9 O6 e* \/ Q% u7 F1 D         - ]  Z0 L8 j' |. M0 g
         在上面的后2种记录,都是用来提供地址信息的。每次碰到这2个记录的时候,都可以根据记录计算出一个“基”地址。
7 O; v/ I* P8 L  o4 F) e         对于后面的数据记录,计算地址的时候,都是以这些“基”地址为基础的。* H, @8 j% k" H% F! b& k, @4 H
         ; V8 n2 B/ Q/ q4 {) u
         数据记录的具体格式:& n' N1 g5 N8 e9 a1 u& T; s8 x7 }
         +---------------------------------------------------------------+6 N5 x7 |) c8 T( I8 W- F( a! d
         |   RECORD  | RECLEN |  LOAD  | RECTYPE | INFO or DATA | CHKSUM |
3 U! z3 \. R& G- \4 M0 r         |  MARK ':' |        | OFFSET |  '00'   |              |        |! F! `3 B  U8 t4 i
         +---------------------------------------------------------------+) Q# l( [3 i7 ?3 k$ c$ W0 b' F
         |  1-byte   | 1-byte | 2-byte | 1-byte  |    n-byte    | 1-byte |
. c/ l1 G1 j" @/ @; e5 I: K         +---------------------------------------------------------------+         3 t; ?- t! p/ |# \
         7 s# S# p8 b* i5 \4 V$ v
         看个例子:3 h. P" \4 b! N
        :020000040000FA
) q+ i# Z5 L" I        :10000400FF00A0E314209FE5001092E5011092E5A3
4 p" `% @; C* H9 o        :00000001FF         
! [( f0 z9 `. u) a+ w* R( G      
# b& p& A4 Z8 S9 `        对上面的HEX文件进行分析:% k8 b8 q0 ~" }1 X: o/ W
        第1条记录的长度为02,LOAD OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。数据为0000,校验和为
( O7 \4 ?! m- Q4 k9 Z3 S$ C        FA。从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为0X0000。后面的数据记录都以这个地址为基
! z' @' j' b# {& j* I  J        地址。
! P, F4 @% g; a: ?) F& i' X        第2条记录的长度为10(16),LOAD OFFSET为0004,RECTYPE为00,说明该记录为数据记录。5 j- f! H, i# B  [1 X0 m; I. i
        数据为FF00A0E314209FE5001092E5011092E5,共16个BYTE。这个记录的校验和为A3。此时的基地址为0X0000,加上OFFSET,
/ E. k: N7 ^/ |7 A* H8 @3 o8 ]        这个记录里的16BYTE的数据的起始地址就是0x0000 + 0x0004 = 0x0004.
' d+ ^7 }! }+ T. B        第3条记录的长度为00,LOAD OFFSET为0000,TYPE = 01,校验和为FF。说明这个是一个END OF FILE RECORD,标识8 y6 e' f1 k, a9 ^/ M
        文件的结尾。
: |; ~7 `. k+ I2 K       - {8 _$ P6 K3 t% G. ?: g
        在上面这个例子里,实际的数据只有16个BYTE:FF00A0E314209FE5001092E5011092E5,其起始地址为0x4
+ w! T/ c0 r6 t5 F8 X           
# U, t7 c# T5 R: A: ^" i; `4 a9 k5 n0 a" I8 e0 K# I, d
5 - HEX文件和BIN文件大小有区别
' q7 b. a8 j$ c2 J7 l     HEX文件是用ASCII来表示二进制的数值。例如一般8-BIT的二进制数值0x3F,用ASCII来表示就需要分别表示字符'3'$ U  Q: Z# P" T: T3 w. b
     和字符'F',每个字符需要一个BYTE,所以HEX文件需要 > 2倍的空间。
! H$ ]. F8 j9 `3 S. @     对一个BIN文件而言,你查看文件的大小就可以知道文件包括的数据的实际大小。而对HEX文件而言,你看到的文件8 o) L1 p8 t+ I  o. G
     大小并不是实际的数据的大小。一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。
. z, f2 n% p# r' [+ x- C  L7 T" }' e3 q* u9 v+ B# \. h1 P

0 r0 l6 s! i9 D% p5 ?$ z8 b+ V( r+ |% d2 L/ e
要想详细了解HEX文件格式, 请参见

INTEL HEX PDF文档.pdf

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

211

主题

652

帖子

1507

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1507
2#
发表于 2016-6-20 14:08 | 只看该作者
感谢分享!!!0 b: @  ?/ O; ?' t* N) B8 a
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-24 04:34 , Processed in 0.059066 second(s), 34 queries , Gzip On.

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

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

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