野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12753|回复: 7

请教一个文件系统问题

[复制链接]
发表于 2014-1-20 15:01:22 | 显示全部楼层 |阅读模式
SD卡操作没问题,移植文件系统时(FR_OK = 0)
f_mount(0,&fs);
res = f_open(&fnew, "0:newfile.txt", FA_CREATE_ALWAYS | FA_WRITE );
if ( res == FR_OK )
{
  res = f_write(&fnew, textFileBuffer, sizeof(textFileBuffer), &bw);
  f_close(&fnew);      
}

res 返回为0x0D ,请问下还要配置哪儿呢?
diskio.c文件和例程一样的配置。。
回复

使用道具 举报

 楼主| 发表于 2014-1-20 15:02:17 | 显示全部楼层
#include "diskio.h"
#include "sdcard.h"

#define BLOCK_SIZE     512 /* Block Size in Bytes */

DSTATUS disk_initialize(BYTE drv)
{
        SD_Error  Status;
        /* Supports only single drive */
        if (drv)
        {
                return STA_NOINIT;
        }
/*-------------------------- SD Init ----------------------------- */
          Status = SD_Init();
        if (Status != SD_OK )
        {
                return STA_NOINIT;
        }
        else
        {
                return RES_OK;
        }
}

DSTATUS disk_status(BYTE drv)
{       
        return RES_OK;
}

DRESULT disk_read(
        BYTE drv,               
        BYTE *buff,               
        DWORD sector,       
        BYTE count               
)
{
        if(count==1)
    {
         SD_ReadBlock(sector*BLOCK_SIZE,(uint8_t *)buff,BLOCK_SIZE);         
        }
        else
    {
         SD_ReadMultiBlocks(sector*BLOCK_SIZE,(uint8_t *)buff,BLOCK_SIZE,count);
        }
        return RES_OK;
}

#if _READONLY == 0
DRESULT disk_write (
        BYTE drv,                        /* Physical drive nmuber (0..) */
        const BYTE *buff,        /* Data to be written */
        DWORD sector,                /* Sector address (LBA) */
        BYTE count                        /* Number of sectors to write (1..255) */
)
{
        if(count==1)
    {
         SD_WriteBlock(sector*BLOCK_SIZE,(uint8_t *)buff,BLOCK_SIZE);
        }
        else
    {
         SD_WriteMultiBlocks(sector*BLOCK_SIZE,(uint8_t *)buff,BLOCK_SIZE,count);
        }
        
  return RES_OK;
}
#endif

DRESULT disk_ioctl (
        BYTE drv,                /* Physical drive nmuber (0..) */
        BYTE ctrl,                /* Control code */
        void *buff                /* Buffer to send/receive control data */
)
{
        return RES_OK;
}
                                                         
/*-----------------------------------------------------------------------*/
/* Get current time                                                      */
/*-----------------------------------------------------------------------*/
DWORD get_fattime(void)
{
        return 0;
}
回复 支持 反对

使用道具 举报

发表于 2014-1-20 15:21:27 | 显示全部楼层
按你贴出来的代码来看是没有错了,你查找一下返回0xd0在文件系统代表什么错误吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-20 15:25:55 | 显示全部楼层
FR_NO_FILESYSTEM (0x0D)无文件操作系统。。这是什么情况,还要先格式化么?
回复 支持 反对

使用道具 举报

发表于 2014-1-20 15:29:30 | 显示全部楼层
ajungle 发表于 2014-1-20 15:25
FR_NO_FILESYSTEM (0x0D)无文件操作系统。。这是什么情况,还要先格式化么?

是的,把你的sd卡在电脑上格式化成fat格式即可。     或者你可以尝试编写代码,检测到没有文件系统的时候调用文件系统的格式化函数对sd卡格式化
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-20 15:33:31 | 显示全部楼层
嘿嘿,你有这个代码么?
回复 支持 反对

使用道具 举报

发表于 2014-1-20 15:36:07 | 显示全部楼层
ajungle 发表于 2014-1-20 15:33
嘿嘿,你有这个代码么?

这个就交给你啦。。。写好给我看看,好像是调用一个文件系统的上层函数就可以了,但我也没试过
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-20 15:37:38 | 显示全部楼层
嗯,我来试试,谢谢啦!
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-12-23 00:06 , Processed in 0.038654 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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