硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3041|回复: 4
收起左侧

[FatFs] 关于cubemx生成fatfs+freertos工程默认两个错误的问题

[复制链接]

1

主题

0

回帖

3

积分

新手上路

积分
3
发表于 2020-12-5 13:23:57 | 显示全部楼层 |阅读模式
使用环境,stm32f103rc芯片,模拟spi-SD卡。 fatfs用的User-defined,用了系统freertos版本 V2,代码都是cubemx生成。出现了下面问题。还没有开始写SD卡部分
报错问题.png
进入报错地方查看
报错地方.png
后来更改freertos版本为v1,结果报错消失。
后来查看两次代码发现
cmsis_os2.c与cmsis_os.c区别,对信号量申请方式变了。本人水平也就只能分析道这里了。有人能帮助解决下吗?
V1-cmsis-os1.png
V2-cmsis-os2.png

V1和V2不应该兼容吗?
我不知道我的理解对不对。
附上cubemx生成的工程
fatfsFreertos.zip (26.51 MB, 下载次数: 1)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2020-12-6 12:09:29 | 显示全部楼层
V1和V2不兼容。

ST给FatFS仅做了V1封装层的接口函数
回复

使用道具 举报

2

主题

28

回帖

34

积分

新手上路

积分
34
发表于 2020-12-17 13:31:39 | 显示全部楼层
你这工程建立的有问题吧,如果选择CMSIS_V2,自然会调用cmsis_os2里面的文件,cmsis_os文件中有个条件判断:
#if (osCMSIS < 0x20000U),默认建立的工程应该是这样的:
int ff_cre_syncobj (        /* 1:Function succeeded, 0:Could not create the sync object */
        BYTE vol,                        /* Corresponding volume (logical drive number) */
        _SYNC_t *sobj                /* Pointer to return the created sync object */
)
{

    int ret;
#if _USE_MUTEX

#if (osCMSIS < 0x20000U)
    osMutexDef(MTX);
    *sobj = osMutexCreate(osMutex(MTX));
#else
    *sobj = osMutexNew(NULL);
#endif

#else

#if (osCMSIS < 0x20000U)
    osSemaphoreDef(SEM);
    *sobj = osSemaphoreCreate(osSemaphore(SEM), 1);
#else
    *sobj = osSemaphoreNew(1, 1, NULL);
#endif

#endif
    ret = (*sobj != NULL);

    return ret;
}
,这样就不会出现你的未定义文件;不过你要是想用configUSE_PORT_OPTIMISED_TASK_SELECTION,是要改下文件,不然会报错误,因为是任务优先级问题
回复

使用道具 举报

7

主题

15

回帖

36

积分

新手上路

积分
36
发表于 2020-12-17 17:10:26 | 显示全部楼层
eric2013 发表于 2020-12-6 12:09
V1和V2不兼容。

ST给FatFS仅做了V1封装层的接口函数

确实,使用cubemx构建freertos v2 + fatfs 的工程会报错
回复

使用道具 举报

7

主题

15

回帖

36

积分

新手上路

积分
36
发表于 2020-12-17 17:27:23 | 显示全部楼层
eric2013 发表于 2020-12-6 12:09
V1和V2不兼容。

ST给FatFS仅做了V1封装层的接口函数

这个问题的解决方案 是不是 我们需要给FatFS做V2封装层的接口?
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 01:08 , Processed in 0.184855 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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