打印

SD 卡的 FATFS 移植

[复制链接]
2759|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ngyg12|  楼主 | 2010-9-26 17:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近小弟在一块裸奔的 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[BS_55AA]) != 0xAA55)    /* Check record signature (always placed at offset 510 even if the sector size is >512) */
  return 2;
if (!memcmp(&fs->win[BS_FilSysType], "FAT", 3))   /* Check FAT signature */
  return 0;
if (!memcmp(&fs->win[BS_FilSysType32], "FAT32", 5) && !(fs->win[BPB_ExtFlags] & 0x80))
  return 0;

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

使用特权

评论回复
地板
我是土匪| | 2010-9-27 09:58 | 只看该作者
先保证底层,再调试接口函数。

使用特权

评论回复
5
ngyg12|  楼主 | 2010-9-28 15:57 | 只看该作者
4# 我是土匪

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

使用特权

评论回复
6
yxwsz| | 2010-10-1 17:46 | 只看该作者
efsl
embedded file system library, sourceforge上的一个开源的,通过SPI口操作SD的工程。
直接拿来用就好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:菜鸟一个望大家多多指教...

5

主题

553

帖子

5

粉丝