4697|4

125

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

【新手请教】用CCS编译生成的319K的目标文件,为什么能加载到32K的FLASH中? [复制链接]

【新手请教】用CCS编译 eZ430 Chronos  项目,生成的目标文件 ez430_chronos_915MHz.out 有319K,为什么能加载到32K的FLASH中?

 

前几天折腾我的 eZ430 Chronos  无线手表开发套件,在使用无线更新固件时,把手表刷死了,于是就把TI提供的官方源码编译了一遍,使用CCS重新刷了FLASH,但是发现一个非常奇怪的现象:

输出路径下生成的目标文件 ez430_chronos_915MHz.out 有97K,如何能加载到32K的FLASH中?

 

就算是 ez430_chronos_915MHz.txt 文件的大小也有 97K ,但是eZ430 Chronos 使用的是 F6137 的芯片,最大的FLASH只有32K空间,如何能加载进去呢? 而且加载进去之后貌似一切正常?

 

作为一名新手,百思不得其解,请教各位,究竟加载到手表里去的是哪个文件呢?

目录如下:

[ 本帖最后由 FreeBlues 于 2012-7-17 00:03 编辑 ]

最新回复

纠正你一个观点,HEX文件并不是纯而进制文件。 intel的HEX文件是按照一行一条记录的方式保存烧录文件的。每行的头几个字节分别代表了命令和地址。 所以它的长度会大于BIN文件。 只有BIN文件才是用二进制方式保存烧录文件的,所以BIN文件大小能反应出实际代码的容量。 关于HEX文件的格式,你可以在百度找到相关的文档。这里就不一一去列了.  详情 回复 发表于 2012-7-18 21:49
 
点赞 关注

回复
举报

125

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
有人能指点一下不?
 
 

回复

125

帖子

0

TA的资源

纯净的硅(中级)

板凳
 

已经想明白了,因为TI-TXT文件是用TXT的形式来表示16进制数据,用文本编辑器打开生成的目标文件 ez430_chronos_915MHz.txt

 

其内容为:

 

@8000
5A 14 31 80 1A 00 CA 0E B0 13 90 E6 0E 43 3F 40
C8 42 B0 13 E6 C4 81 4C 12 00 81 4D 14 00 CC 0A
B0 13 44 EB 0E 43 3F 40 20 41 B0 13 E6 C4 81 4C
16 00 81 4D 18 00 36 40 11 00 37 40 26 1D 0A 43
28 47 19 47 02 00 CC 08 CD 09 1E 41 12 00 1F 41
14 00 B0 13 96 DA 0C 93 09 38 81 48 08 00 81 49
0A 00 27 52 1A 53 16 83 EB 23 02 3C 0A 93 99 24
7A 90 0F 00 49 28 7A 90 0F 00 2D 24 1C 41 12 00

...........

@fa5c

...........

D6 1E 00 00 02 00 E8 1E 00 00 01 00 EA 1E 00 00
01 00 A6 1E 00 00 01 00 A7 1E 0A 00 01 00 A9 1D
01 00 01 00 7D 1E 00 00 01 00 7C 1E 00 00 01 00
87 1E 00 00 01 00 25 1D 00 00 01 00 35 1E 00 00
01 00 BE 1E 00 00 00 00
@ffe0
1C 95
@ffea
86 E3 E8 CA BC 8B A6 EE
@fffe
E2 E8
q

 

16个BYTE一行的一共有1982行,8个BYTE的有一行

其余的应该是指示地址和发送指令的,如:

 

@8000   是FLASH存储区的开始地址;

中间的 @fa5c ,最后部分的 @ffe0 和 @ffea 以及 @fffe 的作用应该类似。

 

这样的话,把上述数据转换成16进制后的大小就是: 1982*16 + 1*8 = 31,720 byte

 

也就是说这个目标文件的长度约为31KB多一些,刚好可以写入FLASH区。

 

这个疑惑解决了,新的疑惑又出现了,我把CCS的编译选项设置为生成INTEL-HEX的目标文件格式,结果生成了一个名为 的文件,这个文件可是纯粹的二进制格式,它的长度为75KB,看来CCS要把它加载到32KB的FLASH中也需要进行一些转换工作了,不过这个转换的具体细节我就猜不出来了。

 
 
 

回复

400

帖子

0

TA的资源

五彩晶圆(中级)

4
 
纠正你一个观点,HEX文件并不是纯而进制文件。
intel的HEX文件是按照一行一条记录的方式保存烧录文件的。每行的头几个字节分别代表了命令和地址。
所以它的长度会大于BIN文件。
只有BIN文件才是用二进制方式保存烧录文件的,所以BIN文件大小能反应出实际代码的容量。
关于HEX文件的格式,你可以在百度找到相关的文档。这里就不一一去列了.

点评

多谢指教,看来对于新手来说很多常识性的概念都需要好好了解啊,否则就会出现错误  详情 回复 发表于 2012-7-18 23:30
 
 
 

回复

125

帖子

0

TA的资源

纯净的硅(中级)

5
 

回复 4楼 Triton.zhang 的帖子

多谢指教,看来对于新手来说很多常识性的概念都需要好好了解啊,否则就会出现错误
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表