OpenEdv-开源电子网

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

有关fatfs中f_lseek函数的问题请教一下

[复制链接]

15

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
414
金钱
414
注册时间
2016-2-24
在线时间
155 小时
发表于 2020-7-16 11:20:06 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 全然向你 于 2020-7-16 13:42 编辑

移植的正点的音乐播放器试验,在裸机下可以正常播放,移植了freertos后将函数放到任务里不能播放音乐,仿真发现在mp3_get_info函数里的f_lseek(fmp3,fmp3->obj.objsize-128);函数处,移动指针失败,f_lseek的返回值为0X02,断言失败;将f_lseek函数放到裸机的while(1)循环里可以正常移动指针;放到freertos的任务里就会失败;百度和论坛了各种关于fatfs的文章还是没有解决了;1:在裸机情况下f_lseek函数可以正常移动指;
2:在freertos的任务里f_lseek函数移动指针失败,返回值0x02,断言失败;(只有一个任务)
3:怀疑是函数重入问题,将fatfs按照正点原子的综合历程添加了void ff_leave(FATFS* fs);void ff_enter(FATFS *fs);两个函数;问题依然没有解决;

4:看到原子哥有关fatfs字节对齐导致问题的帖子,会不会是这个原因,
各路大神或遇到过类似问题的帮忙解答一下;谢谢哦;@正点原子
5:忘了补充一点,在freertos的任务里运行到MP3FreeDecoder(mp3decoder);函数时总会进hardfaulthandler中断;


vu8 cnt0=0;
vu8 cnt1=0;
void ff_enter(FATFS *fs)
{   
        if(cnt0)
        {
                printf("in shit:%d\r\n",cnt0);
        }
        if(fs->drv!=3)
        {
                taskENTER_CRITICAL();           //½øèëáù½çÇø
                cnt0++;
        }else
        {  
                vTaskSuspendAll();                        //×èÖ1ucosμ÷¶è
                cnt1++;
        }  
}
//íË3öáù½çÇø
void ff_leave(FATFS* fs)
{
        if(cnt0)
        {
                cnt0--;
                taskEXIT_CRITICAL();            //íË3öáù½çÇø
        }
        if(cnt1)
        {
                cnt1--;
                xTaskResumeAll();        //¿aÆôucosμ÷¶è        
        }
}



这是参照综合历程改的void ff_leave(FATFS* fs);void ff_enter(FATFS *fs);两个函数

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

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5137
金钱
5137
注册时间
2014-8-26
在线时间
1316 小时
发表于 2020-7-16 11:39:06 | 显示全部楼层
回复

使用道具 举报

15

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
414
金钱
414
注册时间
2016-2-24
在线时间
155 小时
 楼主| 发表于 2020-7-16 11:44:53 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-30 23:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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