xupota 发表于 2024-11-3 11:32:20

如何减小hex文件的大小

各位大佬,

采用多任务模式,几个简单的程序,总共也就几百行代码,hex文件就有36K。

感觉不正常。.c文件中基本都包含两个stc.h 及usb.h,
个人感觉是这两个文件重复了,导致hex文件偏大,
有没有办法避免重复这两个.h文件?

感谢各位大佬!


晓飛飛 发表于 2024-11-3 11:50:42

hex文件偏大有什么影响吗,如果是硬盘不够用了,可以压缩保存,不过几十K的文件,没什么必要吧。
hex文件的大小与占用单片机ROM的尺寸没有直接关系,具体占用情况需把hex文件加载入isp软件查看,或者编译时看编译结果信息。
编译尺寸大的固件hex文件一定会大,但hex文件大的不一定占用rom多。

VCC 发表于 2024-11-3 14:34:08

本帖最后由 a496298685 于 2024-11-3 15:04 编辑

这是一个老生常谈的话题了

这个帖子里面详细,应该已经把所有措施列出来了

https://www.stcaimcu.com/forum.p ... ptid=7597&pid=69865

即两个措施:


1. 使用Keil的优化级别9将代码优化,可以进一步节省程序空间
2. 使用"REMOVEUNUSED"。把target options中的device页中选上"Use LX51 ...",最后在LX51 Misc页中的Misc Control中填入"REMOVEUNUSED",确认后重新编译即可自动去掉未调用的函数。

21cnsound 发表于 2024-11-3 14:47:24

hex是HEX文本,且还包含地址信息、校验、类型等等;
要看占用ROM大小可以转成bin看实际大小或加载在AI-ISP中查看。

VCC 发表于 2024-11-3 15:06:41


.c文件中基本都包含两个stc.h 及usb.h,
个人感觉是这两个文件重复了,导致hex文件偏大,
有没有办法避免重复这两个.h文件?
你的这个担心是完全没有必要的,每个代码文件在编译过程中都只会编译一次,并最终链接在二进制文件的某个特定位置

不会重复出现在二进制机器码里面的

DebugLab 发表于 2024-11-3 15:29:33

hex大小不是机器码大小,HEX文件本质是ASCII

soma 发表于 2024-11-3 15:45:05

bin文件才能表现出编译文件的大小,hex文件和实际大小差好多。

vb2002 发表于 2024-11-5 13:00:35

保存数据那里可以直接保存bin文件,减少很多

严西湖里的鱼 发表于 2024-11-7 23:40:59

留个脚印,感觉自己用的到。{:smile:}

山上的风2024 发表于 2024-11-8 08:51:48

学习了。。。。。。。。。。。。。。
页: [1] 2
查看完整版本: 如何减小hex文件的大小