欢迎来到天天文库
浏览记录
ID:13718529
大小:34.45 KB
页数:9页
时间:2018-07-24
《开发u盘的几点体会》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、开发U盘的几点体会如果你开发过USB相关项目,理解USB的一些基本概念,例如设备描述符、配置描述符、子类规范等,那么开发U盘只要概念清晰应该不难。EhW电子资料网 以下是我开发过程中的几个相关步骤:EhW电子资料网·保证USB芯片正常工作,用其他USB成功项目验证硬件连接及固件的正确性·按MassStorage协议Bulk-Only模式提供描述符,使PC机控制面板上设备类型出现MassStorageDevice·响应SCSI指令集中Inquiry命令,可以出现盘符·实现FAT16文件系统·处理SCSI命令集中READ命令及其他U
2、FI命令,可以访问盘符·处理SCSI命令集中WRITE命令·U盘开发成功 开发U盘有三个工具软件应该必备:USBVIEW察看设备描述符,端点测试等;BUSHOUND截取USB总线数据,可分析UFI命令及U盘返回的数据流;串口助手可实时了解U盘所收命令流及程序流程由于每个人知识面不同,我想实现上面的几个步骤遇到的问题也不一样。对我最大的困惑是实现FAT16文件系统,直到在微软网站找到它的白皮书才算解惑。这里简介一下方便大家有的放矢。EhW电子资料网USB组织定义了海量存储设备类(MassStorageClass)的规范,这个类规范包
3、括四个独立的子类规范,即:EhW电子资料网1. USBMassStorageClassControl/Bulk/Interrupt(CBI)Transport2. USBMassStorageClassBulk-OnlyTransport3. USBMassStorageClassATACommandBlock4.USBMassStorageClassUFICommandSpecification。 前两个子规范定义了数据/命令/状态在USB上的传输方法。Bulk-Only传输规范仅仅使用Bulk端点传送数据/命令/状态,CB
4、I传输规范则使用Control/Bulk/Interrupt三种类型的端点进行数据/命令/状态传送。后两个子规范则定义了存储介质的操作命令。ATA命令规范用于硬盘,UFI命令规范是针对USB移动存储。EhW电子资料网 Windows95OSR2和Windows98开始支持FAT32文件系统,它是对早期DOS的FAT16文件系统的增强,由于文件系统的核心--文件分配表FAT由16位扩充为32位,所以称为FAT32文件系统。在一逻辑盘(硬盘的一分区)超过512兆字节时使用这种格式,会更高效地存储数据,减少硬盘空间的浪费,一般还会使
5、程序运行加快,使用的计算机系统资源更少,因此是使用大容量硬盘存储文件的极有效的系统。本人对Windows98下的FAT32文件系统做了分析实验,总体上与FAT16文件系统变化不大,现将有关变化部分简介如下:EhW电子资料网 (一)FAT32文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。引导区和文件分配表区又合称为系统区。EhW电子资料网 (二)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录。之后还留有若干保留扇
6、区。而FAT16文件系统的引导区只占用一个扇区,没有保留扇区。EhW电子资料网 (三)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的,FAT如此重要,保存两个以便第一个损坏时,还有第二个可用。文件系统对数据区的存储空间是按簇进行划分和管理的,簇是空间分配和回收的基本单位,即,一个文件总是占用若干个整簇,文件所使用的最后一簇剩余的空间就不再使用,而是浪费掉了。EhW电子资料网 从统计学上讲,平均每个文件浪费0.5簇的空间,簇越大,存储文件时空间浪费越多,利用率越低。因此,
7、簇的大小决定了该盘数据区的利用率。FAT16系统簇号用16位二进制数表示,从0002H到FFEFH个可用簇号(FFF0H到FFFFH另有定义,用来表示坏簇,文件结束簇等),允许每一逻辑盘的数据区最多不超过FFEDH(65518)个簇。FAT32系统簇号改用32位二进制数表示,大致从00000002H到FFFFFEFFH个可用簇号。FAT表按顺序依次记录了该盘各簇的使用情况,是一种位示图法。每簇的使用情况用32位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入特定值;已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填
8、入的值为FFFFFF0FH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT表中。0000000H、00000001H两簇号不使用,其对
此文档下载收益归作者所有