16K的程序,为什么也能烧进S52?S52内部FLASH不是只有8KB吗?
16K的程序,为什么也能烧进S52?S52内部FLASH不是只有8KB吗?论坛里有51的专版,麻烦站长移到51论坛。点太快了 16K 的HEX文件 写进去肯定没问题,如果是BIN文件,铁定写不下! 为什么会这样?难道HEX格式的可以压缩? 把上半部份烧进去了,但下半部份丢失。RZ问题,低级智慧。 http://cache.amobbs.com/bbs_upload782111/files_8/ourdev_181140.jpg
16K的程序,到这里就成这样了。
回3楼:是整个程序,不是一半。麻烦你搞清楚 楼主比我想象中更RZ,8K大小的程序以HEX方式保存,文件属性肯定大于8K。 不知所云~ 我看Edesigner只是会耍嘴皮子
前面说:把上半部份烧进去了,但下半部份丢失。 //丢失?应该就是没烧进去吧
后面说:8K大小的程序以HEX方式保存,文件属性肯定大于8K //既然肯定大于8K,那怎么会只烧一半呢,还下半部份丢失
天啊,还有更RZ的。有空来丽水,我招呼招呼你啊 在MCU里数据以BIN文件存放,所以生成的HEX文件大小并不等于BIN文件大小,一般你把HXE文件压缩下的大小大概就是BIN文件的大小了~ 我一直有个想法:
请阿莫把类似我签名中的问题整理成一篇文档,然后放在网站显目的地方,这样可以帮助无数新手在入门时少走弯路路。
不知楼主是否知道什么是机器码,什么是编码,什么是文件,什么是程序。
不知道你观察过没有,建一个word文档在里面输入一个字母后的文件是多大。(如果有,那怎么没反应过来呢?)
楼主这个问题在坛子里我见到应该有几十次了,所以之前搜一下也很容易找到。 多谢8楼和9楼~
我用的是KEIL C编译的,是个USB鼠标的程序
多谢楼上2位。我是觉得纳闷,所以就问问。 请问楼主所说的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段内的地址) 支持9楼 5476/8192
你的程序只有5476字节
8K肯定放得下啊...
至于为什么文件有16K..举个最简单的.你文件名要占用空间吧(当然还有一些其它的),但这并不需要写入S52..所以真正写入单片机的只有5476而已.... 【13楼】 hyz_avr:
别误导人,恰恰你说错了,文件名不占空间。文件名不会记录到文件的大小的,如果你懂fat的话就不会这么说了。不信你试试看看把名字改长一点文件大小会不会变。
如果说结构 11楼说的很清楚了 阿莫对这些低技术含量的贴无兴趣 多谢各位朋友的解释~(除了Edesigner,就没回答到点子上过,请你不要再回我的帖子。你自己不感兴趣就不感兴趣嘛,干吗非要扯上站长)
回11楼:16K是指编译出来的HEX文件大小
我是菜鸟,请大家多多指教~3Q 【14楼】 bozai
例子是举错了,文件名是不存在文件里的..
这个应该是对的吧..
5476/8192
程序只有5476字节. keil c 我也用,编译时可以直接看到程序代码占用字节数的,不用那么麻烦吧? http://cache.amobbs.com/bbs_upload782111/files_8/ourdev_181294.gif .hex 文件的大小不是实际要烧代码的大小,具体的大小要在keil看,比如图中这个,实际code只有2517个字节,但.HEX文件有7.41K这么大
http://cache.amobbs.com/bbs_upload782111/files_8/ourdev_181296.jpg 搞笑,一个word文件,就一个字母也还有几十K呢。 回复【7楼】kkk215215
-----------------------------------------------------------------------
你丽水那的啊?老乡莫。。。。难得 看到留个QQ 165353682 通过keil编译后的信息看是最准确的,在windows中查看文件的属性不准确。 我用IAR给CC2430-F128编写一个Coordinator程序,结果是280KB,不一样写进去了啊。 哎,好BC,杯具啊啊啊啊啊啊啊。程序大小看编译器显示结果为准的,你去看文件大小,真是无语。用了那么多年电脑还不知道WINDOWS是怎么回事的,楼主是个杯具 老乡,我也是丽水龙泉的,现在温州 回复【26楼】5555555555
-----------------------------------------------------------------------
温州什么地方的? bozai讲得实在太好了,原来是这么回事,我还差点买个16K的单片机 有没有写进去,写进去多少,
读出来比较一下不就知道了, 看BIN文件才是准的BIN中的才是真正的机器码
页:
[1]