OpenEdv-开源电子网

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

程序中用到了fatfs占用过大,该如何解决?

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-7-7
在线时间
4 小时
发表于 2020-8-28 11:07:54 | 显示全部楼层 |阅读模式
4金钱
求助各位,由于程序里需要从sd卡取数据,所以用了fatfs和自己的程序拼起来,但是用了之后F103ZET6放不下了。
报错为:很多个L6405E,如下
..\OBJ\FATFS.axf: Error: L6406E: No space in execution regions with .ANY selector matching key.o(.data).
..\OBJ\FATFS.axf: Error: L6407E: Sections of aggregate size 0xcae4 bytes could not fit into .ANY selector(s).

1.fatfs单独用的时候没问题,占用为:
Program Size: Code=33176 RO-data=176176 RW-data=168 ZI-data=1096320  
2.另一半自己的程序单独运行也没问题,占用为:
Program Size: Code=25716 RO-data=552 RW-data=3200 ZI-data=56200
自己写的这部分程序是一个矩阵运算的部分,数组比较多,但是没有做内存管理

自己设想的问题:
1.因为fatfs有内存管理,但是自己这个程序没有内存管理,所以出错了
2.就只是因为占用太大了,只能换芯片/弃用fatfs来解决
请问大家问题在哪些地方呢?该如何解决呢?

最佳答案

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

正点例程的FATFS是用了内存管理的,你要是直接拷贝,内存表会占用很大空间。要是程序没用内存管理,最好把malloc从FATFS函数间提取出来;要是为了方便可以把malloc.h内存参数设定的几个值调小点
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2020-6-27
在线时间
14 小时
发表于 2020-8-28 11:07:55 | 显示全部楼层
正点例程的FATFS是用了内存管理的,你要是直接拷贝,内存表会占用很大空间。要是程序没用内存管理,最好把malloc从FATFS函数间提取出来;要是为了方便可以把malloc.h内存参数设定的几个值调小点
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-8-28 13:17:40 | 显示全部楼层
内存不够了吧,换用大内存的芯片。或者修改代码减少内存的使用。
回复

使用道具 举报

11

主题

2149

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4926
金钱
4926
注册时间
2015-1-10
在线时间
618 小时
发表于 2020-8-28 13:46:44 | 显示全部楼层
SDRAM了解一下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 03:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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