在一个flash上创建两个文件系统,当不同的任务分别操作两个文件系统的时候,假如一个低优先级的任务去写或擦除,低优先级任务刚刚处理到任务状态字的时候被高优先级任务中断,如果高优先级任务去读内容,可能读到的是中间状态0x80,如果高优先级任务去写,可能由于干扰了flash的解锁状态,返回到低优先级任务执行时,执行失败。
至于什么情况下会出现两个任务同时写的情况。首先,如果有定时写或读文件系统的处理,是对双文件系统实现最大的危害,vxWorks自身没有这样的机制,我印象中某些公司的代码里面有过定时日志或其他的处理,需要注意了;其次,dosfs文件系统是有缓冲的,在dosfs和tffs之间有10个64K大小的cbio cache,写操作会先写入缓冲池缓冲,等任务不忙了再写入,这部分也会对双文件系统造成危害,但这部分同样也是可以规避掉的,例如在调用完write后增加ioctrl的调用,让数据写入flash后再返回,规避这部分的代价是降低了系统的实时性,因为当前写文件的任务一定是当前任务优先级最高的任务,如果让它占着cpu写flash,会让其他有需要的任务得不到调度,可能引发的后果例如操作命令行的时候有一段时间没有任何响应等。
从这个意义上讲,如果规避得当,创建两个TFFS文件系统也可以正常运行。
我要赚赏金打赏帖 |
|
|---|---|
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
我要赚赏金
