ngyg12 发表于 2010-9-26 17:24

SD 卡的 FATFS 移植

最近小弟在一块裸奔的 ARM 上移植这个系统. 遇到个问题:FR_NO_FILESYSTEM
我现在只想能创建一个文件而已,不写也不读.
但总是遇到这个问题!不知道是怎么回事。不知道有哪位大哥做过这个,希望能指点小弟一下!不胜感激...

我是土匪 发表于 2010-9-27 09:33

接口函数或底层的问题.
前提,确保SD卡已经被格式化过。

ngyg12 发表于 2010-9-27 09:50

2# 我是土匪

谢谢关注, 我把 SD 卡格式化成 FAT32 (用电脑格式化的),我也不确定是不是底层的问题,但是第一次调用底层的读一个 Block 的时候能够通过啊!就是在调用第二次的时候通不过了,返回的是错误!现在的问题就变成了FILE_RW_ERROR, 就是有点想不明白, 它第一次能够调用成功, 第二次就通不过了!就是下面这个在调用disk_read的时候通不过!


if (sector)
{
   if (disk_read(fs->drive, fs->win, sector, 1) != RES_OK)
    return FALSE;
    fs->winsect = sector;
}


但是在以下几个disk_read的调用能够通过!
if (disk_read(fs->drive, fs->win, sect, 1) != RES_OK) /* Load boot record*/
return 2;
if (LD_WORD(&fs->win) != 0xAA55)    /* Check record signature (always placed at offset 510 even if the sector size is >512) */
return 2;
if (!memcmp(&fs->win, "FAT", 3))   /* Check FAT signature */
return 0;
if (!memcmp(&fs->win, "FAT32", 5) && !(fs->win & 0x80))
return 0;

就是不知道为什么,还望指点!

我是土匪 发表于 2010-9-27 09:58

先保证底层,再调试接口函数。

ngyg12 发表于 2010-9-28 15:57

4# 我是土匪

恩 现在我调试底层,不过遇到个奇怪的问题. 如果我单独的读写某个扇区,写和读取都没有什么问题。但是如果我在读取了 SD 卡的容量后马上进行某个扇区的读写,这样的话,写就不正确了!不知道为什么! 如果不读取容量只进行写读扇区就行....还望指点....

yxwsz 发表于 2010-10-1 17:46

efsl
embedded file system library, sourceforge上的一个开源的,通过SPI口操作SD的工程。
直接拿来用就好了
页: [1]
查看完整版本: SD 卡的 FATFS 移植