OpenEdv-开源电子网

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

Fatfs文件系统f_write处理时间的问题

[复制链接]

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2013-4-19
在线时间
1 小时
发表于 2015-9-1 21:41:47 | 显示全部楼层 |阅读模式
5金钱
DSP28346平台,没有用操作系统。平台提供的时间片资源有限。 while主循环中有时间片任务:task1msApp(); task2msApp();等,且while循环中任务执行一遍的时间不能超过10ms,否则系统超时复位。 

现在的问题是:经测试f_write()函数写一个扇区占用的时间绝对大于10ms,如果将f_write函数放入主循环任务中,肯定不行。  

最后想做到的是:f_write这个函数写一个扇区操作拆分成多次执行,每次耗时100us左右执行一小部分。这样貌似就复杂了,还得修改文件系统代码。使用操作系统就不会存在这种问题,因为系统会自动帮你保存现场。

还有没有更好的解决方法?

最佳答案

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

回复【6楼】天涯_1110: --------------------------------- 你这种情况,没办法了。。。 用OS,或者用2个单片机
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-9-1 21:41:48 | 显示全部楼层
回复【6楼】天涯_1110:
---------------------------------
你这种情况,没办法了。。。
用OS,或者用2个单片机
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-9-1 22:08:08 | 显示全部楼层
做定时器,10ms中断,处理喂狗。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2013-4-19
在线时间
1 小时
 楼主| 发表于 2015-9-1 22:22:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
由于系统实时性的要求,while循环一遍的时间一定要在10ms之内完成。 否则复位,这是一种保护机制。 任何时候10ms之内,while中的任务都得执行一遍,要不然就有可能炸机了。 

你说的10ms中断喂狗 ,不太清楚怎么个处理法,  能详细一点吗?
回复

使用道具 举报

11

主题

1041

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3696
金钱
3696
注册时间
2011-5-23
在线时间
2008 小时
发表于 2015-9-2 09:43:41 | 显示全部楼层
电脑硬件有时写个扇区最大可能要几百ms,但平均性能能到几十M每秒。
你觉得在最慢的那几百ms里面,电脑CPU都在死等吗?
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-9-3 23:02:21 | 显示全部楼层
你是如何保证10ms会复位的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2013-4-19
在线时间
1 小时
 楼主| 发表于 2015-9-4 09:38:58 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
主循环while每循环一次都给一个全局变量赋值30,在333.333us的中断每执行一次减一。也就是中断执行30次,30*333.333us=10ms。如果该全局变量还没有更新就会变为0。在中断中看门狗复位。
回复

使用道具 举报

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2013-4-19
在线时间
1 小时
 楼主| 发表于 2015-9-4 09:41:04 | 显示全部楼层
回复【4楼】aozima:
---------------------------------
你说的这个用了操作系统,就不需要死等了,当然没问题。我说的这个是没有操作系统的。
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
507
金钱
507
注册时间
2015-11-13
在线时间
131 小时
发表于 2019-1-10 19:08:01 | 显示全部楼层
天涯_1110 发表于 2015-9-4 09:41
回复【4楼】aozima:
---------------------------------
你说的这个用了操作系统,就不需要死等了,当然没 ...

楼主你问题解决了了吗,我的问题跟你一模一样,也是裸跑,写入数据也是在10ms的定时器里,我现在的问题是写入的耗时必须控制在1-3ms,不然就会影响别的工作了,
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
507
金钱
507
注册时间
2015-11-13
在线时间
131 小时
发表于 2019-1-10 19:08:22 | 显示全部楼层
不良苏 发表于 2019-1-10 19:08
楼主你问题解决了了吗,我的问题跟你一模一样,也是裸跑,写入数据也是在10ms的定时器里,我现在的问题是 ...

@正点原子。。。。。。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 05:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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