标题: FAT16/32学习笔记 [打印本页]

作者: aabbcc    时间: 2014-11-22 15:44
标题: FAT16/32学习笔记
   原先是用RAMTRON的铁电作为存储单元,数据量有限,如果数据量大上去就要增大容量,价格昂贵。外挂一个海量存储上GU盘。有专用的USB HOST芯片,譬如FTDI新出品的VNC1L家族芯片,资料少,全是E文;国内的南京沁恒,CH375芯片。出于节省开发时间的原则考虑,直接选用南京沁恒的基于CH375 这款USB HOST芯片的U盘读写模块。MCUU盘模块之间是三线制异步串口通讯。
  硬件连接U盘模块的16pin9pinINT#)——GND15pin14pinSTA#)——+5V,12pinSIN)——TXD(MCUMAX232),11pin(SOUT)——RXD(MCUMAX232)。具体参考南京沁恒资料。
    U盘读写模块一开始运行CH37XDL.EXE模块参数设置文件,设置成三线异步串口,数据的字节顺序为大端模式(小端模式对于以MCU作为访问来说不方便),U盘插拔时自动中断通知,添加数据后自动更新文件长度(实际做还是连续保存几次数据后再程序自动更新,否则数据每变动一次就更新文件长度,FLASH擦写10W次后就OVER了,延长使用寿命),看门狗数据间隔超时启动,默认的BAUD除数是120,只有4800的波特率,改为60,调试时是9600,以后正式做改为10,使通信波特率为57600),然后点击“重新配置模块”,将新参数烧录进去。
  因为本本没有COM口,以前用FT232BL自制一个VCP电路出来,现在用深圳埃网通的MS1001S的串口服务器虚拟了个串口出来,插上U盘测试。然后用南京沁恒的模块调试V1.5摸索测试。
  插上U盘,串口自动接收到0x15,查CH375HM.H头文件里的定义是#define ERR_USB_CONNECT 0x15,即是检测到USB设备连接事件磁盘已连接,拔掉接收到0x82,是ERR_DISK_DISCON,磁盘断开或尚未连接的状态码。
  点击DISKSIZE命令,#define CMD_DiskSize 0x72,串口发送0x57 0xAB 0x72 0x00
0x57 0xAB是三线制时的同步码,3+1串口模式通讯时有STA#线通知MCU是命令还是数据。
手头正好有个KINGMAX2G U盘,DISKSIZE命令发出后,返回的数据是0x00 0x04 0x00 0x3c 0x3F 0XFF,其中第一个0x00代表命令发送状态成功,第二个0x04代表返回的参数有4个字节,接下来的4个字节的参数0x003C3FFF是该物理磁盘的总扇区数,每扇区通常为512字节,即该U盘总空间物理容量是(0x3C3FFF+1)*512 = 2,021,654,528。即是通常所说2G容量U盘。
为验证,把U盘插上电脑,用专业的WINHEX 15.1 SR-8软件查看该U盘的一些基本物理信息,如图(1)所示。Total Capacity 2,021,654,528 bytes,与使用U盘读写模块DISKSIZE查询后的信息一致。另外借助专业的WINHEX分析软件,开始全面了解FAT16/FAT32文件系统存储机制。


作者: aabbcc    时间: 2014-11-22 15:48


通过MCU访问U盘,将数据存入U盘,而后上位机通过专门的软件再读取保存的历史数据,由于牵涉到FAT16和FAT32的,NTF格式没研究,研究了三天,发现蛮好玩的,借助于专业的分析软件WINHEX,根据那些数值破译那些文件信息,真是蛮好玩的,尤其是了解知道FAT文件机制后,不借助专门的数据恢复软件,自己手动修改其中的一些数值信息,就能恢复刚删除的文件,蛮有成就感的,呵呵。

鉴于QQ日志这个破落户排版和粘帖回复图片的极大不方便,咨询了田阳后准备自己租个BLOG虚拟主机,再用WORDPRESS自己设计个个性BOLG,呼呼。QQ空间就跟它88了

作者: 梦追逍遥10    时间: 2014-12-3 20:20
不错不错,加油
作者: 554323er    时间: 2014-12-18 22:36
想学 想学 想学




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1