用PDIUSBD12和K9F5608U0A设计USB移动闪存_存储器论文
关键词:usb pdiusbd12 k9f5608u0a 移动闪存
引言
自从usb规范发布以来,短短的几年中得到了极大的发展,基于usb接口的大容量存储设备(usb mass storage)应运而生。这类设备主要有: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所示。
2.2 k9f5608u0a
k9f5608u0a是三星公司生产的k9xxxxxu0a系列闪存中的一种,32mb容量,读写速度快,数据保存时间长以及高达10万次的擦除写入寿命等优点。该芯片具有一个八位的i/o端口。在ce为低电平时,把we置低,地址、命令和数据都可通过该端口写入。数据在we的上升沿被锁存,cle和ale分别用来控制对命令和地址的锁存。同进k9f5608u0a具有较强的纠错功能,能够最大限度地保护用户数据。其内部框图和引脚图分别如图3、4所示。
各引脚功能如下:
i/o0~i/o7——数据输入/输出;
cle——命令锁存使能;
ale——地址锁存使能;
ce——片选信号;
we——写使能;
wp——定保护;
gnd——地输入使能额外位;
r/b——准备好/忙;
vcc——电源;
vss——地;
nc——悬空。
3 硬件电路设计
usb大容量存储设备通常使用一个usb接口引擎和mcu(微控制器)一起处理主机发送的命令,以及对存储设备进行操作。图5显示了一个usb大容量存储设备通常采用的硬件结构。rom和ram分别用于存储数据和程序,usb微控制器通过通用i/o线与闪存设备连接。微控制器除了实现与主机之间的数据/命令传输外,还需要根据主机的命令对闪存器件并行读/写/格式化,实现逻辑扇区与扇区之间的转换及数据错误校正等操作。
实例简图如图6所示。mcu采用内含rom和ram的微控制器8051,8051通过数据总线和控制总线与两个外设进行通信。pdiusbd12通过8051和k9f5608u0a进行数据传输,此处采用pdiusbd12的并行传输方式。
4 软件编写
usb微控制器除了传输处理及ufi命令处理等工作外,还需要处理如存储介质的寻址/格式化/数据校验等操作。本例中所需要的基本操作包括:
①提供usb枚举;
②usb传输管理;
③根据主机的ufi命令,进行相应的处理;
④提供闪盘基本,如扇区大小、簇大小、闪盘容量等;
⑤逻辑簇(logical cluster)到块(physical block)的转换;
⑥块的读/写/更新,其中许多的软件功能是与闪存的操作相关的。
图6
本例中用到的传输协议为usb mass storage class bulk-only transport和usb mass storage class ufi command specification。程序流程图如图7所示。源代码见网站www.dpj.com.cn。
图7
5 结论
本文结合实例,给出了一种开发usb移动存储设备的方法。由于usb移动存储设备具有使用方便、容量大、数据传输速度快等优点,因而具有广阔的高层前景。