OpenEdv-开源电子网

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

FatFS跟原子哥的内存管理有冲突

[复制链接]

13

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2018-12-19
在线时间
168 小时
发表于 2020-1-14 18:03:05 | 显示全部楼层 |阅读模式
1金钱
刚学会用原子哥的内存管理,正爽的不要不要的,又移植了FatFS,偶尔会死机,经过仿真发现在ff.c里面调用find_volume函数的时候内存管理表memmapbase[MEM_ALLOC_TABLE_SIZE]的数据乱了。find_volume的参数跑到内存管理表里面去了,把内存管理表的数据打乱了。用MDK和IAR都会出现这种情况,不知道这是不是FatFS的Bug。


14、fatfs.rar (920.14 KB, 下载次数: 1)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2020-1-14 22:04:51 | 显示全部楼层
一般文件系统fatfs这个是很稳定的,不太可能有这个bug的
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

13

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2018-12-19
在线时间
168 小时
 楼主| 发表于 2020-1-14 22:28:31 | 显示全部楼层
我单步仿真看了,是在调用find_volume这个函数的时候把内存管理表的数据打乱了。
回复

使用道具 举报

13

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2018-12-19
在线时间
168 小时
 楼主| 发表于 2020-1-14 22:29:47 | 显示全部楼层
这个FatFS我移植到STM8和8051,都没有问题。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-1-15 03:09:40 | 显示全部楼层
应该是你的操作涉嫌内存越界,也就是你给指针只申请了100字节,实际使用了120字节这样。
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2020-1-15 08:29:10 | 显示全部楼层
把堆栈空间改大一倍
回复

使用道具 举报

13

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2018-12-19
在线时间
168 小时
 楼主| 发表于 2020-1-15 09:12:04 | 显示全部楼层
正点原子 发表于 2020-1-15 03:09
应该是你的操作涉嫌内存越界,也就是你给指针只申请了100字节,实际使用了120字节这样。

在FatFS调用find_volume之前内存管理表的数据全是0,只要一进入find_volume这个函数,内存管理表的数据就乱了,是find_volume的参数跑到内存管理表里面去了。
今天换其他版本的FatFS试一下。
回复

使用道具 举报

13

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2018-12-19
在线时间
168 小时
 楼主| 发表于 2020-1-15 12:44:14 | 显示全部楼层
candylife9 发表于 2020-1-15 08:29
把堆栈空间改大一倍

改过,没效果。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-1-16 02:19:43 | 显示全部楼层
854278507 发表于 2020-1-15 09:12
在FatFS调用find_volume之前内存管理表的数据全是0,只要一进入find_volume这个函数,内存管理表的数据就 ...

这种就是仿真找问题咯
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 16:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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