① 设备描述符(GetDeviceDescriptor)。请求设备描述符的setup数据包为 通过读取设备描述符,可获得设备的子类(通用海量存储类)、端点0的最大包长(一般为8字节)。 ② 读取配置描述符(GetConfigDescriptor)。 对于请求配置描述符,可以先进行首次请求,要求数据包长为9(一个配置描述符的长度)。数据包内容为 接收到设备返回的数据,获得此描述符的总长,然后再发二次请求,获得全部描述符数据。数据包内容为 此时返回的数据包括了设备配置、接口、端点的全部描述信息。
③ 写文件。当写一新文件时,需在FAT表中查找未使用的簇,并将该簇号写入文件对应目录数据结构中的起始簇号位置。当此文件长度大于一簇时,还需在FAT表中对应的起始簇号位置填入下一可用簇的簇号,直到文件的最后一簇(FAT表中的相应位置填FFFF)。 若磁盘有备份FAT,还需在备份FAT表的相应位置填入正确的内容。
参考文献 1 Universal Serial Bus Specification 1.1 2 Universal Serial Bus Mass Storage Class UFI Command Specification 3 Universal Serial Bus Mass Storage Class Bulk-Only Transport 4 Microsoft. Microsoft Extensible Firmware Initiative FAT32 File System Specification 5 Cypress Semiconductor Corporation. SL811HS Embedded USB Host/Slave Controller