USB 大容量存储设备的开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

USB 大容量存储设备的开发
USB 是目前在打印机,数字存储设备,输入/输出设备,数码像机,MP3播放器等其他周边设备中得到广泛应用的连接方式。

USB设备具有使用方便,速度快,连接灵活,即插即用,总线供电等优点。

基于USB接口的大容量存储设备(USB Mass Storage)应运而生,目前市场上的这类设备主要有:USB移动硬盘,USB 外置光驱,USB 外置软驱,USB闪存盘(闪盘),USB CompactFlash / SmartMedia卡读卡器等。

由于USB大容量存储设备的方便与快捷,它们很快得到用户的认可。

本文将介绍USB大容量存储设备的基本硬件结构,软件结构以及Cypress的相应解决方案。

硬件结构
虽然USB大容量存储设备中有着不同的解决方法,但通常使用一个带有USB接口引擎的MPU(又可称为USB微控制器)用于处理主机发送的命令以及对存储设备进行操作。

图1显示了一个USB大容量存储设备通常采用的硬件结构。

ROM和RAM用于存储数据和程序,EEPROM用来存放厂商代码/产品代码(VID/PID)等基本信息。

由于存储介质的接口不同(如图1虚线外部所示),USB微控制器与它们的连接也略有不同。

光驱,硬盘和CompactFlash(CF)提供的是ATAPI或IDE接口,所以USB微控制器实际上是完成USB到ATAPI/IDE的桥接功能,它把主机的SCSI/IDE命令和数据转发到存储设备上,并将存储设备返回的状态和数据发送回主机。

有些厂商则推出专用ASIC完成USB到ATAPI/IDE桥接功能,使设备开发更加简单。

另一类常见的大容量存储设备是基于闪存设备(Flash Device),如SmartMedia卡(SMC),MultiMedia卡(SMC),Memory Stick(MS),NAND结构的闪存器件等。

闪盘(USB Flash Disk) 就是采用NAND结构的闪存器件作为存储介质。

这类闪存设备有特殊的接口总线,因此,USB微控制器通过微控制器的系统总线或通用I/O线与闪存设备连接。

微控制器除了实现与主机之间的数据/命令传输外,还需要根据主机的命令对闪存器件进行读/写/格式化,实现逻辑扇区与物理扇区之间的转换,数据错误校正等操作。

大容量存储设备的读/写操作速度是一个关键指标,USB微控制器的性能很大程度上决定了这一指标。

微控制器不但要有较快的运行速度,更需要提供快速的USB接口引擎,并能够和外部的存储介质实现高速的数据交换。

在USB2.0的大容量存储设备中,微控制器和外部介质接口的速度往往决定了设备的速度。

软件设计
USB组织定义了大容量存储设备的类规范,这个类规范包括四个独立的子类规范,即:1. USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport 2. USB Mass Storage Class Bulk-Only Transport 3. USB Mass Storage Class ATA Command Block 4. USB Mass Storage
Class UFI Command Specification。

前两个子规范定义了数据/命令/状态在USB上的传输方法。

Bulk- Only传输规范仅仅使用Bulk端点传送数据/命令/状态,CBI传输规范则使用Control/Bulk/Interrupt三种类型的端点进行数据/命令/状态传送。

后两个子规范则定义了存储介质的操作命令。

UFI命令规范是针对USB移动存储而制定的,实际上UFI命令格式是基于SFF- 8070i和SCSI-2规范,总共定义了19个12字节长度的操作命令。

图2是USB大容量存储设备软件结构示意图。

虚线左边部分是主机的驱动程序结构。

最顶层是应用程序接口(API),用于提供给用户访问存储设备的方法;中间的UFI/ATA驱动层将应用程序的访问转换成UFI或ATA命令/数据格式,与外部存储设备之间按照子规范3或4的定义进行命令/状态/数据的交换;最底层则是USB传输驱动,负责将上层的UFI/ATA 数据发送到USB总线上以及接收从存储设备返回的状态/数据。

图2虚线右边部分是大容量存储设备的固件(Firmware)功能结构。

在USB总线接口上面是USB传输处理层,它与主机之间按照子规范1或2的定义进行通讯,将主机的命令/数据传递到UFI/ATA 命令处理层并将其状态/数据返回到主机,它还需要检查并处理数据传输过程中的错误。

UFI /ATA 命令处理层负责对主机的UFI /ATA 命令进行处理,并将结果返回给主机。

存储介质接口提供与不同存储介质连接的方法,负责将接收到的UFI /ATA 命令/数据转换成具体的物理信号发送到存储介质,并从存储介质获取状态/数据。

在具体实现上,存储设备可以选择支持两种传输规范(CBI或Bulk-Only)或者只支持其中的一种。

实际上,Bulk- Only传输规范是一种更常用的方法。

大多数USB存储设备都是基于Bulk- Only传输规范和UFI命令规范设计的。

Win Me,Win 2K 以及Win XP都有内建的类驱动程序以支持基于Bulk-Only 模式的USB1.1大容量存储设备,因此,开发人员无需设计在这些操作系统上的驱动程序,而将更多的工作精力集中在存储设备固件开发上。

对于存储介质采用ATA/IDE接口的大容量存储设备,其固件的功能相对比较简单,它只需要处理USB传输管理,从中提取或包装UFI命令/状态/数据,并将UFI命令/ 数据通过ATA/IDE
结语
USB为接口种类繁多的存储媒介与主机之间提供了方便可靠的连接。

Intel刚刚推出的845G与845GL芯片组支持USB2.0接口,其总线速度可达到480Mbps, 极大地提高了传输速度,这将更好地支持硬盘,光驱等容量较大的存储设备。

Cypress也将陆续推出一些性能价格比更优的存储设备解决方案以及USB2.0的高端应用。

可以预见,基于USB的大容量存储设备将迅速占领传统的存储市场。

相关文档
最新文档