搜索
bottom↓
回复: 30

16K的程序,为什么也能烧进S52?S52内部FLASH不是只有8KB吗?

[复制链接]

出0入0汤圆

发表于 2007-11-16 19:29:00 | 显示全部楼层 |阅读模式
16K的程序,为什么也能烧进S52?S52内部FLASH不是只有8KB吗?
论坛里有51的专版,麻烦站长移到51论坛。点太快了

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2007-11-16 19:41:50 | 显示全部楼层
16K 的HEX文件 写进去肯定没问题,如果是BIN文件,铁定写不下!

出0入0汤圆

 楼主| 发表于 2007-11-16 19:43:24 | 显示全部楼层
为什么会这样?难道HEX格式的可以压缩?

出0入0汤圆

发表于 2007-11-16 19:55:48 | 显示全部楼层
把上半部份烧进去了,但下半部份丢失。RZ问题,低级智慧。

出0入0汤圆

 楼主| 发表于 2007-11-16 20:04:25 | 显示全部楼层

16K的程序,到这里就成这样了。
回3楼:是整个程序,不是一半。麻烦你搞清楚

出0入0汤圆

发表于 2007-11-16 20:09:56 | 显示全部楼层
楼主比我想象中更RZ,8K大小的程序以HEX方式保存,文件属性肯定大于8K。

出0入0汤圆

 楼主| 发表于 2007-11-16 21:28:59 | 显示全部楼层
不知所云~

出0入0汤圆

 楼主| 发表于 2007-11-16 21:34:07 | 显示全部楼层
我看Edesigner只是会耍嘴皮子
前面说:把上半部份烧进去了,但下半部份丢失。   //丢失?应该就是没烧进去吧
后面说:8K大小的程序以HEX方式保存,文件属性肯定大于8K   //既然肯定大于8K,那怎么会只烧一半呢,还下半部份丢失
天啊,还有更RZ的。有空来丽水,我招呼招呼你啊

出0入0汤圆

发表于 2007-11-16 21:42:53 | 显示全部楼层
在MCU里数据以BIN文件存放,所以生成的HEX文件大小并不等于BIN文件大小,一般你把HXE文件压缩下的大小大概就是BIN文件的大小了~

出0入0汤圆

发表于 2007-11-16 21:50:16 | 显示全部楼层
我一直有个想法:
                请阿莫把类似我签名中的问题整理成一篇文档,然后放在网站显目的地方,这样可以帮助无数新手在入门时少走弯路路。



不知楼主是否知道什么是机器码,什么是编码,什么是文件,什么是程序。
不知道你观察过没有,建一个word文档在里面输入一个字母后的文件是多大。(如果有,那怎么没反应过来呢?)
楼主这个问题在坛子里我见到应该有几十次了,所以之前搜一下也很容易找到。

出0入0汤圆

 楼主| 发表于 2007-11-16 21:58:18 | 显示全部楼层
多谢8楼和9楼~
我用的是KEIL C编译的,是个USB鼠标的程序
多谢楼上2位。我是觉得纳闷,所以就问问。

出0入0汤圆

发表于 2007-11-16 22:04:58 | 显示全部楼层
请问楼主所说的16K程序,指的是HEX文件大小还是编译器说整个程序代码为16K?
HEX文件大小为16K,实际写进单片机的代码一定小于16K。
其它如文件系统或文件格式暂且放下不说,就从内容上说,HEX文件除了单片机代码外,还包含校验码等内容。

我们没必要作无谓的口舌之争,大家看看一下内容才在作讨论吧!希望大家有进一步的见解!
相关内容如下;
HEX文件的格式说明

Hex文件的INTEL格式:这是Intel公司提出的按地址排列的数据信息,数据宽度为字节,
所有数据使用16进制数字表示.
这是一个例子:
:10008000AF5F67F0602703E0322CFA92007780C361
:1000900089001C6B7EA7CA9200FE10D2AA00477D81
:0B00A00080FA92006F3600C3A00076CB
:00000001FF
第一行,":"符号表明记录的开始. 后面的两个字符表明记录的长度,这里是10h.
后面的四个字符给出调入的地址,这里是0080h. 后面的两个字符表明记录的类型;
0 数据记录 1 记录文件结束 2 扩展段地址记录 3 开始段地址记录 4 扩展线性地址记录 5
开始线性地址记录后面则是真正的数据记录, 最后两位是校验和检查,它加上前面所有的数据和为0.
最后一行特殊,总是写成这个样子.
扩展Intel Hex的格式(最大1M): 由于普通的Intel的Hex记录文件只能记录64K的地址范围,
所以大于64K的地址数据要靠扩展Intel Hex格式的文件来记录.对于扩展形式Hex文件,
在每一个64K段的开始加上扩展的段地址规定,下面的数据地址均在这个段内,除非出现新的段地址定义.
一个段地址 定义的格式如下:
起始符 长度 起始地址 扩展段标示 扩展段序号 无用 累加和
: 02 0000 02 3000 EC
段地址的标识符是第四组数据02,表示扩展地址段的定义,再后面的以为HEX数表示段的数目,
上面的定义为3,表示段地址是3,所以下面的数据地址是3 + XX(XX是64K段内的地址)

