硬件:阿波罗STM32F429IGTx开发板
软件:keil5,c语言
之前在STM32F103上开发littleVGL界面和文件系统时提示内存空间不够,考虑到以后还要添加其他功能,干脆换成更大内存的开发板吧。
但是,谁知道!!!换成更大的开发板还是提示内存空间不够,,,我晕,这是怎么回事,不可能啊?淡定淡定,冷静分析一波。
试着单独编译一下STM32F429的FATFS文件系统实验例程,代码量竟然达到32M,what???这刚好把开发板的外扩资源全给用完了啊,怪不得只要一添加其他功能就会报错。
FLASH=(Code + RO-data + RW-data)/1024=491.9KB
RAM=(RW-data + ZI-data)/1024/1024=32M
试着单独编译一下STM32F103的FATFS文件系统实验例程,代码量达到了1M,刚好也把空间给占完了。
这样看来,是代码的问题,给文件系统分配了全部的空间大小,所以只要减少内存分配,不就行了?
操作步骤如下:
打开malloc.h文件,将内存分配的数值改小一些:
这个时候再编译,代码量小到了3M,nice!
FLASH=(Code + RO-data + RW-data)/1024=245.8KB
RAM=(RW-data + ZI-data)/1024/1024=3.1M
所以就可以根据自己需求来更改这个数值啦~