开发u盘的几点体会

开发u盘的几点体会

ID:13718529

大小:34.45 KB

页数:9页

时间:2018-07-24

开发u盘的几点体会_第1页
开发u盘的几点体会_第2页
开发u盘的几点体会_第3页
开发u盘的几点体会_第4页
开发u盘的几点体会_第5页
资源描述:

《开发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两簇号不使用,其对

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。