硬汉嵌入式论坛

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

[FatFs] 一張2g 及 128g sdsdcard f_mount 時 在checc_fs()都印出return 2 (2:Valid BS but not FAT)

[复制链接]

6

主题

22

回帖

40

积分

新手上路

积分
40
发表于 2023-7-24 11:36:11 | 显示全部楼层 |阅读模式
想請問

我去ff.c  看


/*-----------------------------------------------------------------------*/
/* Load a sector and check if it is an FAT boot sector                   */
/*-----------------------------------------------------------------------*/

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

    if (ld_word(fs->win + BS_55AA) != 0xAA55) {db_printf(DB_ALWAYS,"return 3\n"); return 3;} /* Check boot record signature (always placed here even if the sector size is >512) */

    if (fs->win[BS_JmpBoot] == 0xE9 || (fs->win[BS_JmpBoot] == 0xEB && fs->win[BS_JmpBoot + 2] == 0x90)) {
        if ((ld_dword(fs->win + BS_FilSysType) & 0xFFFFFF) == 0x544146) return 0;   /* Check "FAT" string */
        if (ld_dword(fs->win + BS_FilSysType32) == 0x33544146) return 0;            /* Check "FAT3" string */
    }
#if _FS_EXFAT
    if (!mem_cmp(fs->win + BS_JmpBoot, "\xEB\x76\x90" "EXFAT   ", 11))  {db_printf(DB_ALWAYS,"return 1\n");return 1;}

#endif
    db_printf(DB_ALWAYS," return 2\n");
    return 2;
}


用了一張2g 及 128g sdsdcard  f_mount 時 在checc_fs()都印出return 2 (2:Valid BS but not FAT)
不是應該是return 0  retrun 1嗎?
請問這是有啥原因?

2g這張卡可以寫入但128g 寫入失敗 出現error : FR_DISK_ERR

感謝





回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2023-7-24 11:51:48 | 显示全部楼层
你的fatfs移植,当前还是这么多问题?

使用这个小软件格式化试试:

SD卡联盟发布的SD/SDHC/SDXC格式化小软件V5.0.1
https://www.armbbs.cn/forum.php? ... id=96181&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2023-7-25 13:51:08 | 显示全部楼层
本帖最后由 iriss 于 2023-7-25 17:16 编辑

感謝回覆
後來用格式化設定為exfat

現在要加入DMA, 就移植stmcube產生相關程式到我的實驗程式

想請問在ClockDiv 再沒DMA時我要要設定30才能掛載(clockdiv 要如何決定大小,太小會出現 錯誤  :HAL_SD_ERROR_CMD_RSP_TIMEOUT)
但如果加入DMA, ClockDiv應該要可以變小, 但不行

請問這樣是我移植上那邊沒做好 還是有其他原因??  感謝

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2023-7-26 07:01:53 | 显示全部楼层
iriss 发表于 2023-7-25 13:51
感謝回覆
後來用格式化設定為exfat

没遇到过这种问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 23:26 , Processed in 0.269725 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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