ZLG/FS文件系统的一点小问题

  最近需要做个读写sd卡的模块,所以重点研究了下zlg/fs文件系统.

  写好了驱动部分,最后调试的时候总是发现有奇怪的取数据终止现象.

  分析了半天,终于在OSFileTask通信(文件系统和os)接口函数里发现了一点小问题.

  void OSFileTask(void *pdata)

    {

    ......

        while(1)

        {

            Command=(OSFileParameter *)OSQPend(FileCommad,100,&err); //等待命令

   if(err==OS_TIMEOUT)

            {

                ......

            }

            if(err==OS_NO_ERR)

            {

                ......

            }

 

            /**********ERR*******/

            OSMboxPost(Command->Rt,(void *)1);

        }

    }

 

  最后一句OSMboxPost可能有问题,假如err为TIMEOUT,这是很常见的,100ms内没有命令,时间溢出.这个时候OSQPend会返回(void *)0给Command.这样,OSMboxPost的第一个参数就会在异常向量表那个位置取数据,那是绝对会出问题的.

  所以,如果是时间溢出,或则是Command为NULL,那就没有必要OSMboxPost了.

 

  不知道还有没有其他问题,不管如何,还是非常感谢zlg/fs,实现了一个易懂不大的文件系统,让文件系统不再那么难以上手.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值