野火电子论坛
标题:
关于Fatfs文件系统移植出现的问题
[打印本页]
作者:
csycmcc
时间:
2021-10-14 18:42
标题:
关于Fatfs文件系统移植出现的问题
使用野火提供的例程代码进行编改,文件挂载部分成功,可以进行读写操作,问题在于:打开文件,写入数据,关闭文件,再次打开,读取到的内容为空,如果使用FA_OPEN_EXISTING,则提示找不到文件,但是如果在不关闭文件的情况下,即写完数据马上读取文件内容,可以读取到写入的数据
已经尝试过f_sync函数刷新缓冲区,并不能解决问题,使用获取flash大小的函数,发现flash在创建文件后,可用容量减少
目前没有头绪来解决这个文件找不到的问题,希望能得到帮助
下面是部分代码
//擦除FLASH
SPI_FLASH_BulkErase();
//挂载文件系统
printf("\n挂载文件系统\n");
res = f_mount(&fsObject,"1:",1);
while(res ==FR_NOT_READY)
{
res = f_mount(&fsObject,"1:",1);
}
if(res == FR_NO_FILESYSTEM)
{
f_mkfs("1:",0,0);
}
res = f_mount(&fsObject,"1:",1);
if(res==FR_OK)
{
printf("\n挂载成功\n");
printf("\n进行文件读写测试\n");
}
while (DEF_TRUE)
{
memset(newName,0,sizeof(newName));
memset(fileName,0,sizeof(fileName));
memset(wData,0,sizeof(wData));
strcat(newName,"1:");
printf("\n请输入要创建的文件名\n");
scanf("%s\n",fileName);
printf("\n%s\n",fileName);
strcat(newName,fileName);
printf("\n请输入文件内容\n");
while((ch=getchar())!='\n')
{
wData[i] = ch;
i++;
}
printf("\n%s\n",wData);
res= f_open(&fp,newName,FA_CREATE_ALWAYS|FA_OPEN_EXISTING|FA_READ|FA_WRITE);
if(res == FR_OK)
{
printf("\n创建文件%s\n",fileName);
res = f_write(&fp,wData+1,sizeof(wData),&bw);
if(res==FR_OK)
{
printf("\n写入数据成功,写入数据为: %s \n",wData+1);
}
f_sync(&fp);
f_lseek(&fp,0);
// printf("\n读取文件%s\n",fileName);
res = f_read(&fp,rData,f_size(&fp),&br);
// if(res == FR_OK)
// {
// printf("\n读取成功,文件内容为:%s\n",rData);
// }
res = f_close(&fp);
}
printf("\n读取文件%s\n",fileName);
res= f_open(&fp,newName,FA_OPEN_ALWAYS|FA_READ|FA_WRITE);
if(res == FR_OK)
{
res = f_read(&fp,rData,f_size(&fp),&br);
if(res == FR_OK)
{
printf("读取内容为 =%s\n",rData);
}
f_close(&fp);
}
复制代码
作者:
LF_laffy
时间:
2021-10-15 09:50
我也遇到过,有点难分析
作者:
csycmcc
时间:
2021-10-20 13:55
LF_laffy 发表于 2021-10-15 09:50
我也遇到过,有点难分析
我现在一点头绪都没有,应该怎么去查找问题呢?
作者:
csycmcc
时间:
2022-1-4 13:43
个人问题出现的原因:fatfs对硬件flash的大小有要求
截取片段如下:
Cluster size: Upto 128 sectors on FAT volume and upto 16 MB on exFAT volume.
Sector size: 512, 1024, 2048 and 4096 bytes.
由于当时使用的flash太小,即使烧录成功,也不能很好的实现文件系统的功能,后更改为SD卡,解决了这个问题
细节可参考说明文档:
https://dev.ti.com/tirex/explore ... ts/doc/appnote.html
作者:
羊烊
时间:
2022-9-4 11:14
就是FLASH的空间太小的原因吗?
作者:
duter_hhh
时间:
2022-9-28 10:24
我也遇到了这个问题,通过排查,发现是从百度网盘下的资料里的FATFS文件系统有问题,我从野火大课堂上重新下载了资料,将旧的FATFS文件夹替换后就解决了
作者:
radonlin
时间:
2022-10-16 10:24
我的发现是打开文件,写文件,关闭文件,再打开,读取文件就可以显示刚才写的数据,而把写的操作屏蔽后,直接读取文件数据,则读取不到,不知道什么情况
欢迎光临 野火电子论坛 (https://www.firebbs.cn/)
Powered by Discuz! X3.4