|
30積分
我在STM32上移植了一個(gè)FATFS R0.07c的文件系統(tǒng),一直工作正常,手里的兩個(gè)SD卡都沒問題。昨天我買了一個(gè)新的SD卡,發(fā)現(xiàn)識(shí)別不出來(lái)。
檢查一番發(fā)現(xiàn),我的兩張卡,都是2G的,一張V1.1的 ,一張V2.0,而新的是2.0SDHC的。
我在PC機(jī)上對(duì)這張卡進(jìn)行了幾次格式化,也是同樣的現(xiàn)象。
我跟蹤代碼發(fā)現(xiàn):返回錯(cuò)誤的地方在auto_mount 里調(diào)用的 check_fs函數(shù)
if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55){ /* Check record signature (always placed at offset 510 even if the sector size is >512) */
return 2;
}
這里返回的如果是0xAA55
但現(xiàn)在卻不是
哪位兄弟知道是怎么回事,請(qǐng)告訴一下,謝謝了
----------------------------------------------------------------------------------------------
disk_read(fs->drive, fs->win, sect, 1)
fs->win[BS_55AA];
fs->win[BS_55AA+1];
第一次讀出來(lái)的是55AA
第二次就是0000,
這是啥問題呢
----------------------------------------------------------------------------------------------
關(guān)于這個(gè)問題,到現(xiàn)在為止,我把問題范圍縮小了一些,
文件系統(tǒng)掛載時(shí),先讀第一個(gè)扇區(qū)MBR和DPT,這一步,我手頭所有的卡都能得到數(shù)據(jù)。
下一步,文件系統(tǒng)要根據(jù)DPT的第一分區(qū)的一道信息去讀DBR
沒問題的卡,都能都會(huì)正確的信息,在510和511位置 為0xAA和0x55
但出問題的SDHC卡,讀回來(lái)的就是一個(gè)空白的數(shù)據(jù)包
我肯定懷疑DBR的位置不對(duì),
另外2張卡 DBR的地址分別為0x000000F3 和 0x00000087
我兩張出問題的SDHC 卡,DBR的地址都是 0x00002000
卡我都在PC上多次格式化了,拷貝刪除都沒問題。
我對(duì)這方面的知識(shí)只是一知半解,邊學(xué)邊干,哪個(gè)同學(xué)能看出問題在哪,請(qǐng)多多指教,我會(huì)不斷把我的進(jìn)展添加上來(lái),解決了以后,也能讓后來(lái)者看個(gè)詳細(xì)的過程,少走彎路吧。 |
|