liuduogc
驱动小牛
驱动小牛
  • 注册日期2003-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值1点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1348回复:8

89c52仅有8K,hex文件有20K???

楼主#
更多 发布于:2004-01-21 09:08
我是个新手 我想问一下89c52仅有8K的程序存储器而我拿到的固件编译成hex文件有20K 并且我看到电路上并没有其它的存储芯片 请问这部分是怎样工作的 固件是怎样运行的 怎样存储的!!
niro
驱动牛犊
驱动牛犊
  • 注册日期2001-04-02
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-01-22 22:50
我刚开始也有这样的疑问,但是从pc上看到文件尺寸同实际烧录的rom尺寸使不同的。
我用superpro编程器读入hex文件后就可以正常对89c52进行编程了。

固件在系统上电后就开始循环。直到接口芯片向单片机发送中断,程序才会自动跳到中断子程序进行执行,完成usb所需的枚举过程。
ppluu
驱动牛犊
驱动牛犊
  • 注册日期2003-11-26
  • 最后登录2011-09-19
  • 粉丝0
  • 关注0
  • 积分51分
  • 威望15点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-24 14:34
呵呵,我多年前也有这样的问题,


.HEX文件的格式是这样的:
   Intel hex 文件全部由可打印的ASCII字符组成(可以用记事本打开),如下例所示:

        :2000000012014c75a800e4f508f509780a7a78e4f608dafcd283fcfded240af9a7050dbd81         :2000200000010ced2488ec34ff50edc283e4fcfded240af9e76d7013ed33e43c700d0dbd2a         :2000400000010ced2488ec34ff50e50509e50970020508e50924a8e50834fd50aee4f50874

    Intel hex 由一条或多条记录组成,每条记录都由一个冒号“:”打头,其格式如下:

         :CCAAAARR...ZZ      

    其中:

CC   

    本条记录中的数据字节数

AAAA   

    本条记录中的数据在存储区中的起始地址

RR   

    记录类型:     

00 数据记录 (data record)     
01 结束记录 (end record)     
02 段记录 (paragraph record)     
03 转移地址记录 (transfer address record)

...   

    数据域

ZZ   

    数据域校验和

所以,.HEX的长度要远长于实际的长度.
象实际中的一个字节:0X5A, 在.HEX文件中要两个字节才能完成: XX, XX (前一个是\'5\'的ASCII码,后一个是\'A\'的ASCII码).
liuduogc
驱动小牛
驱动小牛
  • 注册日期2003-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值1点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-26 12:34
ppluu的意思是虽然intel hex的文件有20k 但除去规定格式的说明 地址之类 真正烧入rom区的远小于这20k吗?
猪爸爸
论坛版主
论坛版主
  • 注册日期2001-08-15
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分1040分
  • 威望438点
  • 贡献值0点
  • 好评度129点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-01-26 12:50
不是
俺是[color=red]猪爸爸[/color] [img]http://bbs.zndev.com/image/post/smile/mrgreen.gif[/img] 【[url=http://shop33397538.taobao.com][color=red]猪爸爸本本美容[/color][/url]】 BELKIN贝尔金核心代理
liuduogc
驱动小牛
驱动小牛
  • 注册日期2003-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值1点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-01-26 18:28
版主给解释一下?
ppluu
驱动牛犊
驱动牛犊
  • 注册日期2003-11-26
  • 最后登录2011-09-19
  • 粉丝0
  • 关注0
  • 积分51分
  • 威望15点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-01-27 02:27
版主为何说\'不是\'?
dopy26
驱动牛犊
驱动牛犊
  • 注册日期2003-02-28
  • 最后登录2006-09-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-01-27 11:02
ppluu的意思是虽然intel hex的文件有20k 但除去规定格式的说明 地址之类 真正烧入rom区的远小于这20k吗?


是小于的, 真正的长度要小很多.  很多编译器在生成hex文件的时候要告诉真实的hex文件长度.
liuduogc
驱动小牛
驱动小牛
  • 注册日期2003-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值1点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-01-27 11:35
谢谢大家的帮助!!
游客

返回顶部