USB海量存储类设备功能在ARM系统中的应用

USB海量存储类设备功能在ARM系统中的应用
技术进展到今日的信息时代,数据的存储和传输在系统有了越来越重要的地位。而是目前设计成熟、应用广泛且用法极为简捷的技术,USB传输是一种高效便利的数据传输方式。基于上述缘由,本文重点论述基于USB的海量存储(USB Mass Storage)设备功能在嵌入式系统中设计和应用。用法该设备功能,上位机可以像读写一般U盘一样对于系统采集并存储在FLASH中的数据举行读写。
条码检测1 硬件计划
1.1 器件简介
S3C44B0X是SAMSUNG公司出品的基于ARM7TDMI内核的RISC型微处理器,8 kB命令和数据分享的缓存,主频可达66 MHz,可以运行16位的Thumb命令和32位的ARM命令,且接口丰盛,具有通用性。
K9F2808U0C是SAMSUNG公司生产的一款Nand型闪存芯片,容量为16 MB,读写速度快,数据保存时光长,可擦写10万次,在嵌入式系统中有着广泛的应用,主要是负责数据存储。
湿厕巾PDIUSBDl2是PHILIPS公司生产的带有并行和局部DMA传输能力的全速USB接口芯片,符合USB1.1版规范,可以与任何外部/MPU实现并行接口,传输速度可达2 MB/s。该USB芯
片有1个控制端点和2个一般端点。
1.2 硬件衔接图
硬件衔接1所示。在该系统中,FLASH芯片K9F2808U0C负责嵌入式系统中的数据存储;处理器S3C44B0X执行底层固件代码;USB接口芯片PDIUS-BDl2负责设备与上位机的通讯。这样系统采集并存储在闪存芯片中的数据便可以通过USB接口传输到上位机。

2 软件实现
要实现试验系统与上位机的USB通讯,首先要正确设计PDIUSBD12的底层固件程序。而要实现系统的海量存储设备功能,还要有FLASH的读写操作代码和实现海量存储设备类规范的代码。下面从这3个方面来分析。软件开发环境为ARM公司的ADS1.2,USB监控和测试软件为BUS Hound。
2.1 PDIUSBD12固件编程
PDIUSBDl2固件结构和数据流向2所示。结构图中的硬件提取层是固件中的最底层代码,负责对处理器与PDIUSBDl2相衔接的I/O口举行操作,以通知PDI-USBD12接下来处理器将对其举行指令操作或是数据操作。而指令接口层是基于硬件提取层的一套对PDIUS-BDl2
举行操作的子程序,可以便利上层程序的编写。瓜子烘干机

当PDIUSBD12向处理器发出中断哀求时,处理器读取中断寄存器,按照中断源调用相应的中断服务处理程序,中断服务处理程序设置相应的大事标记,假如有数据传输并作相应的数据处理。按照USB协议,控制端点0用来负责设备的枚举,如猎取设备各种描述符、设置地址、猎取海量存储设备的规律单元数目和复位设备等操作。这些操作是通过中断和主循环共同完成的。这里端点1未用到,可以忽视其中断。端点2是主端点,用作Bulk-Only传输。在端点2的中断处理程序中实现Bulk-Only传输及指令解析和执行。
其中,中断服务处理程序与主循环通过一个名为ControlData的结构体变量举行通讯。主循环初始化I/O口、大事标记bUSBFlags、建立包数据缓冲区、定时器和中断,重新衔接USB总线后进入一个无限循环,当该循环轮询到某大事标记被置位时便举行相应的处理。特殊是在设备枚举中当建立标记被置位时,按照设备哀求的类型域ControlData,DeviceRequest,bmRequestType来确定是标准设备哀求、厂商设备哀求还是类型设备哀求,再按照哀求类型举行相应的调用。
2.2 K9F2808U0C读写操作牌坊制作
FOSY
K9F2808U0C共有1 024块,每块32页,每页528 B,其中512 B用于存放数据,另外16 B用于存放信息,如块的好坏标志、块规律地址和ECC校验和等。FLASH读写有其自身的特点,读写都以页为单位,可以随机读,但无法随机写,写操作前必需把写单元所在的块擦除。因此,对于该闪存的读操作可以实行挺直读取来处理;而对于写操作,则通过设置块 缓冲来解决,以减轻系统的任务和对FLASH的擦除次数。写操作的基本思想是:设置一个块缓冲区,待写数据先写入缓冲区对应的页地址,当缓冲区中待写数据的页地址到达31或者页地址未满31但传输已经结束时,先将目标块中待写页以外的有关数据保存到缓冲区对应的页地址,然后擦除整块,最后将缓冲区的数据拷贝到该块。写操作流程3所示。

2.3 海量存储规范实现
海量存储设备必需符合海量存储设备类规范,该规范包括4个自立的子类规范,本设计中用到其中的2个子类规范:一是USB Mass Storage Class Bulk-Only Transport规范;二是USB Mass Storage Class UFI Command规范。前者定义了数据/指令/状态在USB总线上的传输办法,Bulk-Only传输规范仅仅用法Bulk端点传送数据/指令/状态。后者定义了对存储介质的操作指令,UFI指令规范基于SCSI-2和SFF-8070i指令集。这里按照SCSI-2
规范[6]针对该类设备的操作指令规范,总共编写了9个指令执行函数,见下文。
海量存储规范的实现有2个地方要注重:一是设备描述符、配置描述符、接口描述符和端点描述符要正确设置,主机是通过控制端点(端点0)猎取这一些描述符的;二是BULK端点(端点2)的中断处理,其中的BULK OUT中断处理较BULK IN复杂,因为篇幅所限,下面只研究BULK OUT的中断处理。
BULK OUT的中断处理要对主机发送的CBW(Com-mand Block Wrapper)和数据举行解析和处理。伪代码结构如下:

其中pSCSI是传递给读写函数的有关读写地址和数据传输长度等参数的结构体。数据的处理在读写函数中举行。Write( )函数的流程3。读函数以页为单位,一次可以读取延续的若干页,在此不再列出其流程图。其他函数可按照SCSI-2指令规范来编写。
3 结语
h5n6经测试,通过USB总线主机能够稳定的读写设备中的FLASH,读数据的速度可达600 kB/s,写数据的速度可达400 kB/s。该设备功能用法便利,性能稳定,已在详细项目中有实际应用,按照硬件状况稍做修改便可以应用到其他嵌入式系统中。

本文发布于:2024-09-22 08:18:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/128827.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   设备   操作
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议