野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11340|回复: 7

编译结果代码空间大小超过芯片flash大小还能下载怎么办?

[复制链接]
发表于 2016-11-18 21:23:45 | 显示全部楼层 |阅读模式
1.jpg

用的STM32F429IIT6,2M flash。
工程ucos+emwin + fatfs,刚把emwin代码移植上来,编译通过。
其他界面,图片什么的都没有。
外设驱动占资源的就是LCD,声明了2个全局变量用于显存,用分散加载指定在外部SDRAM。
编译结果如上图:
CODE=13868
RO=12208
RW=2369852
ZI=23044
按照教程说法,CODE + RO + RW占FLASH空间,就是说这三项加起来要小于2MB。
但是我现在13868 +12208 +2369852 =2395928 = 2.28MB > 2MB
为什么还能下载运行?
另外,有的工程ucos+usb+emwin+fatfs +tcpip等等,工程代码量应该比我的大多了啊,我这个工程应该不算大啊。
能指导一下么?

回复

使用道具 举报

发表于 2016-11-19 09:02:06 | 显示全部楼层
确实啊,超出了,这样应该是会有错误提示的,你可以看看map文件,是哪个地方用的rw变量比较大
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-19 20:58:02 | 显示全部楼层
flyleaf 发表于 2016-11-19 09:02
确实啊,超出了,这样应该是会有错误提示的,你可以看看map文件,是哪个地方用的rw变量比较大

没有提示。我的程序正常下载运行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-19 20:59:18 | 显示全部楼层
把用__EXRAM定义在sdram中的用于显存的全局变量改小,编译出的RW会变小。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-20 00:17:40 | 显示全部楼层
11.png

lcd显存占的空间。

22.png

33.png

44.png

我在分散加载文件中指定在SDRAM中的地址,那么编译时这个显存数组是存储在flash中吗?
回复 支持 反对

使用道具 举报

发表于 2016-11-21 08:52:36 | 显示全部楼层
这种理论上是属于ZI 类型的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-21 12:58:50 | 显示全部楼层
flyleaf 发表于 2016-11-21 08:52
这种理论上是属于ZI 类型的

那是不是要看在flash中,这个变量有没有分配地址?
没有分配地址就对了。
好像记得视频中讲有个文件中可以看。
回复 支持 反对

使用道具 举报

发表于 2016-11-21 13:42:12 | 显示全部楼层
ggafish 发表于 2016-11-21 12:58
那是不是要看在flash中,这个变量有没有分配地址?
没有分配地址就对了。
好像记得视频中讲有个文件中 ...

是的,但你这里列的情况我感觉太奇怪,rw类的话,在flash是有空间的

但你定义的那个exram,初始值一般为0,所以是属于zi 变量,不占flash
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 18:36 , Processed in 0.032750 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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