数码之家

 找回密码
 立即注册
搜索
查看: 4263|回复: 27

为什么keil生成的HEX码文件,STC的下载软件说文件太大,给自动截取了?

[复制链接]
发表于 2020-7-4 23:24:55 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 gdszyrx 于 2020-7-6 23:16 编辑

为什么keil生成的HEX码文件,STC的下载软件说文件太大,给自动截取了?单片机是STC15W408AS




搞清楚了,换了个版本的Keil编译,原来用的是9.59,相同的文件编译出来的容量有8243,用keil uv2 2.40a 编译出来只有7801,新版本的keil竟然会增加代码undefined
发表于 2020-7-5 09:07:41 | 显示全部楼层
是不是程序超出单片机Flash容量了
回复 支持 反对

使用道具 举报

发表于 2020-7-5 09:49:10 | 显示全部楼层
编译后,看软件底下的大小,408是8KB ROM,超出了肯定截取,而且不能运行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 09:57:15 | 显示全部楼层
郁闷_boy 发表于 2020-7-5 09:07
是不是程序超出单片机Flash容量了

不是啊,别人生的就可以下载,我只不过改了几个字符,就变大了?
回复 支持 反对

使用道具 举报

发表于 2020-7-5 10:00:33 | 显示全部楼层
这种情况就要看看你的代码总量了。
0123.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 10:22:45 | 显示全部楼层
慕名而来 发表于 2020-7-5 10:00
这种情况就要看看你的代码总量了。


1图是能下载的:

1.png



以下是被自动截取的:
2.png
回复 支持 反对

使用道具 举报

发表于 2020-7-5 10:55:44 | 显示全部楼层
gdszyrx 发表于 2020-7-5 10:22
1图是能下载的:

作为编程的菜鸟因为不是系统学过编程另外没有遇到过这种情况所以太多东西我也不懂,但是从你两个图片来看:8K=8*1024=8192个字节,再对比两张图片的code值,图二的确实超出了,其他的我就不懂了。
回复 支持 反对

使用道具 举报

发表于 2020-7-5 12:34:21 | 显示全部楼层
gdszyrx 发表于 2020-7-5 10:22
1图是能下载的:

超出空间了 优化吧
回复 支持 反对

使用道具 举报

发表于 2020-7-5 12:36:47 | 显示全部楼层
gdszyrx 发表于 2020-7-5 10:22
1图是能下载的:

截取的那个代码长度code=8241,已经超过8192啦
回复 支持 反对

使用道具 举报

发表于 2020-7-5 12:52:25 | 显示全部楼层
慕名而来 发表于 2020-7-5 10:55
作为编程的菜鸟因为不是系统学过编程另外没有遇到过这种情况所以太多东西我也不懂,但是从你两个图片来看 ...

对的,确实超容量了
回复 支持 反对

使用道具 举报

发表于 2020-7-5 15:49:18 | 显示全部楼层
52个警告提示,谁写的程序这么牛 尽可能 0错误,0警告:titter:
回复 支持 反对

使用道具 举报

发表于 2020-7-5 17:03:08 | 显示全部楼层
对的,成败就在一点点细节。可以看出原开发者有点东西的,选择了与完成任务所需资源最接近的MCU规格,刚好够用。你随便一改就超了。
解决方案,重构部分代码减小体积;合适选择编译优化方向,选择优化空间;更换更大容量的MCU,也要不了几个钱。
回复 支持 反对

使用道具 举报

发表于 2020-7-5 17:05:18 | 显示全部楼层
还有你这个写程序水平不行啊,人家原来只有1个警告,给你一通操作变成52个了。:tongue:
可能对运行结果有影响的,甚至,你把那些警告处理好说不定就不超过最大空间限制了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 23:36:28 | 显示全部楼层
lbq691477940 发表于 2020-7-5 15:49
52个警告提示,谁写的程序这么牛 尽可能 0错误,0警告

52个警告的那个是原作者,1个警告的那个是我修改的,我也没改什么啊,就改了几个字符就超容量了。:lol:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 23:53:37 | 显示全部楼层
la45088d1 发表于 2020-7-5 17:03
对的,成败就在一点点细节。可以看出原开发者有点东西的,选择了与完成任务所需资源最接近的MCU规格,刚好 ...

比STC15W408AS更大容量引脚一样的是什么型号?
回复 支持 反对

使用道具 举报

发表于 2020-7-6 08:45:10 | 显示全部楼层
gdszyrx 发表于 2020-7-5 23:53
比STC15W408AS更大容量引脚一样的是什么型号?

如果只是字符,要么别改,要么只能换用其它系列的MCU,STC15W4K系列容量就很大。
回复 支持 反对

使用道具 举报

发表于 2020-7-6 20:08:56 | 显示全部楼层
gdszyrx 发表于 2020-7-5 09:57
不是啊,别人生的就可以下载,我只不过改了几个字符,就变大了?

曾经我也就改了一个变量,从整形改成浮点,ROM从 2k 涨到 30k 。
回复 支持 反对

使用道具 举报

发表于 2020-7-6 21:35:00 | 显示全部楼层
编译器好像可以修改压缩比列,调到最高试试
回复 支持 反对

使用道具 举报

发表于 2020-7-6 22:12:37 来自手机浏览器 | 显示全部楼层
本帖最后由 ploestar 于 2020-7-6 22:22 编辑
gdszyrx 发表于 2020-7-5 23:53
比STC15W408AS更大容量引脚一样的是什么型号?


啥封装的,常用的sop20 28,ssop20 28,还有dip qfn,完全一样资源的型号没有,20脚非常接近的有iap15w413as,13k的rom,但并不完全一样,eeprom不一样,没用过不了解,如果程序涉及到这部分不知道是不是一样,结尾as表示有adc,没a的就没有。28脚的有stc15f2k60s2系列,最大60k,其他系列要么引脚不一样的,要么资源不一样
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-6 23:16:01 | 显示全部楼层
fryefryefrye 发表于 2020-7-6 20:08
曾经我也就改了一个变量,从整形改成浮点,ROM从 2k 涨到 30k 。

换了个版本的Keil编译,原来用的是9.59,相同的文件编译出来的容量有8243,用uv2 2.40a 编译出来只有7801,新版本的keil竟然会增加代码
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-5-7 07:11 , Processed in 0.140400 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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