野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11370|回复: 16

关于文件系统的移植

[复制链接]
发表于 2016-8-2 21:52:22 | 显示全部楼层 |阅读模式
能够用文件系统就行,刚刚看了火哥sd卡文件系统的例程,然后想把音乐播放器第一个读取flash里面歌曲改成读取sd卡的歌曲,然后我把sd卡文件系统里面的ff10全部复制过去了然后用例程里面的代码测试了一下
                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 = f_open(&fnew, "0:newfile.txt", FA_OPEN_EXISTING | FA_READ);          
                res = f_read(&fnew, buffer, sizeof(buffer), &br);
                printf("\r\n %s ", buffer);
                f_close(&fnew);                                              
    f_mount(0, NULL);

可以正常显示出读取的文件,测试好sd卡没问题以后就开始调用vs1053_player_song("0:/TestFile.mp3");播放音乐了,之后就没声音,串口一直在打印音乐播放完毕,是不是没有读取成功啊,这样移植有问题吗
望解答
回复

使用道具 举报

发表于 2016-8-3 08:54:36 | 显示全部楼层
那应该是mp3部分有问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 09:11:53 | 显示全部楼层
随风 发表于 2016-8-3 08:54
那应该是mp3部分有问题

mp3单独测试的时候也没啥问题,我这样搞文件系统没问题把
回复 支持 反对

使用道具 举报

发表于 2016-8-3 09:18:04 | 显示全部楼层
saber幻 发表于 2016-8-3 09:11
mp3单独测试的时候也没啥问题,我这样搞文件系统没问题把

没问题,mp3播放可能要用到的空间比较大,把栈空间改大一点
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 09:42:51 | 显示全部楼层
随风 发表于 2016-8-3 09:18
没问题,mp3播放可能要用到的空间比较大,把栈空间改大一点

static uint8_t  buffer[4096];把这个变大点嘛
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 10:02:05 | 显示全部楼层
不行了,还是搞不了,啧,到底差在哪里
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 10:38:22 | 显示全部楼层
来人啦。。。。。。。。。。。。。
回复

使用道具 举报

发表于 2016-8-3 10:46:18 | 显示全部楼层
saber幻 发表于 2016-8-3 09:42
static uint8_t  buffer[4096];把这个变大点嘛

启动文件的栈空间
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 12:11:37 | 显示全部楼层
flyleaf 发表于 2016-8-3 10:46
启动文件的栈空间

额,不是很懂,为什么仅仅把flash换成了sd卡就不行了呢,一脸蒙蔽,总之谢谢了,能在详细一点吗
回复 支持 反对

使用道具 举报

发表于 2016-8-3 14:05:13 | 显示全部楼层
saber幻 发表于 2016-8-3 12:11
额,不是很懂,为什么仅仅把flash换成了sd卡就不行了呢,一脸蒙蔽,总之谢谢了,能在详细一点吗

一步步硬件调试,可以使用printf语句把数据打印到上位机来看,调试
回复 支持 反对

使用道具 举报

发表于 2016-8-3 14:43:24 | 显示全部楼层
saber幻 发表于 2016-8-3 10:38
来人啦。。。。。。。。。。。。。

帮顶                                
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 17:46:44 | 显示全部楼层
flyleaf 发表于 2016-8-3 14:05
一步步硬件调试,可以使用printf语句把数据打印到上位机来看,调试

我在mp3播放函数中打开文件的语句后面把返回值打印到串口了,噗,杂是12啊,这是什么原因
QQ截图20160803174510.png
回复 支持 反对

使用道具 举报

发表于 2016-8-3 17:52:03 | 显示全部楼层
saber幻 发表于 2016-8-3 17:46
我在mp3播放函数中打开文件的语句后面把返回值打印到串口了,噗,杂是12啊,这是什么原因

那就查文件系统的说明,返回值为12,是不是没有fmount?或者是mp3播放的一些地方没有改路径,还是使用flash的路径?
  1. typedef enum {
  2.         FR_OK = 0,                                /* (0) Succeeded */
  3.         FR_DISK_ERR,                        /* (1) A hard error occurred in the low level disk I/O layer */
  4.         FR_INT_ERR,                                /* (2) Assertion failed */
  5.         FR_NOT_READY,                        /* (3) The physical drive cannot work */
  6.         FR_NO_FILE,                                /* (4) Could not find the file */
  7.         FR_NO_PATH,                                /* (5) Could not find the path */
  8.         FR_INVALID_NAME,                /* (6) The path name format is invalid */
  9.         FR_DENIED,                                /* (7) Access denied due to prohibited access or directory full */
  10.         FR_EXIST,                                /* (8) Access denied due to prohibited access */
  11.         FR_INVALID_OBJECT,                /* (9) The file/directory object is invalid */
  12.         FR_WRITE_PROTECTED,                /* (10) The physical drive is write protected */
  13.         FR_INVALID_DRIVE,                /* (11) The logical drive number is invalid */
  14.         FR_NOT_ENABLED,                        /* (12) The volume has no work area */
  15.         FR_NO_FILESYSTEM,                /* (13) There is no valid FAT volume */
  16.         FR_MKFS_ABORTED,                /* (14) The f_mkfs() aborted due to any parameter error */
  17.         FR_TIMEOUT,                                /* (15) Could not get a grant to access the volume within defined period */
  18.         FR_LOCKED,                                /* (16) The operation is rejected according to the file sharing policy */
  19.         FR_NOT_ENOUGH_CORE,                /* (17) LFN working buffer could not be allocated */
  20.         FR_TOO_MANY_OPEN_FILES,        /* (18) Number of open files > _FS_LOCK */
  21.         FR_INVALID_PARAMETER        /* (19) Given parameter is invalid */
  22. } FRESULT;
复制代码
回复 支持 反对

使用道具 举报

发表于 2016-8-3 19:10:31 | 显示全部楼层
flyleaf 发表于 2016-8-3 14:05
一步步硬件调试,可以使用printf语句把数据打印到上位机来看,调试

牛逼,赞一个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 20:31:07 | 显示全部楼层
flyleaf 发表于 2016-8-3 17:52
那就查文件系统的说明,返回值为12,是不是没有fmount?或者是mp3播放的一些地方没有改路径,还是使用fla ...

谢谢您的耐心指导,这个函数我调用了,我在自己自习作么作么
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 21:26:20 | 显示全部楼层
saber幻 发表于 2016-8-3 20:31
谢谢您的耐心指导,这个函数我调用了,我在自己自习作么作么

哎,快要崩溃了,想不懂,身边连个能问的人都没有,我就是把野火sdio文件系统中的ff9中的和sdcard.c和h文件把原先mp3例程中flash的系统文件和。c文件替换掉了,然后调用的sd卡的f_mount,其他的东西基本没怎么修改,大神给看看吧,我能力很有限啊,刚自学不久
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 21:36:07 | 显示全部楼层
saber幻 发表于 2016-8-3 20:31
谢谢您的耐心指导,这个函数我调用了,我在自己自习作么作么

之后我再测试又显示的是3了,不是12了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 09:44 , Processed in 0.033620 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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