阅读:1348回复:8
89c52仅有8K,hex文件有20K???
我是个新手 我想问一下89c52仅有8K的程序存储器而我拿到的固件编译成hex文件有20K 并且我看到电路上并没有其它的存储芯片 请问这部分是怎样工作的 固件是怎样运行的 怎样存储的!!
|
|
沙发#
发布于:2004-01-22 22:50
我刚开始也有这样的疑问,但是从pc上看到文件尺寸同实际烧录的rom尺寸使不同的。
我用superpro编程器读入hex文件后就可以正常对89c52进行编程了。 固件在系统上电后就开始循环。直到接口芯片向单片机发送中断,程序才会自动跳到中断子程序进行执行,完成usb所需的枚举过程。 |
|
板凳#
发布于: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码). |
|
地板#
发布于:2004-01-26 12:34
ppluu的意思是虽然intel hex的文件有20k 但除去规定格式的说明 地址之类 真正烧入rom区的远小于这20k吗?
|
|
地下室#
发布于:2004-01-26 12:50
不是
|
|
|
5楼#
发布于:2004-01-26 18:28
版主给解释一下?
|
|
6楼#
发布于:2004-01-27 02:27
版主为何说\'不是\'?
|
|
7楼#
发布于:2004-01-27 11:02
ppluu的意思是虽然intel hex的文件有20k 但除去规定格式的说明 地址之类 真正烧入rom区的远小于这20k吗? 是小于的, 真正的长度要小很多. 很多编译器在生成hex文件的时候要告诉真实的hex文件长度. |
|
8楼#
发布于:2004-01-27 11:35
谢谢大家的帮助!!
|
|