关键词: S3C44BOX Nand-Flash存储器 Bulk-Only传输 UFI命令
1 引言 S3C44BOX开发板是一个广泛应用于学习嵌入式技术的平台,一般开发板都带有USB开发接口,并提供了一部分资料,主要是关于USB主机对设备的枚举和配置的,本文是在此基础上将该开发板扩展做成一个USB海量存储类设备,实现了开发板与PC机的通讯,用于开发板与PC机之间的大文件传输及应用程序的下载。
2 实现方案 2.1 硬件扩展 硬件扩展连接如图1所示。 图1是三星的Nand-Flash存储器 K9F5608U0BY与S3C44B0X的接口电路。在嵌入式控制器上,S3C44BOX开发板自带Philips的PDIUSBD12设备端接口芯片,通过该芯片扩展出一个USB的设备接口。因为此接口是USB的设备接口,所以只能和USB的主控芯片(USB HOST),这里我使用的PC机的USB端口。 2.2 软件构架

图1 Nand-Flash存储器K9F5608U0BY与S3C44B0X的接口电路 通过USB设备接口芯片,采用Bulk- Only传输方式,将此设备做成一个海量存储器,使用嵌入式控制器具有U盘功能。这样,一来嵌入式设备的应用程序可以直接通过U盘这种途径下载到嵌入式控制器的Flash存储器中;二来,为嵌入式设备引入FAT文件系统,使其与U盘的闪存兼容,这样,可以使用嵌入式设备在共同的Flash上创建文件,然后通过U盘功能方便的复制到PC机上。 (1) 主流程 在S3C44BOX开发板系统中,嵌入式USB设备与PC机的通讯主流程图如图2所示:

图2 嵌入式USB设备与PC机的通讯主流程图 根据图2,可以看到当S3C44BOX开发板连接到主机时,首先实现USB主机对设备的枚举和配置,使主机确认设备的功能,并提供资源,这一部分是通过标准USB请求处理完成和实现的。一般开发板都带有处理标准USB请求程序,在这里就不详细分析。 当配置过程完成后,主机和设备就可以传输数据了。由于主机要支持的设备是USB闪存盘,它是USB的MassStorage类设备,这里Mass Storage类采用单批量Bulk-Only的传输协议,子类则采用UFI命令集。 Bulk-Only传输协议中传输流程如图3所示。

图3 Bulk-Only传输协议中传输流程 这里,主机向设备发送命令字CBW(Command Block Wrapper),USB设备通分析并执行相应操作,将执行状态通过状态字CSW(Command Status Wrapper)返回主机。 UFI命令集主要是应用在软磁盘接口设备中,也可以应用在类似于Flash存储设备中,实现对USB闪存盘设备内的Flash进行读和写,任何Mass Storage类设备也可以采用此协议,只要这种Flash存储设备通过软件模拟了这种接口就可以。 (2)端点请求处理流程 主流程中Bulk-Out端点请求处理流程如图4所示:

图4 主流程中Bulk-Out端点请求处理流程 在这里,主机向设备发送命令字CBW(Command Block Wrapper),USB设备通分析并执行相应操作,对于海量存储类设备,USB协议中约定了几类不同的命令集,属于海量存储类设备的子类,给不同的设备用。例如,子类号02为DVD设备,04为软盘驱动器,06为通用SCSI类设备。在本例中,配置为软盘驱动器类设备。主机向设备发送的命令都属于UFI 命令集。由于实现的功能为大文件的传输,故只对少数几个命令提供了支持,如读磁盘扇区、写磁盘扇区、查询设备状态。执行完后,USB设备向主机返回CSW 状态字。对于不支持的命令,只需向主机发送空响应。 主流程中Bulk-In端点请求处理流程如图5所示:

图5 主流程中Bulk-In端点请求处理流程图 以上就基本完成了通讯的实现流程。这里还要说明的一点是,作为海量存储类设备的 UFI类,主机将以访问磁盘的方式来访问设备。所以,在使用前,我们需要按磁盘分区表(FAT表)的格式对一片RAM进行格式化。在本例中采用了 FAT16的格式。FAT16系统中,第一个512字节为引导扇,此扇区包含BPB(BIOS Parameter Block)表,描述逻辑盘结构组成,FAT扇区数、FAT拷贝数、根目录表项最大值等,可根据具体的系统设定。由于篇幅所限,FAT16表的细节请感兴趣的读者参考有关资料。本例中支持四种对RAM盘的操作:读/写磁盘扇区、查询磁盘大小和弹出设备。对于读/写操作,只需要将主机请求读/写的扇区数转换成为RAM盘的地址,将数据写入或读出就可以了。文件发送完毕后,在Windows 2000下选择弹出设备操作,设备收到后会终止USB连接。
3 结束语 USB接口不仅硬件连接方便而且数据传输速度很快。在这里通过Flash扩展,实现了开发板与PC机之间的大文件传输,可以很方便的为开发板下载程序或大文件, 有很强实用性。
|