基于ARM的嵌入式USB大容量存储设备的设计_第1页
基于ARM的嵌入式USB大容量存储设备的设计_第2页
基于ARM的嵌入式USB大容量存储设备的设计_第3页
基于ARM的嵌入式USB大容量存储设备的设计_第4页
基于ARM的嵌入式USB大容量存储设备的设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、基于ARM的嵌入式USB大容量存储设备的设计【字体: A 】Design of Mass Storage Device in Embedded System Based on ARM摘要 本论文采用USB技术,以SD卡作为存储介质,提出了在AT91SAM7S64处理器上开发USB大容量存储设备的解决方案;本系统基于处理器内嵌的USB设备端口,遵守大容量存储设备类规范,从功能上把系统的实现划分为物理层、设备枚举层、设备响应层和磁盘功能层四个层次,实现了嵌入式系统与PC的数据交换。关键词 嵌入式系统;USB; Mass-storage类; SD卡Abstract:  By us

2、ing USB technology and SD card as the data storage medium, a solution of USB mass storage device based on AT91SAM7S64 processor is proposed. Based on embedded USB device port and specification of mass storage device class, the implementation of device can be divided into four classes according to th

3、e function of mass storage device class, including physical layer, device enumeration layer, device response layer and disk function layer. Data exchange between embedded system and PC is realized via proposed device.Key words:  Embedded System; USB; Mass-storage class; SD card引  言 基于

4、ARM微处理器的嵌入式系统因其具有性能高、成本低和供耗低的特点,被广泛应用于多种领域,如嵌入式控制、消费类/教育类多媒体、DSP和移动式便携设备。针对移动式便携设备对数据存储与交换的要求,在嵌入式系统中实现USB设备功能,可以通过USB大容量存储设备类规范实现移动式便携设备与PC进行数据交换。因此,在嵌入式系统开发中,开发出大容量存储设备与PC进行数据通信,具有极大的实用价值。1  USB大容量存储设备协议分析USB设备分为五个主要类别:显示器类(Monitors)、通讯设备类(Communication devices)、音频设备类(Audio)、人机输入类(Human input

5、)和大容量存储类(Mass storage)。大容量存储(Mass storage)类别包含软盘、硬盘、CD等。在Windows上所有使用大容量存储驱动程序的设备,都会在我的电脑中以磁盘驱动器的类型出现。 USB大容量存储设备类规范包括四个独立的子类规范,这四个子类规范分别是:1、批量单独输送(Bulk-Only)2、控制/批量/中断输送(CBI)3、UFI命令规范4、ATA命令块。其中前两个CBI和Bulk-Only是两个相互独立的大容量存储类协议,设备厂商可以选择其中一个。CBI使用Control, Bulk和Interrupt三种类型端点来处理主机与设备间的命令、数据和状态的传

6、送,而Bulk-Only只用Bulk端点传送。后两个子规范则定义了存储介质的操作命令,ATA命令规范用于硬盘,UFI命令规范是针对USB移动存储而制定的1。Microsoft Windows中提供对Mass Storage协议的支持,因此USB移动设备只需要遵循Mass Storage协议来组织数据和处理命令,即可实现与PC机交换数据。而Flash的存储单元组织形式采用FAT16文件系统,这样,就可以直接在Windows的浏览器中通过可移动磁盘来交换数据了,Windows负责对FAT16文件系统的管理,USB设备不需要干预FAT16文件系统操作的具体细节。在该系统中,我们的任务就是使用Bulk

7、-Only协议,实现USB逻辑功能层和构建在该层上的UFI设备层的功能,使磁盘能作为一个U盘被主机访问。USB大容量存储设备软件整体结构如图1所示。 图1  USB大容量存储设备软件整体结构示意图 图1中,虚线右边部分是大容量存储设备的驱动程序结构,也是嵌入式USB大容量存储设备所要实现的。 图1中虚线右边中间的UFI/ATA命令处理层将PC应用程序的访问转换成UFI或ATA命令/数据格式,与外部存储设备之间按照子规范UFI或ATA的定义进行命令/状态/数据的交换;最底层则是USB传输驱动,负责接收从上层发送到USB总线上的UFI/ATA数据以及发送从存储设备返回

