搜索
bottom↓
回复: 8

UCOSII系统往文件中写数据时需要禁止任务调度吗?

[复制链接]

出55入4汤圆

发表于 2022-9-5 14:32:42 | 显示全部楼层 |阅读模式
100汤圆

STM32使用UCOS II系统,串口不定时会收到采样端发送过来的数据,主任务收到后会把串口收到的数据通过FAT文件系统写到NANDFLASH内的CSV文件中,昨天突然看到CSV文件中一个数据28.39被意外改成了28.#9,如附件图,怀疑是主任务正在往文件里面写数据,突然串口中断来了,然后又引起系统调度,进入优先级更高的串口数据处理任务(这个任务有调试信息输出,时间相对长一些),导致主任务写数据的时序被打乱,最终写到文件中的数据错了,请问大家在往文件中写数据时有禁止任务调度吗?
如果禁止了任务调度,串口中断只是在数据来临时进入一会就又出来,时间很短,应该影响不大。

附件: 您需要 登录 才可以下载或查看,没有帐号?注册

出0入0汤圆

发表于 2022-9-5 14:40:43 | 显示全部楼层
不怕一万就怕万一

出0入325汤圆

发表于 2022-9-5 15:15:56 来自手机 | 显示全部楼层
原则上并不会。。通常大家会加锁解决设备单一访问问题。

出0入16汤圆

发表于 2022-9-5 15:27:54 | 显示全部楼层
任务调度或者中断是否破坏写flash的时序,如果没有,问题不大。

出55入4汤圆

 楼主| 发表于 2022-9-5 15:34:27 | 显示全部楼层
wye11083 发表于 2022-9-5 15:15
原则上并不会。。通常大家会加锁解决设备单一访问问题。
(引用自3楼)


大神您好  您是说原则上我那个文件数据被错写  原因不会是串口中断引起其它高级别任务调度导致吗?

另外是不是UCOS II系统在写文件时是不是已经默认加锁了啊?

出0入325汤圆

发表于 2022-9-5 15:40:50 来自手机 | 显示全部楼层
ChenXC1121 发表于 2022-9-5 15:34
大神您好  您是说原则上我那个文件数据被错写  原因不会是串口中断引起其它高级别任务调度导致吗?

另 ...

(引用自5楼)

ucos我没有折腾过。。但根据经验,嵌入式操作系统可能不会去主动加锁。。你可以想办法测测在什么条件下最容易出错,然后定位到具体地方。

出0入84汤圆

发表于 2022-9-5 16:08:12 | 显示全部楼层
涉及到硬件的 都加个锁安全些。
也不占多少资源。

出0入0汤圆

发表于 2022-9-5 17:04:50 | 显示全部楼层
读写flash设备只需加互斥信号量即可,颗粒度做细点

出0入42汤圆

发表于 2022-9-5 17:10:32 | 显示全部楼层
flash读写操作时肯定要避免被中断。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 -- 东莞阿莫电子网站 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2023-2-8 11:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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