OpenEdv-开源电子网

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

FreeRTOS+fatfs移植问题请教

[复制链接]

11

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2014-10-10
在线时间
68 小时
发表于 2018-5-16 16:15:11 | 显示全部楼层 |阅读模式
10金钱
我现在原子的STM32F429开发板,不带操作系统用SDIO和fatfs文件系统读写SD卡都正常,
现在我加入了FreeRTOS操作系统,只创建了一个任务,用SDIO和fatfs文件系统读写SD卡就不正常。
可以读出SD卡的状态,比如容量,卡类型什么的都能读到。
   retSD = f_mount(&SDFatFS, "", 0);
         if(retSD)
    {
        printf(" mount error : %d \r\n",retSD);
        Error_Handler();
    }
    else
        printf(" mount sucess!!! \r\n");

         /*##-2- Create and Open new text file objects with write access ######*/
    retSD = f_open(&SDFile, filename, FA_CREATE_ALWAYS | FA_WRITE);
    if(retSD)
        printf(" open file error : %d\r\n",retSD);
    else
        printf(" open file sucess!!! \r\n");

这两个函数执行都是正确的,返回都是FR_OK
但是,我观测到 f_open 函数中
/*-----------------------------------------------------------------------*/
/* Open or Create a File                                                 */
/*-----------------------------------------------------------------------*/

FRESULT f_open (
        FIL* fp,                        /* Pointer to the blank file object */
        const TCHAR* path,        /* Pointer to the file name */
        BYTE mode                        /* Access mode and file open mode flags */
)
{
        FRESULT res;
        DIR dj;
        FATFS *fs;
#if !_FS_READONLY
        DWORD dw, cl, bcs, clst, sc;
        FSIZE_t ofs;
#endif
        DEF_NAMBUF

上面代码是 ff.c 中   f_open 的一部分源码,其中,有个参数  FATFS *fs  我用ST-LINK调试,
一直运行 f_open中的代码 到源码这个函数  mem_set(fp->buf, 0, _MAX_SS);        /* Clear sector buffer */   前,FATFS *fs参数的值都不是空,
但是运行完这个函数 mem_set(fp->buf, 0, _MAX_SS);        /* Clear sector buffer */ 后,
FATFS *fs参数就为空了,不知道原因,这个参数是函数的内部参数,外部不可能改变他的值,mem_set这个函数赋值也不是FATFS *fs的地址 。

我在不带 FreeRTOS 的程序中观察了,这个参数在运行完这个函数mem_set(fp->buf, 0, _MAX_SS);        /* Clear sector buffer */
后,是不会变为空的。

请教啊,求助啊,弄了好久了,搞不明白


       


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

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10542
金钱
10542
注册时间
2017-2-18
在线时间
1908 小时
发表于 2018-5-16 17:46:17 | 显示全部楼层
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-6-7 18:33:55 | 显示全部楼层
有没考虑过是堆栈空间的问题?启动文件堆栈空间设置够不够
回复

使用道具 举报

26

主题

1538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6379
金钱
6379
注册时间
2015-8-25
在线时间
1004 小时
发表于 2018-6-8 08:58:51 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 23:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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