|
在使用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, 3 isk 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;
}
|
|