出0入0汤圆

发表于 2007-11-16 22:13:52 | 显示全部楼层
支持9楼

出0入0汤圆

发表于 2007-11-16 23:13:25 | 显示全部楼层
5476/8192

你的程序只有5476字节   

8K肯定放得下啊...

至于为什么文件有16K..举个最简单的.你文件名要占用空间吧(当然还有一些其它的),但这并不需要写入S52..所以真正写入单片机的只有5476而已....

出0入0汤圆

发表于 2007-11-16 23:19:20 | 显示全部楼层
【13楼】 hyz_avr:
         别误导人,恰恰你说错了,文件名不占空间。文件名不会记录到文件的大小的,如果你懂fat的话就不会这么说了。不信你试试看看把名字改长一点文件大小会不会变。

如果说结构 11楼说的很清楚了

出0入0汤圆

发表于 2007-11-17 00:00:26 | 显示全部楼层
阿莫对这些低技术含量的贴无兴趣

出0入0汤圆

 楼主| 发表于 2007-11-17 10:21:26 | 显示全部楼层
多谢各位朋友的解释~(除了Edesigner,就没回答到点子上过,请你不要再回我的帖子。你自己不感兴趣就不感兴趣嘛,干吗非要扯上站长)
回11楼:16K是指编译出来的HEX文件大小
我是菜鸟,请大家多多指教~3Q

出0入0汤圆

发表于 2007-11-17 10:30:32 | 显示全部楼层
【14楼】 bozai

   例子是举错了,文件名是不存在文件里的..

  这个应该是对的吧..

  5476/8192

  程序只有5476字节.

出0入50汤圆

发表于 2007-11-17 11:06:59 | 显示全部楼层
keil c 我也用,编译时可以直接看到程序代码占用字节数的,不用那么麻烦吧?

出0入0汤圆

发表于 2007-11-17 11:25:06 | 显示全部楼层

出0入0汤圆

发表于 2007-11-17 11:33:45 | 显示全部楼层
.hex 文件的大小不是实际要烧代码的大小,具体的大小要在keil看,比如图中这个,实际code只有2517个字节,但.HEX文件有7.41K这么大

出0入0汤圆

发表于 2007-11-17 12:03:05 | 显示全部楼层
搞笑,一个word文件,就一个字母也还有几十K呢。

出0入0汤圆

发表于 2010-2-1 17:42:04 | 显示全部楼层
回复【7楼】kkk215215
-----------------------------------------------------------------------

你丽水那的啊?老乡莫。。。。难得    看到留个QQ 165353682

出0入0汤圆

发表于 2010-3-20 22:42:23 | 显示全部楼层
通过keil编译后的信息看是最准确的,在windows中查看文件的属性不准确。

出0入0汤圆

发表于 2010-3-20 23:38:03 | 显示全部楼层
我用IAR给CC2430-F128编写一个Coordinator程序,结果是280KB,不一样写进去了啊。

出70入0汤圆

发表于 2010-3-24 11:50:20 | 显示全部楼层
哎,好BC,杯具啊啊啊啊啊啊啊。程序大小看编译器显示结果为准的,你去看文件大小,真是无语。用了那么多年电脑还不知道WINDOWS是怎么回事的,楼主是个杯具

出0入0汤圆

发表于 2010-3-24 12:28:29 | 显示全部楼层
老乡,我也是丽水龙泉的,现在温州

出0入0汤圆

发表于 2010-3-24 13:27:28 | 显示全部楼层
回复【26楼】5555555555
-----------------------------------------------------------------------

温州什么地方的?

出0入0汤圆

发表于 2013-5-25 09:14:33 | 显示全部楼层
bozai讲得实在太好了,原来是这么回事,我还差点买个16K的单片机

出0入30汤圆

发表于 2013-5-25 10:09:02 | 显示全部楼层
有没有写进去,写进去多少,
读出来比较一下不就知道了,

出0入8汤圆

发表于 2013-5-25 10:26:36 | 显示全部楼层
看BIN文件才是准的  BIN中的才是真正的机器码
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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