STM32移植USB库和FATFS文件系统后占用ram过大问题的处理
近期在做一个小项目,需要将获取的数据储存为文件后以文件系统的形式储存,然后作为一个小u盘直接拷贝到电脑上查看
作为u盘和FATFS文件系统,有现成的库可以移植,具体过程我就不过多阐述,如果有需要可以私信我我把他们汇总一下描述下。
主要是移植成功后遇到一个问题,就是整体程序占用空间太大了,芯片我计划用的是STM32F103C8系列,它的ram只有20K,但是程序编译后整个ram占到了26K,超过了这个系列的空间,但是如果要换大一点的芯片又太贵了,心疼肉钱,于是我就看了一下有没有什么地方可以精简。
查了一下map文件,发现主要是这个memory。c占用的最多,下面这个图片是改后的,改之前是16K

所以我就查了一下这个文件,发现主要是在里面定义了数据缓冲区,由于我用的是flash,一个扇区是4096byte,但是4k远远不到上面的16K啊,

后面突然发现这个数组是32位的一个数据。。。也就是说是4K*4,也就是16K。。。。。
但是里面实际使用这个的时候,是强制把它转化成了8位的进行使用的。。。它可能是为了兼容其他情况使用的。

于是,这里我们将其数据定义改成uint8_t,并且把对应的函数输入参数按照改后进行调整后再次进行编译,可以看到整体程序就只有14K左右了。

再此刷到芯片里,程序也能正常识别,写入数据也能正常写入。
OK
STM32移植USB库和FATFS文件系统RAM优化
在STM32F103C8项目中,移植USB库和FATFS文件系统导致RAM占用超过20K限制。通过分析map文件发现memory.c中的4K数据缓冲区定义为32位,实际仅用作8位。将数据类型改为uint8_t并调整函数参数后,RAM占用降至14K,程序仍能正常运行和写入数据。
4665

被折叠的 条评论
为什么被折叠?



