USB海量存储类设备功能在ARM系统中的应用,FLASH,海._第1页
USB海量存储类设备功能在ARM系统中的应用,FLASH,海._第2页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、USB 海量存储类设备功能在 ARM 系统中的应用,FLASH 海量存储类设备,Bulk-Only 传输技术发展到今天的信息时代, 数据的存储和传输在嵌入式系统有了越来越重要 的地位。而 USB 是目前设计成熟、应用广泛且使用极为简捷的技术,USB 专输是一种高效方便的数据传输方式。基于上述原因,本文重点论述基于USB 的海量存储(USBMassStorage)设备功能在 ARM 嵌入式系统中设计和应用。使用该设 备功能,上位机可以像读写普通 U 盘一样对于系统采集并存储在 FLASH 中的数 据进行读写。1 硬件方案 1.1 器件简介 S3C44B0X1 是 SAMSUN 公司出品的基于技术

2、发展到今天的信息时代, 数据的存储和传输在嵌入式系统有了越来越重要 的地位。而 USB 是目前设计成熟、应用广泛且使用极为简捷的技术,USB 传输是一种高效方便的数据传输方式。基于上述原因,本文重点论述基于USB 勺海量存储 (USBMass Storage)设备功能在 ARM 嵌入式系统中设计和应用。使用该设备 功能,上位机可以像读写普通 U 盘一样对于系统采集并存储在 FLASH 中的数据 进行读写。1 硬件方案1.1 器件简介S3C44B0X是SAMSUN公司出品的基于 ARM7TDM内核的RISC型微处理器, 8 kB 指令和数据共享的缓存,主频可达 66MHz 可以运行 16 位的

3、Thumb 指令和 32 位的 ARMtt 令,且接口丰富, 具有通用性。K9F2808U0C 是 SAMSUN 公司生产的一款 Nand 型闪存芯片,容量为 16 MB,读 写速度快,数据保存时间长,可擦写 10 万次,在嵌入式系统中有着广泛的应 用,主要是负责数据存储。PDIUSBDI 艺是 PHILIPS 公司生产的带有并行总线和局部 DMA 专输能力的全速 USB接口芯片,符合 USB1.1 版规范,可以与任何外部 MC/MPU 实现并行接 口,传输速度可达 2MB/s。该 USB 芯片有 1 个控制端点和 2 个普通端点。1.2 硬件连接图硬件连接如图 1 所示。在该系统中,FLAS

4、H 芯片 K9F2808U0(负责嵌入式系统中 的数据存储;处理器 S3C44B0)执行底层固件代码;USE 接口芯片 PDIUS-BDI2 负责设备与上位机的通讯。 这样系统采集并存储在闪存芯片中的数据便可以通 过 USB 接口传输到上位机。2 软件实现 要实现实验系统与上位机的 USB 通讯,首先要正确设计 PDIUSBD12 勺底层固件 程序。而要实现系统的海量存储设备功能,还要有 FLASH 的读写操作代码和实 现海量存储设备类规范的代码。下面从这 3 个方面来分析。软件开发环境为ARM 公司的 ADS1.2, USB 监控和测试软件为 BUSlound 2.1 PDIUSBD12 固

5、件编程PDIUSBDI2 固件结构和数据流向如图 2 所示。 结构图中的硬件提取层是固件中 的最底层代码, 负责对处理器与 PDIUSBDI2 相连接的 I /O 口进行操作, 以通知 PDI-USBD12接下来处理器将对其进行命令操作或是数据操作。而命令接口层是 基于硬件提取层的一套对 PDIUS-BDI2 进行操作的子程序,可以方便上层程序的 编写。当 PDIUSBD1 向处理器发出中断请求时,处理器读取中断寄存器,根据中断源 调用相应的中断服务处理程序,中断服务处理程序设置相应的事件标志,如果 有数据传输并作相应的数据处理。根据USB 协议4,控制端点 0 用来负责设备的枚举,如获取设备

6、各种描述符、设置地址、获取海量存储设备的逻辑单元数 目和复位设备等操作。这些操作是通过中断和主循环共同完成的。这里端点 1 未用到,可以忽略其中断。端点 2 是主端点,用作 BuIk-OnIy 传输。在端点 2 的中断处理程序中实现 BuIk-OnIy 传输及命令解析和执行。其中,中断服务处理程序与主循环通过一个名为 ControIData 的结构体变量进 行通讯。主循环初始化 I /O 口、事件标志 bUSBFIags 建立包数据缓冲区、定 时器和中断,重新连接 USB 总线后进入一个无限循环, 当该循环轮询到某事件 标志被置位时便进行相应的处理。特别是在设备枚举中当建立标志被置位时, 根据

7、设备请求的类型域ControIData ,DeviceRequest,bmRequestType 来确定 是标准设备请求、厂商设备请求还是类型设备请求,再根据请求类型进行相应 的调用。K9F2808U0C 读写操作K9F2808U0(共有 1 024 块,每块 32 页,每页 528 B,其中 512B 用于存放数 据,另外 16 B 用于存放信息,如块的好坏标记、块逻辑地址和ECC 校验和等。FLASH 卖写有其自身的特点,读写都以页为单位,可以随机读,但无法随机 写,写操作前必须把写单元所在的块擦除。因此,对于该闪存的读操作可以采取直接读取来处理;而对于写操作,则通过设置块缓冲来解决,以减

8、轻系统的任务和对 FLASH!勺擦除次数。写操作的基 本思想是:设置一个块缓冲区,待写数据先写入缓冲区对应的页地址,当缓冲 区中待写数据的页地址到达 31 或者页地址未满 31 但传输已经结束时,先将目 标块中待写页以外的有关数据保存到缓冲区对应的页地址,然后擦除整块,最 后将缓冲区的数据拷贝到该块。写操作流程如图 3 所示。海量存储规范实现 海量存储设备必须符合海量存储设备类规范,该规范包括 4 个独立的子类规 范,本设计中用到其中的 2 个子类规范:一是 USB MassStorage Class Bulk-Only Transport规范5;二是 USB MassStorage Clas

9、sUFI Comma n 规范。前者定义了数据/命令/状态在 USB 总线上的传 输方法, Bulk-Only 传输规范仅仅使用 Bulk 端点传送数据命令状态。后者 定义了对存储介质的操作命令, UFI 命令规范基于 SCSI-2 和 SFF-8070i 命令 集。这里根据SCSI-2 规范6针对该类设备的操作命令规范,总共编写了9 个命令执行函数,见下文。海量存储规范的实现有 2 个地方要注意:一是设备描述符、配置描述符、接口 描述符和端点描述符要正确设置,主机是通过控制端点 (端点 0) 获取这一些描 述符的;二是 BULK 端点(端点 2)的中断处理,其中的 BULKOUT 中断处理较 BULK IN 复杂,由于篇幅所限,下面只讨论 BULK OUT 的中断处理。BULK OUT勺中断处理要对主机发送的 CBW (Com-ma nd Block Wrapper和数据进 行解析和处理。伪代码结构如下: 其中 pSCSI 是传递给读写函数的有关读写地址和数据传输长度等参数的结构 体。数据的处理在读写函数中进行。 Write( ) 函数的流程如图 3。读函数以页 为单位,一次可以读取连续的若干页,在此不再列出其流程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论