OpenEdv-开源电子网

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

fatfs问题---ucosii平台上,进入hardfault

[复制链接]

15

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2017-7-18
在线时间
83 小时
发表于 2019-6-22 09:18:53 | 显示全部楼层 |阅读模式
20金钱
在一个ucosii线程运行测试fatfs的测试程序,总是莫名其妙的卡死,用jlink跟进了一下,系统运行一遍fatfs的测试程序后,进入了hardfault.麻烦大家帮助一下,感激不尽啊。
下面是测试fatfs的代码

int test_fatfs(void)
{
        u32 total,free;
        u8 res=0;
        u16 tmp = 0;
        DIR dir;
        FATFS *pfs;
        DWORD fre_clust, fre_sect, tot_sect;
        FIL fnew;                                                                /* 文件对象 */
        FRESULT res_flash;                                                  /* 文件操作结果 */
        UINT fnum,size;                                                                /* 文件成功读写数量 */
        char *writeF = "abcdefghijklmno";

        static char readbuffer[1000];

//==============================================================================
        printf("\n******** 文件定位和读写测试 ********\r\n");
          res_flash = f_open(&fnew, "2:FatFs_test2.txt",FA_WRITE );
       
        tmp = f_size(&fnew);        printf("文件大小:tmp=%d\r\n",tmp);
        res_flash = f_lseek(&fnew,0);
        f_write(&fnew,writeF,strlen(writeF),&fnum);//向文件中写入数据
        f_sync(&fnew);
        f_close(&fnew);

        res_flash = f_open(&fnew, "2:FatFs_test2.txt",FA_READ );
        res_flash = f_lseek(&fnew,0);
        size = f_size(&fnew);
          res_flash = f_read(&fnew,readbuffer,10,&fnum);//读取文件所有内容到缓存区
        readbuffer[fnum] = '\0';
        printf("读取的文件大小:%d+++%d\r\n",size,fnum);
          if(res_flash == FR_OK)
          {
            printf("文件内容:%s###\r\n",readbuffer);
          }
    f_close(&fnew);
}

运行上述函数的线程的代码是:
static void msc_task(void* pdata)
{       
        static u8 cntr100ms=0;
        static u8 cntr500ms=0;
        static u8 cntr1000ms=0;

        while(1)
        {

                cntr1000ms++;//1000ms任务.
                if(cntr1000ms>=20)
                {
                        cntr1000ms = 0;
                        test_fatfs();        //debug
               
                }
               
                OSTimeDlyHMSM(0,0,0,50);//延时50ms
        }
}





最佳答案

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

问题已经解决,_FS_REENTRANT配置为1,使fatfs支持多线程。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2017-7-18
在线时间
83 小时
 楼主| 发表于 2019-6-22 09:18:54 | 显示全部楼层
问题已经解决,_FS_REENTRANT配置为1,使fatfs支持多线程。
回复

使用道具 举报

15

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2017-7-18
在线时间
83 小时
 楼主| 发表于 2019-6-22 09:29:56 | 显示全部楼层
另外,请问在ucos平台上移植fatfs需要注意哪些地方?
麻烦大家了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 17:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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