这类设备主要有:USB移动硬盘、USB外置光驱、USB外置软驱、USB闪存盘等。但是目前国内介绍这一方面开发的文章并不多。结合作者实践,本文将以Philips公司的USB控制器PDIUSBD12和Sumsung公司的内存(Flash)K9F5608U0A为例,介绍开发大容量存储设备的方法。 1 USB大容量存储设备类
USB大容量存储设备类规范包括四个独立的子类规范,即:①USB Mass Storgage Class Control/Bulk/Interrupt(CBI)Transport;②USB Mass Storage Class Bulk-Only Transport;③USB Mass Storage Class ATA Command Block;④USB Mass Stroage Class UFI Command Specification。前两个子规范定义了数据/命令/状态在USB上的传输方法。Bulk-Only传输规范仅仅使用Bulk端点传送数据/命令/状态,CBI传输规范则使用Control/Bulk/Interrupt三种类型的端点进行数据/命令/状态传送。后两个子规范定义了对存储介质的操作命令。UFI命令规范是针对USB移动存储而制定的,实际上UFI命令格式是基于SFF-8070i和SCSI-2规范,总共定义了19个12字节长度的操作命令。
批量单独传输在大部分的通信中使用批量传输,只有在批量端点上清除一个Stall状况,以及传送类别特定请求(class-specific request)时才使用控制传输。需要注意的是,批量单独传输还支持两个特定的请求是:
*Bulk Only Mass Storage Reset——重置设备;
*Get Max Lun——取得设备支持的逻辑单元数目。
大容量存储类支持的设备都有不同的内部结构,控制与读取不同设备需要使用不同的命令区块群。 2 器件简介
2.1 USB控制器PDIUSBD12
PDIUSBD12是一个全速芯片,支持一个控制端点,以及四个额外的端点地址,一个端点的地址可以存储128个字节,而双缓冲区可以存256个字节。该芯片完全由软件控制,在外围设备的CPU送来一个命令来仿真连接总线之前,芯片都是维持与主机分离的状态。这样才能保证在开机后搜寻设备前,芯片有时间来初始化。另外,PDIUSBD12有一个状态输出可以连接到液晶显示器上,在建立USB连接时亮灯,而数据传输时闪烁。PDIUSBD12引脚图和逻辑框图分别如图1、2所示。