OpenEdv-开源电子网

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

ucos+fatfs+TF卡碰到的文件系统不稳定问题,求救。

[复制链接]

4

主题

13

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2013-9-4
在线时间
0 小时
发表于 2015-3-12 15:33:17 | 显示全部楼层 |阅读模式
5金钱
我的问题这里询问过两次了,再发一个求救贴。还请版主手下留情。
http://www.openedv.com/posts/list/0/47326.htm?privmsg=14442&&sysid=4#272187
http://www.openedv.com/posts/list/0/47620.htm#274538

我按照各种方式比如加临界区保护,对齐之类的。都不行。

__align(8)staticOS_STK START_TASK_STK

现在情况是:
在main,任务之前运行文件系统测试代码正常。
在ucos启动后,不行。单任务也不行。
写100多次文件系统就崩溃。


改为,任务一开始就 fopen,flseek ,之后就一直fwrite和fsync,不再关闭fclose。写了几千多次,问题好像不怎么发生了。但是次数很多,就产生错误2. assertion failed。卡查到机子上一看发现文件都不见了。应该是文件系统出问题了。

求教怎么处理。
怎么入手。如有帮助愿充些电话费作为感谢,说道做到。

重新移植R0.11最新版的fatfs问题依旧。
感觉问题应该来自操作系统。



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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-12 22:47:24 | 显示全部楼层
用什么接口驱动SD卡?
SPI还是SDIO?

操作系统的时候,尤其要做保护,你可以参考我们的战舰/探索者的综合实验,那么大的工程,操作SD卡都没什么问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

13

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2013-9-4
在线时间
0 小时
 楼主| 发表于 2015-3-13 09:27:34 | 显示全部楼层
 回复【2楼】 正点原子 :
---------------------------------
应该是sdio的吧。
用的是lpc1788自己的控制器。
连接原理图和硬件图如下:
另外sd卡的硬件电路有个小改动。如图:本来MCIPWR是控制sd卡的供电端,为需要时向sd卡时供电,不需要是关闭。但是测试板的三极管Q15有问题,就直接吧Q15去掉EC短接,改为一直供电了。不知道这个会不会造成问题。




现在是,在main函数中正常,任务就算是单任务中不正常。是不是可以确定问题很可能出在操作系统?
你说的保护是不是
[mw_shl_code=c,true]extern void ff_enter(void); extern void ff_leave(void); #define ENTER_FF(fs) {ff_enter();}//{OS_ENTER_CRITICAL();}//进入FATFS,关闭中断,防止相互干扰 #define LEAVE_FF(fs, res) {ff_leave();return res;}//{OS_EXIT_CRITICAL();return res;}//离开FATFS,开启中断,任务继续执行[/mw_shl_code]
这几个函数的使用?
但是我现在就算在单任务中,屏蔽所有硬件,只跑写文件一个事情。感觉不会有太多打断吧?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-13 23:05:12 | 显示全部楼层
回复【3楼】caiwei_cs:
---------------------------------
对的,就是这几个函数,很重要!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-9-16
在线时间
0 小时
发表于 2015-6-19 16:09:42 | 显示全部楼层
请问楼主最后解决了吗? 是怎么解决的呢? 我也是同样问题,一头雾水。
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2012-12-16
在线时间
5 小时
发表于 2017-9-5 15:52:50 | 显示全部楼层
本帖最后由 maverics 于 2017-9-5 16:02 编辑
正点原子 发表于 2015-3-13 23:05
回复【3楼】caiwei_cs:
---------------------------------
对的,就是这几个函数,很重要!!

你好,看了你的综合实验例程,你在f_write之前并未os_enter_critical,我目前大概是这样的流程,采集数据、fopen、flseek、fwrite、fclose,如此循环,请问1可否详细介绍下sd卡临界区保护的方法,
2另外我目前的问题是无论是否增加临界区保护,SD卡将采集数据写入,每次100字节,最多写入30次,大概3M字节,后面的好像就写不进去了,去下SD卡只有30组数据,请问可否指点下,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 09:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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