(2)实现过程
CPU向U盘发送CBW数据包,其中的命令块为UFI规范所定义的Read(10)命令。读取0柱0道1扇区共512字节的MBR数据,前446字节为主引导记录,接着的64字节为DPT(Disk Partition Table盘分区表),最后的2字节“55 AA”为有效结束标志。其中的DPT部分包含4个分区的数据结构,每个结构占16字节,具体定义如下:

从第一个分区数据结构的分区起始扇区数(relative sectors)的位置读取512字节,为DBR(系统引导记录),包括一个引导程序和BPB(本分区的参数记录表)。BPB参数块记录本分区的起始扇区、结束扇区、文件存储格式、介质描述符、根目录项数、FAT个数、保留扇区数、分配单元的大小等重要参数。
根据保留扇区的数目可知FAT表的位置(RelativeSectors+保留扇区数)。FAT表是文件组织结构的主要组成部分,反映了磁盘上所有簇的使用情况。在给一个文件分配空间时,总先扫描FAT,找到第一个可用簇,将该空间分配给文件,并将该簇的簇号填到目录的相应段内;若文件大于一个簇,则在FAT表中此文件的首簇号位置填入下一个可用簇号,直到最后一个簇填入“FFFF”,即形成了簇号链。对于FAT12文件系统,簇号用12位表示;FAT16文件系统的簇号用16位表示;FAT32文件系统的簇号用32位表示。
www.55dianzi.com
根据FAT的个数以及每个FAT表占用的扇区数,即可推算出文件目录表(FDT)的位置(FAT表位置+FAT表个数*FAT表所占扇区数)。FDT是文件组织结构的又一重要组成部分。目录可看作是一种特殊的文件,数据结构为32字节,包括文件名、扩展名、文件属性、时间、日期、开始簇号、文件长度等。
根据根目录中的目录项数即可计算出数据区的起始扇区位置。这一部分占用了磁盘上的大部分空间,用于存储各类文件的数据。
对于FAT32文件系统来说,它的根目录位置不单独列出,而是等同于文件结构,保存在数据区中。这样就没有了目录项的限制,不够用的时候增加簇链,分配空簇即可。
对于以上各类数据读取内容的正确判断,可将U盘插入PC机,借助WinHex工具,读取磁盘上相应位置的数据内容,与之相比较。
FAT16文件格式的U盘空间分配如图2所示。
2.2.4 文件操作
因为U盘的容量不是特别大,所以基本上都使用F
AT16文件系统。可以根据FAT16系统的磁盘特性进行各种操作。
① 创建目录。在根目录区或指定的子目录区中填加新目录的数据结构。
② 删除目录。在根目录区或指定的子目录区中找到所需删除的目录,并置相应标志。
③ 写文件。当写一新文件时,需在FAT表中查找未使用的簇,并将该簇号写入文件对应目录数据结构中的起始簇号位置。当此文件长度大于一簇时,还需在FAT表中对应的起始簇号位置填入下一可用簇的簇号,直到文件的最后一簇(FAT表中的相应位置填FFFF)。
若磁盘有备份FAT,还需在备份FAT表的相应位置填入正确的内容。
④ 删文件。删除文件时,除了将该文件对应的目录数据结构置相应标志外,还要修改FAT表及备份FAT表。将此文件使用的簇号位置清0,表示此簇当前未被使用。
2.2.5 Bulk传输流程
使用U盘的Bulk端点进行数据传送,Bulk传输分为Bulk-In和Bulk-Out。其中Bulk-In指的是主机向外围设备请求数据,由外围设备向主机发送数据。Bulk-Out的传输方向与Bulk-In相反,由主机向外围设备发送数据。
根据UFI规范的定义,每次读写操作都以逻辑块(扇区)为单位。一般U盘的一个扇区为512字节,而Bulk端点的最大包长为64字节,即一个扇区的读写操作需要8个循环才能完成。
(1)Bulk-In流程
Bulk-In流程如图3所示。

在接收设备数据的循环中,因为一个扇区的操作需要8次才能完成,因此要注意每接收一个数据包,都要将SL811HS寄存器0中的数据位(位6)变换一次。data1和data0交替使用。
(2)Bulk-Out流程
与Bulk-In流程差不多,只是在CBW数据包中,注明了下一阶段的传输方向为主机到外围设备。在CBW发送ACK之后,向设备的Out端点发送PID-OUT数据包,使得设备接收所要传送的数据。在数据传输完毕后,仍要向设备的In端点发送PID-IN数据包,读取设备的CSW数据包,判断传输结果,并进行相应处理。在发送数据的循环中,同样要注意data0和data1的交替使用问题。
结 语
目前开发的在 嵌入式 系统中利用 USB 主控芯片实现与U盘的操作技术,已应用在我们自主开发研制的消防产品中。实现了消防控制器与U盘之间的各类信息的传输,为数据分析提供了有利的手段。在越来越多的消费类市场,这一技术必将有更为广阔的应用前景。
上一页 [1] [2]
本文关键字:嵌入式 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术