8、的状态/数据。2  系统设计2.1  硬件设计 本系统的硬件设计主要包括AT91SAM7S64处理器、USB设备端口(处理器内置)、SD卡和串口组成,系统总体设计框架如图2所示。 图2  总体设计框图2.1.1  AT91SAM7S64处理器的选择 AT91SAM7S64是ATMEL公司推出的一款32位ARM7内核闪存控制器,它集成了ARM7TDMI内核处理器,具有高性能的32位RISC架构,高密度的16位指令集和极低的功耗,嵌入式ICE电路仿真,支持调试通信。它内部分别具有64KB的Flash ROM和16KB的SRAM,

9、无需外部扩展存储器。芯片内部集成了USB2.0设备端口,以及丰富的片内外设资源。AT91SAM7S64已经成为连接PC或手机的外设应用的理想芯片,极具竞争力的性价比进一步拓展了它在低成本、大产量的消费类产品中的应用2。2.1.2  USB设备端口本设计采用AT91SAM7S64自带的USB设备端口,且完全符合USB V2.0全速器件规范。USB设备自动检测挂起与恢复,通过中断来停止处理器。通过APB总线接口访问UDP,通过对APB寄存器8位值进行读/写以实现对数据FIFO的读写。UDP外设需要两个时钟:用于MCK域的外设时钟和用于12MHz域的48MHz时钟。外部恢复信号可选。它允许

10、在系统模式下唤醒UDP外设。然后主机将通知请求恢复的器件。USB接口进行枚举时,该特性必须由主机处理。USB物理收发器集成在芯片中,双向差分信号DP与DM对于产品边界有效。2.1.3  存储设备及接口的设计本设计磁盘采用SD卡(Secure Digital Card),SD卡是一种基于闪存(Flash Memory)的存储卡,由于它具有安全性高,容量大,性能佳,环境适应性好等优点,目前已有越来越多的消费类数码产品采用SD卡作为存储介质,如数码相机、掌上计算机、MP3播放器等等。SD卡遵循SD总线模式和SPI总线模式,SD总线模式的优点是可以采用4条数据线并行传输数据,数据传输速率高;

11、缺点是传输协议较为复杂,只有少数高档的单片机才提供此接口,若用软件的方法来模拟SD总线,则是很繁琐的,而且这样将大大降低SD卡的数据传输速率。SPI总线模式缺点是只有一条数据传输线,所以数据传输速率较低;优点是绝大多数中高档单片机都提供SPI总线,即使不提供,也很容易用软件的方法来模拟SPI总线,而且SD卡的SPI总线模式传输协议简单,易于实现3。考虑到AT91SAM7S64处理器提供SPI总线模式接口和软件系统的可移植性(移植到没有SD总线模式接口的单片机上),本设计采用了SPI总线模式。SD卡所有的数据和控制命令均通过SPI总线接口实现,因此与AT91SAM7S64的接口实现比较简单。SP

12、I(Serial Peripheral Interface,串行外围设备接口总线)总线技术是MOTOROLA公司推出的一种同步串行总线接口,它是目前单片机应用系统中最常用的几种串行扩展接口之一。SPI总线有三根线进行数据传输:同步时钟线(SCK),主片输入从片输出线(MISO)、主片输出从片输入线(MOSI),另外还有一条低电平有效的从片选择线(CS)。主片提供SPI系统的同步时钟脉冲和片选信号。SPI总线模式的数据是以字节为单位进行传输的,每字节为8位,每个命令或数据块都是字节对齐的(8个时钟的整数倍)。主机与SD卡的各种通信由主机控制,主机在对SD卡进行任何操作前必须首先拉低SD卡的片选信

13、号CS (Card Select),然后主机可向SD卡发送命令,SD卡要对主机发送的任何命令进行响应,不同的命令会有不同的响应格式(1字节或2字节响应)。SD卡除了对命令响应外,在执行写操作时,要对主机发送的每一个数据块进行响应(向主机发送一个特殊的数据响应标志)。2.2  软件设计本系统功能主要通过软件系统来实现,程序采用分层次,模块化的方法进行编写,上层函数通过调用底层函数来实现对硬件的操作,这样程序的可移植性和可扩展性大大增强。整个软件系统由主程序、中断服务子程序等组成。系统的工作流程是:当USB设备插入PC之后,主程序负责整个系统的初始化工作,然后等待PC的USB主控制器与设

