电脑格式化,FATFS识别不了,FATFS格式化后,电脑识别 不了?

2019-08-13 22:09发布

我前几天做了一个用stm32内部flash模拟的400K小U盘。
下来要搞FATFS文件系统,参照原子哥的例子,最后移植成功了,我把小U盘和FATFS放在了一起。
这样,插上USB和串口线,不久可以直接在PC上面复制,改动文件,然后通过串口调试助手,读取FATFS文件系统了么?

USB和FATFS都很好用,FATFS测试读写,建立文件夹,txt文件,都很好用。
问题是,我直接连接USB到电脑的话,电脑提示需要格式化这个200K的小U盘(后来加了文件系统flash占用大了,就把分配给小U盘的空间改小了)。
我选FAT格式的 4096字节簇大小(我查百度,fat32默认是4096字节的簇大小),格式化好了,当作U盘用很好。
但是我同事插上串口,用调试助手调试,打开文件夹什么的,就会出现0x0D错误,这个错误是no file system。也就是没有文件系统阿。

我通过f_mkfs函数(0,0,4096)将它用FATFS系统格式化,格式化之后,通过串口发送调试函数,都很好用。
但是PC上面的操作没用了,下次再插USB,电脑上会提示需要格式化。。

也就是说我做的固件        电脑和FATFS的格式化不一致阿。
有人遇到相同情况么,求指教阿,我继续去查查资料,读取flash看看

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
杨帆
1楼-- · 2019-08-13 23:03
回复【2楼】Badu_Space:
---------------------------------
OK了,搞了一天,出成果还是很高兴得。现在两个文件系统可以同时用了,USB上微机对文件的操作,可以通过串口调试助手实时读出来,
串口发送命令操作FATFS,必须重新插USB才能在windows窗口中看到。
因为用的内部flash的话,只有200K空间,FAT32不支持这么小的空间,所以在上位机上格式化的时候,选择FAT格式,
windows就将这块内部flash格式化成FAT12格式,每个sector 2048bytes。

在FATFS文件系统中,我参照原来原子哥的例子并查找网上资料,把内部2K为一页的flash给虚拟成512byte一个sector,4个sector为一个block
的形式。

这样FATFS在检测flash的引导扇区时,检测到引导扇区的第11个偏移地址为0008,小端模式也就是0800=2048,(windows格式化成
fat16格式,就在这个地址写入每个扇区的字节数), 和文件系统内定义的512不一致,就认为没有文件系统阿。。返回0x0D错误代码。

windows的格式化操作写得是整个引导扇区。。。而fatfs的初始化函数只是在引导扇区中加入盘符volume,所以fatfs初始化的存储器,
是无法被windows识别的。

大概是这样,等我继续再搞搞,完全搞好了传个工程。
八度空间
2楼-- · 2019-08-14 01:48
芯片内部的没做过,外挂的flash和TF卡做过,都还行
杨帆
3楼-- · 2019-08-14 02:32
FATFS要求扇区个数必须不小于128?只好扩充了下,128个扇区,每个扇区2K,也就是256K的U盘了。
 使用FATFS格式化内部flash,可以被windows识别,使用windows格式化后,也可以被fatfs识别。
 
 同时插上战舰班子的usb1,usb2之后,就可以在上微机上操作U盘文件,然后通过串口直接读出文件来测试fatfs。
 但是通过串口操作fatfs对文件的更改必须重新插拔USB才能反映在电脑上上。
八度空间
4楼-- · 2019-08-14 04:38
 精彩回答 2  元偷偷看……
xianbinrao
5楼-- · 2019-08-14 05:58
mark...............
Okbu
6楼-- · 2019-08-14 08:19
楼主,我也在做和你差不多类似的功能,把stm32内部flash模拟的70K小U盘。然后上fatfs,现在能用fatfs新建/删除 文件/文件夹,并在电脑上能正常读取。可是当程序执行新建文件/文件夹的时候,电脑端就无法正常删除和新建文件(就是在电脑端删除和新建文件后,重新插拔usb,删除的文件还在,在电脑上新建的文件不见了),楼主有遇到类型的问题吗? 求解答啊

已解决,内部FLASH在写入的时候上锁了···

一周热门 更多>