打印

HEX文件和BIN文件的区别

[复制链接]
4113|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangmangui|  楼主 | 2013-5-9 23:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HEX文件和BIN文件是我们经常碰到的两种文件格式。下面简单介绍一下这两种 文件格式的区别:1 -HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身 在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括 了地址。而烧写BIN 文件的时候,用户是一定需要指定地址信息的。2 -BIN文件格式 对二进制文件而言,其实没有”格式”。 文件只是包括了纯粹的二进制数据。3 -HEX文件格式 HEX文件都是由记录(RECORD)组成的。 在HEX文件里面,每一行代表一个记录。记录的 基本格式为:+---------------------------------------------------------------+ | RECORD | RECLEN | LOAD | RECTYPE | INFO or DATA | CHKSUM | | MARK ':' | | OFFSET | | | | +---------------------------------------------------------------+ | 1-byte | 1-byte | 2-byte | 1-byte | n-byte | 1-byte | +---------------------------------------------------------------+记录类型包括:'00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录 '01' End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾 '04' Extended Linear Address Record: 用来标识扩展线性地址的记录 '02' Extended Segment Address Record: 用来标识扩展段地址的记录 在上面的后2种记录,都是用来提供地址信息的。每次碰到这2个记录的时候,都可以根据记录计算出一个“基”地址。 对于后面的数据记录,计算地址的时候,都是以这些“基”地址为基础的。数据记录的具体格式:+---------------------------------------------------------------+ | RECORD | RECLEN | LOAD | RECTYPE | INFO or DATA | CHKSUM | | MARK ':' | | OFFSET | '00' | | | +---------------------------------------------------------------+ | 1-byte | 1-byte | 2-byte | 1-byte | n-byte | 1-byte | +---------------------------------------------------------------+看个例子::020000040000FA :10000400FF00A0E314209FE5001092E5011092E5A3 :00000001FF 对上面的HEX文件进行分析: 第1条记录的长度为02,LOAD OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。数据为0000,校验和为 FA。从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为0X0000。后面的数据记录都以这个地址为基地址。 第2条记录的长度为10(16),LOAD OFFSET为0004,RECTYPE为00,说明该记录为数据记录。 数据为FF00A0E314209FE5001092E5011092E5,共16个BYTE。这个记录的校验和为A3。此时的基地址为0X0000,加 上OFFSET, 这个记录里的16BYTE的数据的起始地址就是0x0000 + 0x0004 = 0x0004. 第3条记录的长度为00,LOAD OFFSET为0000,TYPE = 01,校验和为FF。说明这个是一个END OF FILE RECORD,标识文件的结尾。 在上面这个例子里,实际的数据只有16个 BYTE:FF00A0E314209FE5001092E5011092E5,其起始地址为0x44 -HEX文件和BIN文件大小有区别 HEX文件是用ASCII来表示二进制的数值。例如一般8-BIT的二进制数值0x3F,用 ASCII来表示就需要分别表示字符'3' 和字符'F',每个字符需要一个BYTE,所以HEX文件需要 > 2倍的空间。 对一个BIN文件而言,你查看文件的大小就可以知道文件包括的数据的实际大小。而对HEX文件而言,你看到的文件 大小并不是实际的数据的大小。一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。




相关帖子

沙发
lelee007| | 2013-5-9 23:34 | 只看该作者
格式不够清晰啊,LZ重新排个版吧,搞清晰点,一看就明白的那种

使用特权

评论回复
板凳
zhangmangui|  楼主 | 2013-5-10 09:34 | 只看该作者
lelee007 发表于 2013-5-9 23:34
格式不够清晰啊,LZ重新排个版吧,搞清晰点,一看就明白的那种

好  我处理一下

使用特权

评论回复
地板
pinda_| | 2013-9-30 10:22 | 只看该作者
@zhangmangui   最近USB升级一直出现问题,昨天查到问题出现在哪。

通过WINHEX软件,对十六进制文件进行转换为二进制,我发现,HEX文件中每一个数据行的后16个数据丢失,这是什么原因?具体看下面:

:02000004003DBD
:208000007622761F01C31800FFFE1A010001761F01C31A220001761F01C31800FFFD1A0120
:2080100000021800FFFB1A0100041800FFF71801FFF7761F01C31A220008761F01C31800F2
这是十六进制文件的头三行(HEX文件我是通过TI提供的HEX2000工具进行转换的)

    offset
00007FF0H       FF FF FF FF FF FF 00 7D 81 DA FF FF FF FF FF FF
00008000H       76 22 76 1F 01 C3 18 00 FF FE 1A 01 00 01 76 1F
00008010H       00 02 18 00 FF FB 1A 01 00 04 18 00 FF F7 18 01
这是转化后的两进制前三行,数据丢失了,这个怎么解决?  有没有什么好的思路。

使用特权

评论回复
5
elecintop| | 2013-9-30 12:35 | 只看该作者
学习一下啦

使用特权

评论回复
6
zhangmangui|  楼主 | 2013-9-30 13:19 | 只看该作者
elecintop 发表于 2013-9-30 12:35
学习一下啦

嗯 谢谢

使用特权

评论回复
7
raoxianbin| | 2013-10-5 22:11 | 只看该作者
有点乱,还是学习了下,谢谢楼主了

使用特权

评论回复
8
zhangmangui|  楼主 | 2013-10-5 23:05 | 只看该作者
raoxianbin 发表于 2013-10-5 22:11
有点乱,还是学习了下,谢谢楼主了

谢谢兄弟支持

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎进入【TI DSP 论坛】 & 【DSP 技术】           TI忠诚粉丝!

935

主题

26376

帖子

589

粉丝