14、备进行数据交换,产生中断信号,系统通过响应中断服务子程序来设置标志位。USB_TASK()函数是主程序中的循环处理函数,它根据标志位来分别对发送、接收数据及处理USB插拔事件等做出响应。首先设备与PC完成设备的枚举、配置等操作,以此来实现不同的功能,最终PC识别出该设备并可以与设备进行数据交换。主程序流程图如图3所示。 图3  主程序流程图 下面着重分析软件系统的核心部分USB大容量存储设备的实现方法及其调试方法。2.2.1  大容量存储设备的实现从功能上可把本系统的实现划分为四个层次:(1) USB物理层该层完成UDP的初始化工作,使USB设备端口正常

15、工作,保证数据能够通过USB总线正常传输。(2) USB设备枚举层在该层上,设备通过响应主机的标准设备请求,使主机能识别它。主机得到USB设备的描述符后,即完成了设备的配置,识别出Bulk-Only的Mass Storage设备,然后会进入Bulk-Only传输方式。在此方式下,主机与设备之间的所有数据均通过Bulk-In和Bulk-Out来传输,而不再通过默认控制端点0来传输。(3) Mass Storage设备响应层在该层上,设备与主机通过USB端点按Bulk-Only模式响应UFI(SCSI命令子集)中的指令。Bulk-Only传输协议由3个阶段组成:带CBW结构的命令阶段,数据阶段,带

16、CSW结构的状态阶段。每一个CBW结构都包含SCSI命令(CBW和CSW是一系列包的集合,简称封包)。当USB设备收到SCSI命令包时,该层对命令包进行解析,然后决定SCSI命令的类型;在数据阶段,USB设备按CBW结构接收或发送原始数据;在状态阶段,USB设备发送CSW状态包来指示请求的成功或失败。SCSI命令处理流程如图4所示。 图4  SCSI命令处理流程(4) 磁盘功能层该层就是主机对磁盘操作的底层程序,设备能作为一个磁盘被主机访问,主机能够对设备完成所有的磁盘操作(包括读文件、写文件、格式化等)。本设计采用SPI总线对SD卡进行单块读写操作,程序中直接调用两个函数

17、AT91_Read_SD()和AT91_Write_SD()即可,但写操作的数据块长度是512字节,注意必须在写数据过程中按照读、修改、写的操作顺序。2.2.2  系统调试 在进行USB设备开发过程中,难点是对设备端的程序进行调试。由于USB协议对时间延迟有严格的限制,这就使得程序必须在有效时间内对某些请求或状态进行处理,否则USB将无法正常工作。因此,在调试过程中,较多借助串口输出程序输出的一些信息来辅助调试,定位问题所在。比如,在某个函数中加入输出语句,程序运行时看有否特定的输出内容,借此来判断此函数是否得到了执行,并通过输出一些变量来查看状态。调试工作基本分三步进行:

18、首先对外部设备(ARM部分)借助串口输出信息和PC调试软件(Bus Hound调试软件)将设备端的USB协议(主要有描述符请求、端口配置、地址设置)调通;然后,用调试好的USB设备接口来实现PC与SD卡的数据交互;最后,加上USB设备端的其它用户程序,对整个完整的系统进行系统调试。结 语 本文所设计的基于AT91SAM7S64嵌入式处理器实现的USB大容量存储设备,因其具有硬件结构简单,协议的实现具有良好的移植性,便于便携式嵌入式系统数据存储与数据交互等特点,目前已成功应用于铁路信号设备巡检系统上,可以实现设备与PC之间方便快捷的数据交互。本文的创新观点:(1)基于ARM7处理器设计的USB大容量存储设备无须额外扩展控制接口芯片,且AT91SAM7S64中的USB2.0全速设备接口完全符合相关USB标准,支持USB Mass storage类,并实现了控制传输和批量传输,从而实现了与PC的通信。(2)由于USB接口已成为嵌入式设备的标准接口,而几乎所有的嵌入式系统都面临一个数据存储和交换的问题,所以本系统移植于其他嵌入式系统中将具有很高的价值。参 考 文 献

温馨提示

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

评论

0/150

提交评论