OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10406|回复: 11

407片上内存不够用?

[复制链接]

8

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-2-7
在线时间
2 小时
发表于 2015-4-17 16:26:18 | 显示全部楼层 |阅读模式
5金钱
公司用的是STM32F407VG,片上内存196k,片上flash是1M
我在移植网络模块时编译出来的程序大小如下:
Program Size: Code=88500 RO-data=110940 RW-data=728 ZI-data=411464  

问题1:RO,RW,ZI这些变量是运行在片上SRAM内存中的吧?
     2:如果运行在内存中,那么很明显,变量的大小肯定是超过片上内存了,就要外挂内存了

最佳答案

查看完整内容[请看2#楼]

ZI有400KB多?  我估计这些未初始化的内存是网络接收发送的缓冲区吧, 如果是缓冲区的话,要么你程序里面内存划分太随意,要么你程序太复杂。 如果内存不够用,试试动态分配内存。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7952
金钱
7952
注册时间
2014-8-13
在线时间
1590 小时
发表于 2015-4-17 16:26:19 | 显示全部楼层

ZI有400KB多? 


我估计这些未初始化的内存是网络接收发送的缓冲区吧,


如果是缓冲区的话,要么你程序里面内存划分太随意,要么你程序太复杂。


如果内存不够用,试试动态分配内存。

回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2015-4-17 16:52:14 | 显示全部楼层
我情況跟你有點不太相同....
我是只能用 128kB , 超過的不能用....,程序就會怪怪的
請問你移那個程序,  LWIP 應該不用吃到那麼大的 RAM , 幾十KB 應該夠的
回复

使用道具 举报

8

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-2-7
在线时间
2 小时
 楼主| 发表于 2015-4-17 21:38:42 | 显示全部楼层
回复【2楼】溫柔一刀:
---------------------------------
我也在查哪些地方用的这么耗内存,你说几十KB?能不能详细说一下
回复

使用道具 举报

8

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-2-7
在线时间
2 小时
 楼主| 发表于 2015-4-17 21:40:42 | 显示全部楼层
回复【3楼】mack13013:
---------------------------------
我把缓冲区修改到1k大小,但是编译出来仍然很耗内存
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-4-17 22:25:50 | 显示全部楼层
估计你用了内存管理,搞了外部sram。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-2-7
在线时间
2 小时
 楼主| 发表于 2015-4-18 10:04:26 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
我是按照《探索者STM32F4开发板光盘》中的实验55 网络通信实验为基础进行修改的,我把外部SRAM屏蔽掉了
然后缓冲区内存不是动态分配的,都是用的LWIP中的原始分配方法,定义数组

现在我还不知道怎么把LWIP定义的变量裁剪到几十kb
回复

使用道具 举报

8

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-2-7
在线时间
2 小时
 楼主| 发表于 2015-4-20 14:03:31 | 显示全部楼层
大家有没有裁剪LWIP的案例啊
回复

使用道具 举报

7

主题

333

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2012-7-16
在线时间
504 小时
发表于 2015-4-20 14:15:54 | 显示全部楼层
196k还错够啊。
回复

使用道具 举报

5

主题

91

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2014-10-28
在线时间
14 小时
发表于 2015-4-20 17:33:26 | 显示全部楼层
192k里面有64K的CCM  
编译器默认不用,可以自己用着64K的CCM  只有不用DMA
成功必然有成功的原因,
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2015-4-22 14:54:28 | 显示全部楼层
回复【10楼】simplelifeNick:
---------------------------------
感謝回覆, 所以我默認把他全拿來用, 是有問題的, 因為系統有可能拿去宣告成 heap 區或其它....
謝謝了
回复

使用道具 举报

5

主题

91

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2014-10-28
在线时间
14 小时
发表于 2015-4-24 12:11:29 | 显示全部楼层
回复【11楼】溫柔一刀:
---------------------------------
不会的吧,我用的MDK  选项一般默认ram1
编译的时候也就只会用前100多k 不会用到64k的CCM  也就是所默认是浪费的
所以可以大胆的用了  系统不会去用作heap的吧   你的设置是什么?
成功必然有成功的原因,
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 12:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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