407片上内存不够用?

2019-07-21 03:19发布

公司用的是STM32F407VG,片上内存196k,片上flash是1M
我在移植网络模块时编译出来的程序大小如下:
Program Size: Code=88500 RO-data=110940 RW-data=728 ZI-data=411464  

问题1:RO,RW,ZI这些变量是运行在片上SRAM内存中的吧?
     2:如果运行在内存中,那么很明显,变量的大小肯定是超过片上内存了,就要外挂内存了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
mack13013
1楼-- · 2019-07-21 06:51

ZI有400KB多? 


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


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


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

溫柔一刀
2楼-- · 2019-07-21 10:24
 精彩回答 2  元偷偷看……
163luheng
3楼-- · 2019-07-21 13:12
回复【2楼】溫柔一刀:
---------------------------------
我也在查哪些地方用的这么耗内存,你说几十KB?能不能详细说一下
163luheng
4楼-- · 2019-07-21 18:49
回复【3楼】mack13013:
---------------------------------
我把缓冲区修改到1k大小,但是编译出来仍然很耗内存
正点原子
5楼-- · 2019-07-21 21:50
估计你用了内存管理,搞了外部sram。
163luheng
6楼-- · 2019-07-22 02:14
回复【6楼】正点原子:
---------------------------------
我是按照《探索者STM32F4开发板光盘》中的实验55 网络通信实验为基础进行修改的,我把外部SRAM屏蔽掉了
然后缓冲区内存不是动态分配的,都是用的LWIP中的原始分配方法,定义数组

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

一周热门 更多>