




已阅读5页,还剩50页未读, 继续免费阅读
(车辆工程专业论文)基于USB的谷物在线测产系统数据存储模块设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
捅要 作为“精细农业”的一部分,谷物在线测产系统负责采集地块中的各种数据,并通过数据存 储模块将数据存储、传输到通用计算机。通过对现有几种数据存储模块方案的优劣分析,本文提 出了通过u s b 闪存盘存储、传递数据的方案。 本文详细介绍了嵌入式u s b 主机系统开发需要考虑的u s b 基本特性和u s b 设备的通用协议。 重点分析了闪存盘使用的u s b 海量存储类单批量传输协议和f a t 文件系统。研究了嵌入式u s b 主 机芯片i s p l l 6 1 和8 位微控制器a t 8 9 s 5 2 之间的接口电路和并行数据传输模式,并自底向上地完 成了主控器驱动、u s b 驱动、海量存储类协议实现和文件系统实现等软件部分。最后,构造了小 的测控系统以测试系统的读写数据功能,并对测试结果进行了分析与总结。 关键词:数据存储模块,嵌入式u s b 主机,闪存盘,海量存储类,f a t 文件系统 a b s t r a c t a sap o r t i o no fp r e c i s i o nf a r m i n gs y s t e m ,y i e l dm o n i t o rs y s m m sf u n c t i o ni sc o l l e c t i n gv a r i o u s d a t ao ft h ef i e l du n i t s ,s t o r i n ga n dt r a n s f e r i n gd a t at og e n e r a lc o m p u t e rb yi t sd a t as t o r a g em o d u l e a f t e r a n a l y s i n ga d v a n t a g ea n dd i s a d v a n t a g eo fs o m ea p p l y i n gp r o d u c t s ,ap r d j e c tu s i n gu s bf l a s hd i s kt o s t o r i n ga n dt r a n s f e f i n gd a t ai sp r o m o t e d t h eu s bb a s i cc h a r a c t e ra n d 。d m i nu s bd e v i c ep r o t o c o lw h i c hi sn e c e s s a r yf o re m b e d d e du s b h o s ts y s t e md e v e l o p i n gi si n t r o d u c e dd a m f l e d t h eu s bm a s ss t o r a g ec l a s s b u l k o n l yt r a n s p o r t s p e c i f i c a t i o na n df a tf i l es y s t e mi sa n a l y s i s e dp a r t i c u l a r l y t h e nt h ei n t e r f a c ec i r c u i ta n dp a r a l l e ld a t a t r a n s f e r i n gm o d ei ss t u d i e d ,s or e a l i z e d ,f r o mb o t t o mt ou p ,h c d ( h o s tc o n t r o l l e rd r i v e r ) ,u s b d ( u s b d r i v e r ) ,m a s ss t o r a g ec l a s sd r i v e ra n df i l es y s t e md r i v e r a tl a s tam i c r oc o n t r o ls y s t e mi sc o n s t i t u t e dt o t e s tt h er u n i o n so ft h ew h o l es y s t e m t h et e s t i n gd a t ai st h e na n a l y z e da n ds o m er e s u l ti sd i s p l a y e d k e y w o r d s :d a t as o r a g em o d u l e ,e m b e d d e du s bh o s l f l a s hd i s k ,i s p l l 6 1 ,m a s ss t o r a g ec l a s s 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所 知,除了文中特别加以标注和致谢的地方外,论文中不包宙其他人已经发表或撰写过的研究成果, 也不包含为获得中国农业大学大学或其它教育机构的学位或证书而使用过的材料。与我同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 研究生签名。嚷第 时问:弘矿 年;月阳日 关于论文使用授权的说明 本人完全了解中国农业大学大学有关保留、使用学位论文的规定,即:学校有权保留送交论 文的复印件和磁盘,允许论文被查阅和借阅;学校可以用不同方式在不同媒体上发表、传播学位 论文的全部或部分内容可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 研究生签名:样 时间:弘一多年岁月加日 导师签名:参幸囱牟时间:劢。r 年弓月护日 中目农业大学硕士学位论文第一章绪论 1 1 研究背景和发展状况 第一章绪论 迄今为止,农业仍然是效益低下的产业。效益低的重要原因之一是种子、水肥、农药等投入 不是根据实际的需要。另一方面,农业造成的环境污染与农产品残留毒害也日益引起人们的关注。 在这种背景下,一种新型农作业技术体系即被提出了,这就是“精细农业,j 【l 】口】。 “精细农业”( p r e c i s i o na g r i c u l t u r ep r e c i s i o nf a r m i n g ) 是在定位采集地块信息的基础上,根据 地块土壤、水肥、作物病虫害、杂草、产量等在时间与空间上的差异,根据农艺的要求进行精确 定位定量耕种、施肥、灌水、用药的农业技术。精细农业技术的支持体系包括:农田信息采集系 统、地理信息系统( g i s ) 和管理决策支持系统例。 农田信息采集系统需要采集的信息有:产量图、土壤特性信息等。其中产量图是通过处理收 割机上记录的产量数据和位置数据在计算机上生成的。收割机上安装的数据采集、记录系统称为 谷物在线测产系统( y i e l dm o n i t e r i n gs y s t e m ) 。 谷物在线测产系统主要包括中央控制系统、全球定位系统( g p s ) 、谷物流量传感器、谷物含 水率传感器、车速传感器、割幅传感器、割台高度传感器、升运器转速传感器、显示与操作终端 和数据存储模块。数据存储模块负责将谷物在线测产系统采集的数据存储于某种介质并将数据传 送到计算机中。 目前数据存储模块的成功案例有: ( 1 ) 中国农业大学汪懋华教授领导的“现代精细农业系统集成研究教育部重点实验室” 采用的c f 卡( c o m p a c t h a s hc a r d ) 存储方案。 ( 2 )上海交通大学和中科院合作开发的测产系统。在2 0 0 1 年实现了c f 卡存储,到2 0 0 3 年使用了无线传输技术,将测产数据实时的传送到控制室的计算机中p 】【1 。 ( 3 ) 国外产品绝大多数使用的是c f 卡存储方案。如j o h nd e e r e 公司的g r e e n s t a r 、a g l e a d e r 公司的p f a d v a n t a g e 系列产品、m a s s e yf e r g u s o n 公司的f i e l d s t a r 和c a s ei h 公司的a f s ( a d v a n c e df a r m i n gs y s t e m ) 等。 总之,目前的数据存储模块采用的是c f 卡存储或者无线传输技术但是,由于无线传输的 技术及成本问题,使用并不多见,尤其在商品化的产品中更是不可能采用的。c f 卡的存储方案也 有其不便之处,尤其是计算机读写c f 卡时必须要使用专用读卡器。 本课嚣的任务便是设计一种既方便成本也很低的数据存储模块实现方案基于u s b 的数据 存储模块方案。由于u s b 接口实现了真正的即插即用,u s b 接口成为p c 的标准接口,u s b 设备也 如雨后春笋般被广泛开发和使用。其中u s b 闪存盘( 俗称“u 盘”) 因为具有使用方便、容量大、 数据可靠和价格低等优点,已经成为移动存储的不= 选择。随着嵌入式u s b 主机( h o s t ) 芯片的 出现,使得原来只能在计算机上使用的u s b 设备也可以用于嵌入式系统中,也使得在谷物在线测 产系统的数据存储模块中使用u s b 闪存盘具备了技术可行性。 中国农业大学硕士学位论文 第一章结论 1 2 课题研究的主要内容 本i 裂题基于u s bh o s t 技术,利用微控制器( 单片机) 将一定的数据写入u s b 闪存盘。具体要 求为:在写入数据的过程中必须保证可靠性,不允许发生数据错误;数据在u s b 闪存盘中必须以 文件的形式存在,既在各种操作系统( w i n d o w s 、l i n u x 等) 中不需耍任何特殊的硬件或软件就可 以读取谷物测产数据;不能破坏闪存盘中原有的文件,也不能造成闪存盘文件系统的错误;必须 兼容目前市场上的绝大部分闪存盘。 本文分析t u s b 闪存盘作为u s b 设备所使用的通用u s b 协议,作为海量存储设备使用的u s b 海量 存储类协议,并对绝大多数闪存盘使用的单批量( b u l k - 0 n l y ) 传输方式进行了分析,还分析了 闪存盘普遍使用的f t 1 6 文件系统。在此基础上选择了合适的微控制器a t 8 9 s 5 2 和嵌入式u s b 主机 芯片i s p l l 6 1 ,完成y - - 者之间的硬件接口电路以及i s p l l 6 1 和u s b 设备通讯部分模拟电路的设计。 最后,使用汇编语言实现t u s b 主机软件系统的各协议层并成功建立文件、写入数据。 研究的主要内容有: 1 u s b 主机和u s b 设备之间的通信协议 2 研究闲存盘使用的其他相关协议;u s b 海量存储类协议、s c s i 命令集协议和b u l k - 0 n l y 传 输协议 3 研究t f a t t 6 文件系统组成,并针对嵌入式应用做了相关修改 4 , i s p l l 6 1 和微控制器、u s b 插座之间的硬件设计 5 ,u s b 主机系统的软件设计 6 在u s b 闪存盘上建x t 4 , 文件进行调试,确保系统可靠满足实际使用要求 1 3 研究的目的及意义 将u s b 闪存盘用于谷物在线授9 产系统极大的提高了系统的使用方便性,尤其是对于后期的 数据处理;同时本课题兼容的闪存盘产品范围非常广,甚至杂牌闪存盘都可以。本课题所研究的 嵌入式系统读写闪存盘文件方案在很多领域都有应用优势,如野外致据采集、黑匣子等等。 本文所涉及的u s bh o s t 技术属于u s b 的领先技术,是u s b 协议的发展方向之一。目前国 内的研究尚处在起步阶段,其中m c s - 5 1 系歹l j8 位徽处理器的u s bh o s t 技本鲜有成果,本文所 采用的8 位微处理器加i s p l l 6 1 的u s bh o s t 方案将是这一领域的重要组成部分。 2 中国农业大学硕士学位论文 第二章主机和设备 第二章u s b 主机和设备 u s b 协议规范是非常全面而又非常细节的协议,从u s b 插座的机械属性、连接线的电气属性 到u s b 信号的编码、数据流的定义都有十分详尽的定义。u s b 设备开发者必须掌握其中的数据流 协议、协议层协议和u s b 设备架构协议,本课题研究的嵌入式u s b 主机作为u s b 通信的主动方也 必须掌握三者。除此之外本课题还涉及到了其中的u s d 主机( 硬件和软件) 协议。本章将根据 u s b 主机在嵌入式领域的特殊应用情况对u s b 相关协议进行分析,在u s b 协议版本方面,u s b 标 准组织已经发布了两个版本,版本号分别是1 1 和最新的2 0 。因为本课题涉及到的协议都在 u s b l 1 范围内,而且u s b 2 0 兼容u s b l 1 的所有设备,因此本章所介绍的内容都是基于u s b l 1 协议的。 2 1u s b 总线的拓扑结构 2 1 1u s b 总线逻辑拓朴结构 u s b 提供了在一台主机( u s bh o s t ) 和若干台附属的u s b 设备( u s bd e v i c e ) 之间的通信功 能。u s b 主机在u s b 系统中是一个起协调作用的实体,它不仅占有特殊的物理位置,而且对于u s b 以及连到u s b 上的设备来说,还负有特殊责任。主机控制所有的对u s b 的访问。一个u s b 设备想 要访问总线必须由主机给予它使用权。主机还负责监督u s b 的拓朴结构。主机对每个连接到它的 设备指定唯一的u s b 地址。并检测这种新装的u s b 设备是集线器还是功能部件。主机使用指定的 u s b 的地址和零号端口为u s b 设备建立控制管道1 5 】。对于目前大多数u s b 系统来讲,u s b 主机就是 普通的个人电脑,不过,对于本课题,u s b 主机的功能则由8 位微控制器完成。 u s b 设备用于向主机提供一些额外的功能。u s b 设备提供的功能是多种多样的,但面向主机 的接口却是一致的。所以,对于所有这些设备,主机可以用同样的方式来管理它们与u s b 有关的 部分。为了帮助主机辨认及确定u s b 设备,这些设备本身需要提供用于确认的信息。在某一些方 面的信息,所有设备都是一样的;而另一些方面的信息,由这些设备具体的功能决定。对于本课 题涉及到的d s b 闪存盘,它的固件中就包含有一系列的描述符,在主机对其枚举时提供给主机。 u s b 描述符详见2 4 1 关于闪存盘的枚举,参见6 3 4 。 在物理结构上,设备通过h u b 连到主机上。但在逻辑上主机是直接与各个逻辑设备通信的, 就好像它们是直接被连到主机上一样。这个逻辑关系如图2 - 1 所示【5 | 围2 - 1u s b 总线迮辑拓扑结构 3 中国农业大学硕士学位论文 第二二帝主机和设备 从终端用户的角度看到的u s b 系统,可简单地用国2 2 表示: 囤2 - 2u s b 主机设鲁的简单模型 2 1 2 完整的u s b 系统软硬件组成 在实际的实现上,u s b 系统提出了一些重要的概念和情况来支持现代个人计算机所提出的可 靠性要求,所以u s b 的分层管理是必须的。它能馒不同层次的实现者只关心u s b 相关层次的功能 细节,而不必掌握从硬件结构到软件系统的所有细节。u s b 的这种层次结构如图2 - 3 所示: 主机物理设各 + 客户软件k jl 应用层 tt u s b 系统软件k 一 u s b 逻辑设备 设备层 l t u s b 主机控制器iiu s b 总线接口 总线接口层 li _ - l l l _ -实际通信流 逻辑通信流 亡= = = = 二二= = 需实现的区域 田2 - 3u s b 主机,漫备的软硬件实现 u s b 总线接口层提供了在主机和设备之问的物理连接、发送连接、数据包连接。u s b 设备层 对u s b 系统软件是可见的,系统软件基于它所见的设备层来完成对设备的一般的u s b 操作。应用 层可以通过与之相配合的客户软件向主机提供一些额外的功能。u s b 设备层和应用层的通信是逻 辑上的对应于这些逻辑通信的实际物理通信由u s b 总线接口层来完成嘲。 2 2u s b 通信流 图2 - 4 是图2 3 的扩充它更详尽地描述了u s b 系统。一个u s b 逻辑设备对u s b 系统来说就 是一个端点( e n d p o i n t ) 集合。端点可以根据它们实现的接口来分类。u s b 系统软件通过一个缺 省的控制管道( c o n t r o lp i p e ) 来管理设备。而客户软件用管道束管理接口。管道柬的一端为端 点,另一端为缓冲区。客户软件要求通信数据在主机上的一个缓冲和u s b 设备上的个端点之间 4 - 中国农业大学硕士学位论文第二章主机和设备 进行。主机控制器或u s b 设备( 取决于数据传送方向) 将数据打包后在u s b 上传递,由主机控制器 ( h o s tc o n t r o l l e r ) 协调何时在i j s b 上传递数据【5 j 口 2 2 1 设备端点 设备端点是主机与设备问通信流的一个结束点。一系列相互独立的端点在一起构成了u s b 逻 辑设备。每个逻辑设备有一个唯一的地址这个地址是在设备连上主机时,由主机分配得到而 设备中的每个端点在设备内部有唯一的端点号 “。这个端点号是在设备设计时被给定的。每个端 点都是一个简单的连接点,只能支持单方向的数据流:输入( 从设备到主机) 或者输出( 主机到 设备) ,两者不可得兼( 端点0 例外,参见2 1 3 2 ) 。 田2 _ 4u s b 主机,设备的细节围 一个端点的特性决定了它与客户软件进行的传送的类型。一个端点有众多特性,本课题中涉 及到的有: - 5 - 中图农业大学硕士学位论文 第二章主机_ 和设备 端点的端点号 端点能接收或发送的包的最人长度 端点的传输类型( 详见2 3 3 节) 端点与主机的数据传送方向 端点号不为0 的端点在被设置前处于未知状态,是不能被主机访问的。 2 2 i 1 设备0 号端点 所有u s b 设备都要实现一个缺省的控制方法。这种方法将端点0 作为输入和输出端点。u s b 系统软件使用这个端点初始化设备以及进行一般地u s b 操作( 例如设置此设备) 。此时的管道作为 缺省控制管道( 见2 2 2 节) ,它必须支持控制传送类型( 参见2 3 3 ) 。设备接上u s b 接口,加上 电压然后收到一个总线复位命令,设备的0 端点就可以被u s b 主机访问了【5 | 。 2 2 1 2 设备非0 端点 设备可以有除0 以外的其它端点这取决于这些设备的功能,比如闪存盘必须有两个非0 端 点。低速设备在0 号输入及输出端点外只能有2 个额外的可选端点;而高速设备可具有的额外 端点数仅受限于协议的定义( 协议中规定,最多1 5 个额外的输入端点和最多1 5 个额外的输出端 点) i s ) 。除缺省控制管道的缺省端点外,其它端点只有在设备被设置后才可使用,对设备的设置是 设备设置过程( 见第8 章) 的一部分。 2 2 2 管道( p i p e ) 管道只是一种逻辑上的概念,是设备上的一个端点和主机上软件之间的联系,体现了主机上 缓存和端点问传送数据的能力,u s b 通过管道在主机缓冲区与设备端点间传送数据。由0 号端点 组成的管道叫缺省控制管道。一旦设备加电并复位后,此管道即可使用。其它管道只在设备被设 置后才存在u s b 系统软件在决定设备身份、设置要求和设暨设备时使用缺省控制管道 5 1 1 6 1 。 管道的概念主要用于p c 上驱动程序和用户程序的编写。在设计u s b 设备的时候般不会涉 及到,在本课题中也没有涉及到。 2 3u s b 协议层 图2 - 4 中关于u s b 帧格式的数据,就是在这一层协议里面定义的。u s b 主机协议芯片已经实 现了部分协议层的下面只介绍在使用u s b 主机协议芯片后还需要掌握的内容。 2 3 ,1 包( p a c k e t ) 包( p a c k e t ) 是最基本的u s b 的数据单元,u s b 中定义了4 种类型的包,包括令牌包、数据 6 中国农业大学硕士学位论文 第二章主机和设备 包、握手包和特殊包。其中需要了解的是令牌包和数据包。 22 1 1 令牌包( t o k e np a c k e t ) 根据p i d 的不同,令牌包可以细分为输入包( i n ) 、输出包( o u t ) 、设置包( s e t u p ) 和帧起 始包( s o f ) f ”。本课题不涉及s o f ,而其余三种的结构是一样的,如图2 - 5 所示。其中s y n c 和 圈2 - 5i n 、o u t 和s e t u p 包的数据格式 c r c 5 会被u s b 主机协议芯片自动完成。p i d 表示包的类型,三种类型对应的p i d 的具体数值不必 人为赋值只要将p i d 的种类通知u s b 主机协议芯片,它就会正确赋值。a d d r 是设备的地址,e n d p 是设备端点号。 2 2 1 2 数据包( d a t ap a c k e t ) 根据p i d 的不同,数据包分为d a t a o 和d a t a l 两种,两种数据包的格式相同,如图2 - 6 所 示 7 l 。当u s b 发送数据包时,如果数据大于数据包的最大值,那么将分为几个包,这些包的p i d 是d a t a o 和d a t a l 交替进行的,这是一种保证数据交换正确的机制。不过。在使用了u s b 主 机协议芯片以后只需要告诉它第一个数据包的p i d ,它会自动分包并且更新后续包的p i d 。 2 3 2 事务( t r a n s a c t i o n ) 图2 - 6 数据包的数据格式 事务是由包组成的,如图2 7 所示。根 据令牌包的不同。事务分为三种:输入( i n ) 事务、输出( o u t ) 事务和设置( s e t u p ) 事 务川。其中令牌包说明了事务是主机和哪个 图2 7 事务的组成 i i s b 设备的哪个端点之间的什么事务,握手包说明了事务的结束状态,比如有没有发生错误。对 于本课题选择的i j s b 主机芯片i s p l l 6 1 来说,主机和设备之间的通信单位是事务,而不是包。需 要i s p l l 6 1 产生i i s b 事务时,通过p t d 告诉它下歹日信息:令牌包的类型、设各地址、端点号、数 据包类型和数据,i s p l l 6 1 就会产生一个事务,组成事务的三个包自动完成,不需使用者干涉, 详细描述请参考6 3 。 2 3 3 传输( t r a n s f e r ) 传输是由事务组成的。u s b 定义了四种类型的传输:控制传输、中断传输、批罐传输和同步 传输f 7 j 。本课题用到的只有控制传输和批鼍传输。 2 3 3 1 批量传输 批量传输豹组成比较简单,就是一系列的i n o u t 事务,没有s e t u p 事务。批量传输支持的 最大包可以是8 、1 6 、3 2 或6 4 字亿在一个事务中,如果需要多个数据包那么除了展后一个 外其他包的大小都必须是最大值例。 有一点十分重要的就是:批量传输中,不仅单个事务中数据包的p i d 是o 1 交替的,所有的 事务之间的数据包也是0 1 交替的,也就是说,一笔事务的第一个数据包和上一笔事务的最后一 个数据包的p i d 不能是相同的。 2 3 3 2 控制传输 控制传输是u s b 设备枚举( 参见6 3 4 ) 时使用的唯一一种传输方式。控制传输的构成比较 复杂,可分为三个步骤: 初始设置步骤( 1 个s e t u p 事务) : 可选数据步骤( 一个i n o u t 事务) ; 信息状态步骤( 一个i n o u t 事务) 。 第一个s e t u p 事务包含有8 字节的数据包,就是“设备请求命令”( 参见2 4 2 ) 。数据步骤 的有无取决于这个“没备请求”是否要求主机和设备传送数据,如果不需要的话,那么第二个步 骤就是不存在的,如果需要设备送出数据,那么第二个步骤就是一个i n 事务,否则就是o u t 事 务。 信息状态步骤是必需的,如果第二个步骤中发生了i n 事务,那么这一步骤发生o u t 事务, 其他两种情况都是i n 事务。应该注意的点是:不论前面事务的最后一个数据包是d a t a o 还是 d a t a i ,信息状态步骤的事务的数据包都是d a t a i ,而且长度是0 。 对于闪存盘,控制传输的最大包可以是8 、1 6 、3 2 或6 4 字节。因为第一步骤和第三步骤事 务的数据包分别是8 和0 ,最大包大小对他们是没有意义的。 2 4 通用u s b 设备架构 u s b 协议规定了包括u s b 闪存盘在内的所有u s b 设备都要遵循的特点现将协议介绍如下。 2 4 i 标准描述符 描述符( d e s c r i p t o r ) 描述了u s b 设备的功能、分类、传输类型等等各个方面【8 j 。u s b 主机 在使用u s b 设备前必须取得它的描述符,通常在设备枝举阶段完成,参见6 3 4 。为了方便管理, u s b 协议将描述符分为五种,名称及其编号如表2 - 1 所示【”。字符串描述符对于本课题是没有意 义的,其他四个的层次关系如图2 - 8 所示: - 8 一 表2 _ 1u s b 描述符类型及编号 编号 描述符类型 l设备描述符( d e v i c ed e s c r i p t o r ) 2 配置描述符( c o n f i g u r a t i o nd e s c r i p t o r ) 3 字符串描述符( s t r i n gd e s c r i p t o r ) 4接口描述符( i n t e r f a c ed e s c r i p t o r ) 5端点描述符( e n d p o i n td e s c r i p t o r ) 设备描述符三三三三三一。兰i三三三i 田2 - 8 标准描述符的层次田 设备描述符描述了u s b 设备的通用信息,一个u s b 设备只有一个设备描述符i ”。内容如表2 - 2 所列。其中的厂商编号、产品编号、设备出厂编号以及各种描述符中的字符串索引在本课题中没 有涉及到。 表2 - 2 设鲁描述符组成以及闪存盘典型取位 偏移字段名称长度意义以及闪存盘典型取值 0 b l e n g t h i b 设各描述符长度( = 1 2 h ) l b d e c r i p t o r t y p e 1 b 描述符类型( = o l h ,参见表2 - 1 ) 2b e d u s b2 b u s b 版本号,c q 存盘一般为1 1 ( = o l l o h ) 4b d e v i c e c l a s si b 设备类代码,闲存盘为0 0 0 ( 类代码在接口描述符中) 5b d e v i c e s u b c l a s s1 b 子类代码,闪存盘为0 0 0 ( 子类代码在接口描述符中) 6b d e v i c e p o r t o c o l1 b 协议代码,闪存盘为0 0 0 ( 协议代码在接口描述符中) 7b m a x p a e k e t s i z e o1 b 端点0 的最大包大小,闲存盘为0 8 h 或者l o b 8i d v e n d o r2 b 厂商编号 1 0i d p r o d u e t 2 b 产品犏号 1 2 b c d d e v i c e2 b 设鲁出厂桷号 1 4 i m a n u f a c t u r e ri b 描述厂商的字符串索引 1 5 i p r o d u c t1 b 描述产品的字符串索引 1 6 i s e r i a l n u m b e ri b 描述设备序列号的字符串索引 1 7 b n u m c o n f i g u r a t i o n s1 b 可能的配置数闪存盘一般为o l h - 9 符行符述述述 描插描 口 口口 接攮接 厂一乙 中国农业人学硕士学位论文第二章主甘l 翌墼查 2 412 配置描述符 配置描述符用于描述u s b 设备的属性和能力等信息 s l 。闪存盘一般只有一个配置描述符,其 内容以及典型取值如表2 - 3 所列。本课题不关心其中的供电模式和最大电流。 襄2 - 3 配置描述符组成以及闪存盘典型取值 偏移字段名称 睦度 意义以及闪存盘典型取值 0 b l e n g t h 1 b 配譬描述符k 度( = 0 9 h ) l b d e c r i p t o r t y p e i b 描述符类型( = 0 2 h ,参见表2 - 1 ) 2 w t o t a l l e n g t h 2 b 此配置和其下所有描述符( 接口、端点) 总长度。闪存盘 一般为0 0 2 0 h ( 0 9 h + 0 9 h + 2 0 7 h ) 4b n u m i n t e r f a c e si b 此配置所支持的接口个数,闪存盘一般为o l h 5 b c o n g f i g u r a t i o n v a l u e i b 配置值,可用作s e t c o n f l g u r a t l o n 参数 6 i c o n f i g u r a t i o n i b 描述此配置的字符串索引 7b m a t t r l b u t e s1 b 供电模式 8m a x p o w e r1 b 设备从总线提取的最大电流 24 1 3 接口描述符 接口描述符用于描述一个特定接口的属性f b 】。闪存盘通常只有一个接口描述符,其内容以及 典型取值如袭2 4 所列。 衷2 _ 4 接口描述符组成以及闪存盘典型取值 偏移字段名称 长度意义以及闪存盘典型取值 0b l e n g t h 1 b 接口描述符长度( = 0 9 h ) 1 b d e c r i p t o r t y p e l b 描述符类型( = 0 4 h ,参见袭2 - 1 ) 2b i n t e r f a n e n u m b e ri b 该接口的编号,调存盘一般只有一个接口,故为0 0 h 3b a i t e r n a t e s e t t i n g 1 b 备用的接口描述符编号,闪存盘一般没有,教为o o h 4b n u m e n d p o i n t s 1 b 该接口使用的端点数闪存盘一般为0 2 h 5b i n t e r f a c e c l a s s 1 b 接口类型,闪存盘为0 8 h ,表示海量存储类 6b i n t e r f a c e s u b c l a s si b接口子类类型,参见表3 1 7b i n t e r f a c e p r o t o c o l 1 b 接口遵循的协议,参见表3 - 2 8i i n t e r f a c e 1 b 描述该接口的字符串索引 2 4 14 端点描述符 端点描述符用于描述非0 端点的属性,包括输入输出、端口号和最大包大小等嘲。闪存盘一 般有两个非0 端点。必须注意:端点描述符虽然是独立的描述符,但是在设备枚举时不能单独获 得,必须通过配置描述符获得详细描述参考2 4 2 中对获取描述符请求的说明。端点描述符的 内容以及典型取值如表2 - 5 所列。 1 0 - 中国农业大学硕士学位论文锥二章主帆和设备 表2 - 5 端点描述符组成以及闪存盘典型取值 偏移字段名称长度意义以及闪存盘典型取值 0 b l e n g t h l b接口描述符长度( = 0 7 h ) l b d e c r i p t o r t y p ei b描述符类型( = 0 5 h ,参见表2 一1 ) 2 b e n d d o i n t a d d r e s s 1 b 端点地址,最商位表示i n ( 1 ) 或者o u t ( 0 ) 。对于闪存盘的 两个端点可能为:o l h 、8 2 h 或者8 i h 、0 2 h 。 3 b m a t t r i b u t e sl b 端点的传输类型闪存盘的两个端点都为批量传输0 2 h 4w m a x p a c k e t s i z e2 b 端点最大包的大小,闪存盘的两个端点一般都为4 0 h 6b i n t e r v a l i b 主机查询端点的时间间隔,对于批量、控制端点无意义 2 4 2 标准设备请求 控制传输的“初始设置步骤”中包含了8 字节的数据包( 参见2 3 3 ) ,即是设备请求命令, 这些请求命令是主机枚举和配置u s b 设备的关键,格式如表2 - 6 所列。课题中对闲存盘的枚举和 配置没有用到所有的请求命令,下面只介绍可能用到的标准设备请求。 表2 - 6 标准设鲁请求格式 偏移量 0l24 6 字段b m r e q u e s t t y p eb r e q u e s t w v a l u e w i n d e x w l e n g t h 大小( 字节) 1l2 22 2 4 2 1 获取描述符请求g e t d e s c rip t o r 此请求命令用于获取设备的特定描述符,各字段取值:b m r e q u e s t t y p e = 8 0 h :b r e q u e s t = 0 6 h ; w y a l u e 高字节为描述符的类型,低字节为描述符的字符串索引,描述符的类型只能是设备描述符、 配置描述符或字符串描述符;如果获取设各描述符或配置描述符,w i n d e x - - - = o o o o h :w l e n g t h 为设 备返回的数据大小,通常为获取的描述符长度1 6 1 。 2 4 2 2 设置地址请求s e t _ a d d r e s s 该命令用于主机为设备分配地址,各字段取值:b m r e q u e s t t y p e = o o h :b r e q u e s t = 0 5 h :w y a l u e 为主机分配给设备的地址;w l n d e x 和w l e n g t h 都为o o o o # j 。 2 4 2 3 设置配置请求s e tc o n f i g u r k t i o n 主机用该命令指示设备采用指定的配置,各字段取值:b m r e q u e s t t y p e = o o h :b r e q u e s t = 0 9 h w v a l u e 为主机要求设备采用的配置的配置值,即配置描述符中b c o n f i g u r a t i o n v a l u e 的值; w i n d e x 和w l e n g t h 部为0 0 0 0 h 【6 i 。 中国农业大学硕1 :学位论文 第三章闪存盘类相关出议分析 第三章闪存盘类相关协议分析 每一个i j s b 闪存盘的制造商在最计闪存盘的时候必须考虑产品的兼容性、易用性以及产品设 计的复杂度。作为1 9 9 9 年蛆前个人电脑的主流操作系统w i n d o w s9 8 并未提供闪存盘的驱动程序, 因此,那个时期的闪存盘产品都有自已的驱动程序或者特有的协议。自从微软公司发布了携带闪 存盘驱动的w i n d o w s2 0 0 0 以厉,各个闪存盘厂商纷纷采用和其相对应的协议。虽然目前的闪存 盘产品仍需要提供w i n d o w s9 8 系统的驱动程序,但是,各个厂家的闪存盘产i 占的区别已经微乎 其微。 本课题分析了十几种不同品牌不同系列的闪存盘。这些闪存盘所使用的相同协议主要有:u s b 海量存储类协议、s c s i 命令集协议、u s bb u l k - o n l y 传输协议。 3 1u s b 闪存盘的逻辑结构 顾名思义,t j s g 闪存盘的存储介质是闪存( f l a s hm e t a o r y ) ,除此之外,闪存盘还必须有u s b 设备芯片( 如p h i l i p s 的p d i u s b d l 2 ) 用以实现底层的i j s b 协议和单片机用于控制( 或者采用整 合u s b 协议的单片机) 。不过,本课题的任务不是设计闪存盘而是读写闪存盘,因此不需要知道 单片机如何读写闪存,也不需要知道i j s b 设备芯片和单片机之间的接口。需要了解的是:主机如 何才能让闪存盘的同件执行相应的函数以存取数据。如图3 - 1 所示:其中的命令包括读写、查询 u s b 主机 b 刊b 单片机 ( 与闪存盘类似 包括u s b 主控 一命令徽据卜、,卜f ( 固件) _7 i 竺i 芯片,c p u 等) u s b 闲存盘 田3 1u s b 主机与闪存盘通信示慧围 等等,如果是读命令,其后的数据就是从闪存盘发往主机的,如果是写命令,数据就是从主机发 往设备的,其他命令类似。读写的数据不是以字节为单位的,而是以扇区( s e c t o r ) 为单位,如 图3 - 2u s b 闪存盘的逻辑结构图所示。需要注意的是:闪存盘的扇区号是从0 开始连续编址的。 由于闪存盘的特殊性没有酱通磁盘中存在的磁头和柱面结构,虽然作为一个特殊“磁盘”需要 这些参数,但仅仅具有象征意义只有在闪存盘格式化的时候才会涉及到本课题不需要考虑。 围3 - 2u s b 闪存盘的逻辑结构图 中国农业人学硕生学位沧文第二章闪存盘粪相关协议分析 _ i i 鼍皇罡墨皇皇鼍l 关于命令及其传输方式,在u s b 海量存储类协议中有详细定义。 3 2u s b 海量存储类协议 为了方便开发u s b 设备,u s b 标准开发组制定了一系列u s b 设备类协议,例如:人机接口设 备( h i d ) 类、打印机类及u s b 海量存储类等等。所谓u s b 设备类,就是具有相同功能和属性的设 备或者接口的集合【”。u s b 设备类作为软件层次的规范,增加了u s b 整个协议的复杂性,却方便 了u s b 设备的开发u s b 类协议在整个体系中的位置如图3 - 3 所示。 围3 - 3u s b 类协议在u s b 体系中的位置 所有的u s b 设备都具有相同的设备硬件和设备接口。设备硬件用来和主机控制器进行物理的 数据交换;设备接口则和系统软件之间以标准的u s b 设备框架为基础实现各种标准的u s b 数据传 输格式,交换标准的u s b 描述符,执行标准的u s b 请求命令,使得u s b 主机可以完成设备的枚举 和配置。各种u s b 设备的真正不同在最高层体现。u s b 设备类协议建立在功能抽象层基础之上, 每一种标准的u s b 设备类都有一套完整的类协议来描述设备在功能抽象层上的功能和特性。比如 类协议可以增加一些类请求:类协议根据此类设备的特点规定数据传输的方式。总之,u s b 类规 范可以让开发人员集中精力于特定设备的特有属性,基本脱离u s b 硬件的束缚,尤其简化了设备 驱动的开发难度州。 3 2 1u s b 海量存储类概述 u s b 海量存储类( u s bm a s ss t o r a g ec l a s s ,也称u s b 大容量存储类) 主要用于为软盘设备、 a t a 接口设备、i d e 设备以及f l a s h 存储设备提供u s b 接口。此类设备的特点是:数据交换量大, 不同设备的数据容量相差较大。要求数据传输可靠性高【1 0 1 “。一个设备属于u s b 海量存储类设备 韵标志是,接口描述符b i n t e r f a c e c l a s s 字段的值为0 8 h 。 由于u s b 海量存储设备种类繁多,差异较大,u s b 协议开发组又将u s b 海量存储类分成了6 个子类,分别使用不同的命令集,具体由接口描述符的b i n t e r f a e e s u b c l a s s 字段指定如表3 - i 所示1 1 q : - l3 _ 表3 - 1u s b 海量存储类子娄 h i n t e r f a c e c l a s s子类命令勘议说明 字段值 0 l h 简化块命令( r e d u c e db l o c kc o a n d s , 一般地,f l a s h 存储设备使用r b c 命 简写为r b c ) ,t 1 0 1 2 4 0 一d令其他设备也可以使用。 0 2 h s f f - 8 0 2 0 i 硒l i c 一2 ( a t a p d一般由c d d y d 设备使用 0 3 ho l c 一1 5 7 一般由磁带设备使用 0 4 h u f i 一般由软磁盘驱动器设备使用 0 5 hs f f 一8 0 7 0 i 一般由磁盘驱动器设备使用 0 6 h s c s i 命令集 一般由磁盘驱动嚣设备使用 0 7 h _ o f f h 待用 表3 一l 的各种子类都有一套自己的协议,并通过命令的形式实现各种功能。需要注意的是, 这些协议( 即命令集) 和u s b 没有任何关系( 虽然u f i 是u s b 协议的一部分。但是它只和相应的 子类设备有关系,对于其他设备没有任何意义) 。在设备和主机进行数据传输的时候,这些命令 都被打包成一系列的命令包进行传输。可以说u s b 海量存储类设备接口描述符的 b i n t e r f a c e s u b c l a s s 字段体现了命令传输的内容,而接口描述符的b i n t e r f a c e p r o t o c o l 字段则 体现了命令数据传输的方式,具体方式见表3 - 2 【”i 。 表3 2u s b 海量存储类传输协谈 b i n t e r f a e e p r o t o c o l 传输协议说明 字段值 0 0 h 控制批量中断传输协议u s b 海量存储类的c b i 传输协议 ( 包括命令完成中断) o l h 控制批量中断传输协议u s b 海量存储类的c b i 传辕惦议 ( 不包括命令完成中断) 5 0 b 革批量传输协议 u s b 海重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论