野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12613|回复: 16

求教关于FATFS移植的那个例程烧到板子里没能成功运行的问题

[复制链接]
发表于 2013-7-14 20:30:48 | 显示全部楼层 |阅读模式
1.micro SD卡我用的是4G的,运行高级篇的第一个例程运行成功

这是一个MicroSD卡实验(没有跑文件系统).........


SD_Init 初始化成功


CardType is :2
CardCapacity is :-329777152
CardBlockSize is :512
RCA is :43690
ManufacturerID is :3


擦除测试成功!
单块读写测试成功!
多块读写测试成功!

2.第二个例程烧到板子后没有超级终端上没显示期望结果

这是一个MicroSD卡文件系统实验(FATFS R0.09)


disk_initialize starting......

3.我在一个f_open后加了句代码打印返回值:

int main(void)
{       




   /* USART1 config */
        USART1_Config();


        /* Interrupt Config */
  NVIC_Configuration();


        printf("\r\n 这是一个MicroSD卡文件系统实验(FATFS R0.09)\n");


        printf ( "\r\n disk_initialize starting......\n " );


        f_mount(0,&fs);                  


        res = f_open(&fdst,"0:/Demo.TXT",FA_CREATE_NEW | FA_WRITE);
        printf("f_open return:%d\n",res);
        后面代码略.......
结果在超级终端上打印:
这是一个MicroSD卡文件系统实验(FATFS R0.09)


disk_initialize starting......
                                f_open return:13

求教到底是哪里出问题了,为嘛第一个f_open返回结果就不正确了呢,是文件系统没移植成功么?
本人新手,刚拿到开发板不久,不知如何下手找错。



回复

使用道具 举报

 楼主| 发表于 2013-7-14 20:33:44 | 显示全部楼层
本打算截图发帖的,结果网速的问题上传老出问题,从超级终端上复制过来的,凑合着看吧,就想知道那里出错了
回复 支持 反对

使用道具 举报

发表于 2013-7-15 14:30:40 | 显示全部楼层
把卡重新格式化试试,格式化成FAT32的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-15 19:26:33 | 显示全部楼层
格式化了,可是结果一样丫
还是第一个没有文件系统的成功了,有文件系统的那个在超级终端上打印一个结果
回复 支持 反对

使用道具 举报

发表于 2013-7-15 19:40:06 | 显示全部楼层
無掛無礙 发表于 2013-7-15 19:26
格式化了,可是结果一样丫
还是第一个没有文件系统的成功了,有文件系统的那个在超级 ...

返回值是 FR_NO_FILESYSTEM,                /* (13) There is no valid FAT volume */
跟SD卡有关,格式化为FAT或FAT32试下
再不行,换一张卡试试
回复 支持 反对

使用道具 举报

发表于 2013-7-15 19:42:57 | 显示全部楼层
無掛無礙 发表于 2013-7-15 19:26
格式化了,可是结果一样丫
还是第一个没有文件系统的成功了,有文件系统的那个在超级 ...

如果还是不行,那试试用FATFS来建立文件系统(格式化)
f_open 提示没有在目标存储器上建立文件系统,试试先 res = f_mkfs(0,0,2048);
2048指的是你的目标存储器的扇区大小2048 bytes
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-16 09:53:40 | 显示全部楼层
fire 发表于 2013-7-15 14:30
把卡重新格式化试试,格式化成FAT32的

格式化成FAT32后实验成功啦、

我前两次格式化后先烧第一个没有文件系统的例程,然后再烧第二个有文件系统的例程,这样就会出现我发帖的这个结果

格式化后直接移植文件系统就可以咯

为嘛格式化后先烧第一个就不行咧
回复 支持 反对

使用道具 举报

发表于 2013-7-16 10:05:39 | 显示全部楼层
無掛無礙 发表于 2013-7-16 09:53
格式化成FAT32后实验成功啦、

我前两次格式化后先烧第一个没有文件系统的例程,然后再烧第二个有文件系 ...

第一个没文件系统的例程,直接对SD底层进行修改,破坏了文件系统啦

既然破坏了文件系统,那再跑文件系统,肯定识别不了文件系统啊
回复 支持 反对

使用道具 举报

发表于 2013-7-16 14:00:36 | 显示全部楼层
無掛無礙 发表于 2013-7-16 09:53
格式化成FAT32后实验成功啦、

我前两次格式化后先烧第一个没有文件系统的例程,然后再烧第二个有文件系 ...

这个我在SDIO里面的教程讲到了为什么不行
回复 支持 反对

使用道具 举报

发表于 2013-7-16 14:00:40 | 显示全部楼层
無掛無礙 发表于 2013-7-16 09:53
格式化成FAT32后实验成功啦、

我前两次格式化后先烧第一个没有文件系统的例程,然后再烧第二个有文件系 ...

这个我在SDIO里面的教程讲到了为什么不行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-16 19:21:14 | 显示全部楼层
fire 发表于 2013-7-16 10:05
第一个没文件系统的例程,直接对SD底层进行修改,破坏了文件系统啦

既然破坏了文件系统,那再跑 ...

偶是误解了教程里的这句话了:
本实验是在上一讲《SDIO(4bit + DMA)》的基础上讲解的,只有上一讲的实验成功了,文件系统才能跑起来。
还特意完成第一个例程后烧写后烧第二个,

谢谢火哥的耐心指导
回复 支持 反对

使用道具 举报

发表于 2014-5-3 14:24:21 | 显示全部楼层
fire 发表于 2013-7-16 10:05
第一个没文件系统的例程,直接对SD底层进行修改,破坏了文件系统啦

既然破坏了文件系统,那再跑 ...

火哥,我以为这个文件系统的移植应该完成以下两个功能:
1.对一块没有任何文件系统的卡添加文件组织管理功能,也就是类似于卡的格式化,比如可以将一块没有文件系统的卡或者是之前的文件系统被破坏卡格式化成相应的格式(这里应该是FAT)。

2.能够利用与此文件系统相关的操作,比如f_open,f_read函数的使用。

但现在我必须要在电脑上将卡预先格式化成FAT32格式,难道这里所说的文件系统的移植只是添加FAT文件系统操作的相关的函数功能吗?
回复 支持 反对

使用道具 举报

发表于 2014-5-3 14:32:20 | 显示全部楼层
daydream 发表于 2014-5-3 14:24
火哥,我以为这个文件系统的移植应该完成以下两个功能:
1.对一块没有任何文件系统的卡添加文件组织管理 ...

是的,野火移植的这个驱动没有实现格式化的功能
回复 支持 反对

使用道具 举报

发表于 2014-5-3 16:00:10 | 显示全部楼层
随风 发表于 2014-5-3 14:32
是的,野火移植的这个驱动没有实现格式化的功能

这次疑惑就解开了。
回复 支持 反对

使用道具 举报

发表于 2015-3-14 22:08:42 | 显示全部楼层
我也遇到了这个问题,看了论坛才知道怎么回事
回复 支持 反对

使用道具 举报

发表于 2015-3-15 15:50:50 | 显示全部楼层
怎么做可以完成格式化的功能?
回复 支持 反对

使用道具 举报

发表于 2015-3-15 20:23:57 | 显示全部楼层
fire 发表于 2013-7-16 14:00
这个我在SDIO里面的教程讲到了为什么不行

火哥,我的125M的,直接用你的历程,卡也先后格式化成FAT、FAT32格式的啦,都不行啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 09:42 , Processed in 0.035192 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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