stm32,IAR编译只有30来k,bin却有120m

2019-12-10 18:28发布

本帖最后由 cnxh 于 2019-5-31 07:19 编辑

这2天用iar编译stm32,设置icf,开始地址0x80000000,结束0x080077FF,30k,在程序定义@绝对地址最后0x08007700开始存256个数据,无优化时编译出来会有120多m,而且绝对地址定义的数组却不在指定地址上而是iar自己分配的,用最高优化编译后却只有19k程序正确,现在的奇怪的地方就是就算是定义的flash容量太小了,没优化时存不下,至少编译应该会提示flash会大于30k但是却只有29k没超过,而我把结束地址改成结束0x080177FF,90多k,也还是会出现编译后120多m
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
wye11083
1楼-- · 2019-12-10 19:19
bsp区有初始化数据。貌似无解。
advarx21ic
2楼-- · 2019-12-10 23:28
应该是有个填充区域
zxzx8059
3楼-- · 2019-12-11 04:19
bin會填充
hex或其他的有紀錄地址的才不填充
mcu5i51
4楼-- · 2019-12-11 09:30
好像只有手工去掉之前不用的部分,烧写时指定起始值,多数时还是hex文件好用
muniao
5楼-- · 2019-12-11 11:49
 精彩回答 2  元偷偷看……
kebaojun305
6楼-- · 2019-12-11 16:05
绝对地址不要定义到最后,要稍微向前点,因为程序的最后 编译器存的有其他东西(比如变量的非0初始化值啥的)。 mdk 也这样 我刚碰到过。

一周热门 更多>