硬汉嵌入式论坛

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

[FatFs] 使用FatFs中f_mount重新挂载已经初始化完成的文件系统报错,提示引导签名不对

[复制链接]

1

主题

0

回帖

3

积分

新手上路

积分
3
发表于 2024-10-18 19:16:39 | 显示全部楼层 |阅读模式
在使用f_mkfs成功初始化文件系统之后,使用f_mount取消挂载,马上再次重新挂载直接报错文件系统不存在,调试找到问题出在find_volume函数中的check_fs中,进入check_fs理论上不应该返回2,我这里返回的2表示就是SD卡之前初始化的文件系统的引导签名不正确,我是直接使用的f407的板子移植最新版固件,使用野火的fatfs包,没有进行更多修改


static
BYTE check_fs (        /* 0:Valid FAT-BS, 1:Valid BS but not FAT, 2:Not a BS, 3isk error */
        FATFS* fs,        /* File system object */
        DWORD sect        /* Sector# (lba) to check if it is an FAT boot record or not */
)
{
        fs->wflag = 0; fs->winsect = 0xFFFFFFFF;        /* Invaidate window */
        if (move_window(fs, sect) != FR_OK)                        /* Load boot record */
                return 3;

        if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55)        /* Check boot record signature (always placed at offset 510 even if the sector size is >512) */
                return 2;

        if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146)                /* Check "FAT" string */
                return 0;
        if ((LD_DWORD(&fs->win[BS_FilSysType32]) & 0xFFFFFF) == 0x544146)        /* Check "FAT" string */
                return 0;

        return 1;
}

回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-11-13 14:47:28 | 显示全部楼层
楼主这个问题解决了吗?我也遇到了同样的问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116230
QQ
发表于 2024-11-14 10:03:49 | 显示全部楼层
非常抱歉,楼主的问题,竟然忘了回复了。

这种情况应该是格式化失败了。可以考虑使用SD卡联盟的小软件格式一次,然后再用这个函数格式化试试
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116230
QQ
发表于 2024-11-14 10:03:59 | 显示全部楼层
dinglonghui 发表于 2024-11-13 14:47
楼主这个问题解决了吗?我也遇到了同样的问题

可以考虑使用SD卡联盟的小软件格式一次,然后再用这个函数格式化试试
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-11 03:11 , Processed in 0.393677 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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