(计算机应用技术专业论文)基于s3c2410μcos_Ⅱ的usb接口设计与研究.pdf_第1页
(计算机应用技术专业论文)基于s3c2410μcos_Ⅱ的usb接口设计与研究.pdf_第2页
(计算机应用技术专业论文)基于s3c2410μcos_Ⅱ的usb接口设计与研究.pdf_第3页
(计算机应用技术专业论文)基于s3c2410μcos_Ⅱ的usb接口设计与研究.pdf_第4页
(计算机应用技术专业论文)基于s3c2410μcos_Ⅱ的usb接口设计与研究.pdf_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

基于s 3 c 2 4 1 0 d - u c o s i i 的u s b 接口设计与研究 学位论文独创性声明 本人承诺:所呈交的学位论文是本人在导师指导下所取得的研究成果。论文 中除特别加以标注和致谢的地方外,不包含他人和其他机构已经撰写或发表过的 研究成果,其他同志的研究成果对本人的启示和所提供的帮助,均已在论文中做 了明确的声明并表示谢意。 学位论文作者签名: 坎彳殳 日 期:扣。孑6 9 学位论文版权的使用授权书 本学位论文作者完全了解辽宁师范大学有关保留、使用学位论文的规定,及 学校有权保留并向国家有关部门或机构送交复印件或磁盘,允许论文被查阅和借 阅。本文授权辽宁师范大学,可以将学位论文的全部或部分内容编入有关数据库 并进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。保密 的学位论文在解密后使用本授权书。 学位论文作者签名: 够包 方障 日 期: 。时6 基于$ 3 c 2 4 1 0 + u c 0 s i i 的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 主机的访问进行响应,从而实现即插 即用的功能。所以本文讨论的重点是u s b 设备固化的设计。 本文首先介绍u s b 总线、u s b 控制器( $ 3 c 2 4 1 0 内置) 和操作系统u c o s i i 的概念,并阐述了设备中前后台系统与带有u c o s i i 系统的概念。其次详细介 绍了在前后台系统和在u c o s i i 系统下的u s b 固化程序设计。在前后台系统中 详细介绍了不同通道数和d m a 方式下的数据传输。在u c o s _ i i 操作系统下以d m a 为传输方式设计单缓冲区和双缓冲区两种方案。并通过厂商请求实现了对设备的 控制命令传输。最后讨论了上述设计的调试和验证,将1 0 幅6 4 0 x 4 8 0 b m p 格式的 图片通过u s b 总线下载到l c d 上并显示出来,以此来证明本接口设计的正确性和 可靠性。 关键词:u s b ,i ic o s - i i ,固化程序,通道,数据传输 基于s 3 c 2 4 1 0 + u c 0 s i i 的u s b 接口设计与研究 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fc o m p u t e rc o m m u n i c a t i o nt e c h n o l o g y , u n i v e r s e s e r i a lb u s ( u s b ) ,d u et oi t sf e a t u r e ss u c ha sh i g hs p e e d ,m a n yt y p e so ft r a n s f e r s u p p o r t e d ,p l u g - a n d - p l a ya n de x p a n d a b i l i t y , h a sb e c o m et h es t a n d a r dc o m p u t e r i n t e r f a c ea n dau n i v e r s a lw a yw h i c hc o n n e c t sp e n p h e r a la n dc o m p u t e r t h es y s t e mi s d e s i g n e df o ru s b d e v i c ew h i c ht r a n s f o r i l l sam a s so fd a t aw i t hh o s tc o m p u t e r 劝c d i f f i c u l tp o i n tt h a tu s bb u ss y s t e md e s i g n sl i e s i nt h eu s bf i r m w a r ed e s i g n s u p p o r t i n gt h ef u n c t i o no fp l u g - a n d - - p l a y , u s bh o s tc o m p u t e rs h o u l dc a r r yo nu s b d e v i c ec o n f i g u r a t i o na n dt h ef i r m w a r eo fu s bd e v i c en e e d st or e s p o n dt h ea c c e s so f u s bh o s tc o m p u t e rr e a l t i m ew h e nu s b a p p a r a t u si n s e r t si nu s bi n t e r f a c ee a c ht i m e t h e r e f o r e ,t h i sp a p e rf o c u s e so nt h ed e s i g no ft h eu s bd e v i c ef i r m w a r e f i r s t l y ,t h i sp a p e ri n t r o d u c e st h ec o n c e p to fu s bb u s ,t h eu s bc o n t r o l l e r ( i n n e r c o n t r o l l e ri ns 3 c 2 4 1 0 ) a n dt h eo p e r a t i n gs y s t e mu c o s i i ,a n de x p l a i n st h ec o n c e p t o fb a c k f o r eg r o u n ds y s t e ma n dt h es y s t e mw i t hu c o s s e c o n d l y 。f i r m w a r e p r o g r a m m i n go fu s bd e v i c eb a s e do nb a c k f o r eg r o u n ds y s t e ma n du c o si i s y s t e mi si n t r o d u c e d i nt h eb a c k f o r eg r o u n ds y s t e m t h i sp a p e ri n t r o d u c e dd a t a t r a n s m i s s i o nw a yu n d e rt h ed i f f e r e n tp i p e l i n en u m b e ra n dt h ed m a u n d e rt h e u c o si io p e r a t i n gs y s t e mu s i n gd m aa st h et r a n s m i s s i o nm o d ed e s i g nt w ok i n d so f p l a nf o rs i n g l eb u f f e ra n dt h ed o u b l eb u 骶r - a n dh a sr e a l i z e dt h ec o n t r o lc o m m a n d t r a n s m i s s i o nt oe q u i p m e n tt h r o u g ht h em a n u f a c t u r e rr e q u e s t e d f i n a h y , d i s c u s s i n g d e b u g a n dc o n f i r m a t i o nm e n t i o n e d a b o v e ,d o w n l o a d i n g1 0p i c t u r e so f 6 4 0 x 4 8 0 b m pf o r m a tt ol c dv i au s bb u s c o n f i r m e dt h ea c c u r a c ya n dt h er e l i a b i l i t y o ft h i si n t e f f a c e k e yw o r d s :u s b ,“c o s i i ,s o l i d i f i c a t i o np r o g r a m ,p i p e l i n e ,d a t at r a n s m i s s i o n 2 基于$ 3 c 2 4 1 0 + u c 0 s i i 的u s b 接口设计与研究 一绪论 1 1u s b 接口简介 一直以来,作为电脑连接外围设备接口一直就没有一个统一的标准。自从通 用串行总线( u s b ) 推出以来,u s b 很快就成为了p c 机事实上的外部通讯标准。u s b 当初的设计构想是,将这些接口统一起来,使用一个4 针插头作为标准插头。u s b 总线的良好特性使其应用范围正在从计算机外设向嵌入式系统领域拓展。由于 u s b 总线协议的完整和复杂性,使得嵌入式系统中u s b 的应用方式种类繁多。从 速度上区分,u s b 设备在低速、全速和高速应用领域上有着不同的划分。低速u s b 多用于人机接口设备等数据量小、实时性要求不高的场合;全速设备则更多的应 用在数据存储、音视频信号传输等场合:符合u s b 2 0 协议的高速u s b ,更好的 解决了带宽瓶颈,使u s b 适用范围大大扩展。 1 1 1u s b 系统结构 u s b 系统主要由主机( u s b h o s t ) ,u s b 集线器( u s b h u b ) 和u s b 设备( n o d e ) 组成的u s b 系统拓扑结构。在u s b 的网络协议中,每个u s b 系统有且只有一个主 机,它负责管理整个u s b 系统,包括u s b 设备的连接与删除、主机与u s b 设备的 通讯、总路线的控制等等。主机端有一个根集线器( r o o t h u b ) ,可提供一个或多 个u s b 下行端口。u s b 集线器是用于u s b 端口扩展的,即u s b 集线器可将一个u s b 端口扩展为多个端口n 引。 对于终端用户来说,u s b 系统就是u s b 设备到主机的简单连接,但对于u s b 开发人员来说,它是一个模块化、层次化的复杂结构。u s b 连接由高到低分为三 个逻辑层:u s b 功能层、u s b 设备层和u s b 总线接口层( 如图1 1 所示) 。且每一 层都由主机和u s b 设备的不同功能模块组成。 u s b 设备各模块的主要功能如下: 功能模块:u s b 设备的功能模块被主机的用户软件看作是一个接口 ( i n t e r f a c e ) 的集合。接口是由若干端点( e n d p o i n t ) 组成的。u s b 的每一个 接i :1 都必须有一个接口描述符( d e s c r i p t o r ) 。 基于$ 3 c 2 4 1 0 + u c 0 s i i 的u s b 接口设计与研究 高 低 手机 u s b 设备 儿l 户软: l 功能榄块 一霉 _ _参 u s b 系统软们二 - l u s b 逻辑坟备 一一 u s b 总线接口 - lu s b 像线援口l u s b 功境层 - u s b 凝 譬菇 o u s b 总线经f :_ 】磁 图1 1 u s b 逻辑设备:u s b 逻辑设备模块被主机的u s b 系统软件看成是一个端点的集 合。端点是u s b 设备中的实际物理单元,端点一般由u s b 接口芯片提供。由端点 组成接口,可见,u s b 逻辑设备模块和功能模块是紧密相连的哺1 。 u s b 总线接口:u s b 设备中的总线接口是指串行接口引擎( s i e ) 。s i e 集成了 可以独立于微控制器而自动处理u s b 总线活动的硬件,简化了微控制器和u s b 之问的接口。s i e 通常用于处理事务( t r a n s a c t i o n ) 数据的传输和接收工作, 有的芯片的s i e 实现了全部的u s b 底层协议。 1 1 2u s b 接口的端点和通道 端点是一个u s b 设备的一个唯一可寻址部分,用来作为主机和设备之间通信 流的信息源或接收器。所有的事务都始于或终于一个设备端点t 1 7 ) 。端点是一个 储存多个字节的缓冲器,通常它是数据内存的一块或是控制器芯片的一个寄存 器,存储于端点的数据可以是接收到的数据或是等待发送的数据。 在设备接入时,每一个逻辑设备都有一个由系统分配的唯一的地址,设备上 的任一端点也都有一个由设备在设计时而定的端点号和方向组成的端点单一地 址。利用设备的地址和端点地址可以唯一地指定任端点,每个事务都包含一个 设备地址和一个端点地址,u s b 系统软件通过端点描述符来了解端点的特性n 引。 控制端点是双向的,而其它端点只携带单向数据。 除了端点0 ,一个全速设备最多可以有3 0 个端点。一个低速设备被限制为 只能有2 个端点。端点0 请求和非端点0 请求有不同的分工:所有u s b 设备拥有 端点0 并通过它对一个逻辑设备进行初始化和配置,端点0 拥有对设备配制信息 的访问权,据此,访问一般的u s b 状态和控制操作:非端点0 请求用于具体的应 基于s 3 c 2 4 1 0 + u c 0 s j i 的u s b 接口设计与研究 用刖。 u s b 通道( p i p e l i n e ) 是设备上端点和主机上的软件之间的联系,体现了主 机上缓存和端点间传送数据的能力。u s b 有两个不同且互斥的通道通信格式,即 流和消息格式。流是指不具有u s b 定义的格式的数据流,消息是指具有某种u s b 定义的格式的数据流。如果通道上没有正在传送的数据,也没有数据想使用此通 道,这个通道就处于闲置状态。 l s b 通道是对主机和u s b 设备间通信流的抽象,它表示主机的数据缓冲区和 u s b 设备的端点之间存在着逻辑数据传输,而实际的数据传输是由u s b 总线接口 层来完成的。通道和u s b 设备中的端点一一对应。一个u s b 设备有多少个端点, 其和主机进行通信时就可以使用多少个通道,且端点的类型决定了通道中数据传 输类型。不论存在多少条通道,在各个通道中进行的数据传输都时相互独立的。 由o 号端点构成的通道称为缺省通道,它是双向的,既支持i n 传输也支持 o u t 传输。在u s b 设备连接、上电或者复位后,u s b 系统软件就可以使用该通道 和u s b 逻辑设备进行配置通信了。不论是对u s b 系统软件还是u s b 客户软件而言, 其他非0 端点所对应的通道都只在u s b 设备被正确配置后才可以使用啪1 。 1 1 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 设备n 引。这个数据传输过程共涉及四个软硬件实体:用户软件、u s b 总线驱动 程序、u s b 主控制器驱动程序和u s b 主控制器。 以向u s b 设备发送数据为例说明u s b 的数据传输的具体过程。首先用户软件 把待传输的数据放入数据缓冲区并向u s b 总线驱动程序发出标准请求包( i r p ) 。 然后u s b 总线驱动程序响应用户发出的i r p ,并将i r p 中的数据转化为若干个具 基于$ 3 c 2 4 1 0 + u c 0 s _ i i 的u s b 接口设计与研究 有u s b 格式的事务处理,然后将其向u s b 主控制器驱动程序传递。接下来是u s b 主控制器驱动程序负责为这些事务处理建立一系列以帧4 , 帧为单位的事务处理 列表,并保证其不会超过u s b 的带宽。这些事务处理列表被u s b 主控制器读取并 以信息包为单位发送到u s b 总线上。最后,u s b 设备接受这些信息包,s i e 自动 将其解包并将数据放入指定端点的接受缓冲区内,由u s b 固化程序对其进行处 理。 彳i 同的u s b 设备对数据的传输提出了不同的要求,根据这些要求,在u s b 通信过程中使用的数据传输方式有:控制传输、中断传输、块传输( 批量传输) 和 同步传输。 块传输没有传输速度的限制,用来进行大量数据的传输。块传输根据目前总 线的拥挤状态,以所有可使用的带宽为基准,不断地调整传输速率,并通过错误 检测和重试机制来保证主机和设备之间数据传输的正确性。块传输包括了令牌、 数据和握手三个阶段,当主机准备好接收块数据后,它会发送给功能设备l n 令 牌包,当功能设备的端点接收到i n 令牌包后,就会返回数据包、n a k 包或者s t a l l 握手包。如果主机接收到一个有效的数据包,那么它会返回给设备a c k 信号:如 果主机检测到数据有错误,那么不会返回给设备任何握手包。 1 2 前后台系统与| ic o s i i 系统概述 1 2 1 前后台系统 前后台系统是一种无任何操作系统的计算机系统,该系统程序分为前台和后 台两部分。前台程序通过响应中断来处理事件,其结构一般为死循环的程序;后 台程序则掌管整个嵌入式系统软、硬件资源的分配、管理以及任务的调度,是一 个系统管理调度程序。一般情况下,后台程序也叫任务级程序,前台程序也叫事 件处理级程序。在程序运行时,后台程序检查每个任务是否具备运行条件,通过 一定的调度算法来完成相应的操作。对于实时性要求特别严格的操作通常由中断 来完成,仅在中断服务程序中标记事件的发生,不再做任何工作就退出中断,经 过后台程序的调度,转由前台程序完成事件的处理,这样就不会造成在中断服务 程序中处理费时的事件而影响后续和其他中断。 基于$ 3 c 2 4 1 0 + u c 0 s j i 的u s b 接口设计与研究 实际上,前后台系统的实时性比预计的要差。这是因为前后台系统认为所有 的任务具有相同的优先级别,即是平等的,而且任务的执行又是通过f i f o 队列 排队,因而对那些实时性要求高的任务不可能立刻得到处理。另外,由于前台程 序是一个无限循环的结构,一旦在这个循环体中正在处理的任务崩溃,使得整个 任务队列中的其他任务得不到机会被处理,从而就会造成整个系统的崩溃。从程 序设计的角度来看,前后台系统也存在不足。因为所有的程序都存在于一个大的 循环体之中,当系统任务简单时,前后台系统设计显得简洁方便。而当系统要完 成一些较为复杂的功能时,或者在一个简单系统添加许多功能时,程序的复杂度 将随功能的需求而成指数级上升。任何一处微小的改动,都将对整体造成一定的 影响。这对程序的维护和扩展带来很大的困难。 引入操作系统后,上述问题能得到很好的缓和。在操作系统中,应用程序被 分为多个任务在系统中运行,由操作系统内核统一调度,通过合适的算法使得中 断响应时问可以完全确定,这样的系统称为实时系统。同时由应用程序被划分为 相对独立的多个任务,任务与任务之间通过操作系统提供的通讯机制进行通讯, 从而形成一个有机的整体。这样的格局有利于系统功能的扩展,同时系统的维护 也变得简单。但由于前后台系统结构简单,几乎不需要r a m r o m 的额外开销,因 而在简单的嵌入式应用中被广泛使用。 1 2 2 i lc o s - il 系统 传统的喷绘机很多工作都让主机来协调工作,所喷数据也是在主机上进行转 换。由于技术的不断发展,处理器的速度不断提高,很多工作都可以让下位机来 完成,这样下位机的任务不断增加。为了协调任务的管理和性能的稳定,在设计 时就需要嵌入式操作系统的统一管理。该系统选择了uc o s i i ,因为它是一个 微型的实时操作系统,包括了一个操作系统最基本的一些特性,如任务调度、任 务通信、内存管理、中断管理等。而且这是一个代码完全开放的实时操作系统, 简单明了的结构和严谨的代码风格,非常适合初涉嵌入式操作系统的人士学习, 它的应用广,自从9 2 年发布以来,己经广泛应用于全世界各个公司的成百上千种 产品中。目前己经被移植到4 0 多种不同结构的c u p 上,运行在从8 位到6 4 位的各种 系统之上。世界上许多学院和大学也都在实时系统的课程教汹。 基于s 3 c 2 4 1 0 + u c 0 s i i 的u s b 接口设计与研究 在uc o s - i i 中一个任务,也称作一个线程,是一个简单的程序,该程序可 以认为c p u 完全只属于该程序自己。实时应用程序的设计过程包括如何把问题分 割成多个任务。每个任务都是整个应用的一部分,都被赋予一定的优先级,有自 己的一套c p u 寄存器和堆栈空间旧。uc o s - i i 是完全可剥夺( p r e e m p t i v e ) 型的 实时内核,即uc o s i i 总是运行就绪条件下优先级最高的任务。不可剥夺( n o n p e r e m p t i v e ) 型内核当有中断发生时,中断服务程序( s i r ) 获得c u p 的控制权, 但如果s i r 使得一个任务优先级比被中断了的任务优先级高的任务进入了就绪 态,s i r 结束后,还是运行原来被中断了的任务,直到它自动放弃c u p ,所以重要 事件的响应时间是不可剥夺型内核最大的缺陷。而可剥夺型内核当有上述情况发 生时,s i r 结束时立即运行优先级高的任务。多数商业内核也是可剥夺型的,u c o s - ii 在性能上与它们类似。 任务之间或中断服务程序与任务之间的信息传递称之为任务间的通信。任务 间信息的传递有两个途径:通过全局变量,或发消息给另一个任务。用全局变量 时,必须要保证每个任务或中断服务程序独享该变量。中断服务程序中保证独享 的唯一办法是关中断。如果两个任务共享某变量,每个任务实现独享该变量的办 法可以是关中断,再开中断,或使用信号量3 。注意:任务只能通过全局变与中 断服务子程序通信,而任务并不知道什么时候全局变量被中断服务程序修改了除 非中断服务子程序以信号量方式向任务发送信号,或者是该任务以查询方式不断 周期性地查询变量的值。要避免这种情况,可以考虑使用邮箱或消息队列。 消息油箱通过内核服务可以给任务发送消息。典型的消息油箱 ( m e s s a g e m a li b o x ) 也称作消息交换( m e s s a g e e x c h a n g e ) ,是用一个指针型变量, 通过内核服务,一个任务或一个中断服务程序可以把一个消息( 即一个指针) 放到 油箱中去。同样,一个或多个任务可以通过内核服务接受这个消息。发送消息的 任务和接受消息的任务约定,该指针指向的内容就是那个消息( 2 6 1 。 基于$ 3 c 2 4 1 0 + u c 0 s i i 的u s b 接口设计与研究 1 3u s b 控制器与$ 3 c 2 4 1 0 内置的u s b 控制器 1 3 1u s b 控制器简介 u s b 协议是比较复杂的,这就要求u s b 控制芯片有很高的智能以隐藏其内部 的复杂性。呈现给使用者的应该是强大的功能和简单的使用,以便于用户开发。 u s b 控制芯片不仅需要能够检测并且对端口的事件作出准确的反应,还需要能够 存储需要发送的数据和接收到的数据2 4 1 。对原始数据进行编码和解码,以及错 误的检测都是靠硬件来完成的。在u s b 设备进行通信时不同的u s b 控制芯片所做 的工作是不完全相同的,有些控制芯片只需要固化程序来访问一系列的寄存器, 即可存储和读取u s b 数据。有的控制芯片这需要固化程序做更多的事情,包括管 理和传输描述符,对所发数据进行编码和对接收的数据进行解码等,这要看控制 芯片的智能化程度。所以在进行u s b 设备开发时要根据开发u s b 设备的功能要求, 选择一款合适的u s b 控制芯片。 从芯片大的构架上来看,u s b 控制芯片可以分为不需要外接微控制器的芯片 和需要外接微控制器的芯片( 比如p h i l i p s 公司的p d i u s b d l 2 等) 。而不需要外 接控制器的芯片又可以分为专门为u s b 设计的芯片( 比如c y p r e s s 公司的 c y 7 c 6 3 1 0 i a 等) 和嵌入通用微控制器内核的控制器( 如本文采用的u s b 控制器) 。 下面简单介绍u s b 控制芯片的一些基本构成。 1 3 1 1 串行接口引擎( s ie ) s i e 通常是用于处理事务数据的传输和接收工作,完成数据的编码和解码以 及其他的一些协议处理工作。s i e 集成了可以独立于微处理器而自动处理u s b 总 线活动的硬件,所以简化了微控制器和u s b 之间的接口。 s i e 模块的主要功能包括:翻译接收到的经过编码的数据以及格式化将要在 总线上传送的数据;c r c 检验和产生,当传送时发送错误,可以向微控制器传送 标志:地址检验;发送a c k 、n a k 、s t a l l 握手包;接收到的有效数据放入适当的 端点缓冲区等。固化程序只需要处理剩下的一些u s b 传输事务和其他的控制工 作,这样大大减轻了用户编写程序的工作量。 基于s 3 c 2 4 1 0 + u c o s i i 的u s b 接口设计与研究 1 3 1 2 数据缓冲区 所有的u s b 控制器芯片都应该提供数据接收和发送的缓冲区,用来提供微处 理器和外部逻辑之间的缓冲。有的芯片使用寄存器来作为缓冲区,有的使用存储 器来作为缓冲区。数据缓冲区通常使用f i f o 结构。 :f i - 些芯片为了得到更高的传输率,为其中的有些端点设计了双缓冲区,从而 增加了数据的吞吐量,满足实时数据的传输。也就是说当用户正在向第一个缓冲 区中写入或者从第一个缓冲区中读出数据时,第二个缓冲区仍然可以传输或者接 收数据。这两个缓冲区之间会自动切换,不需要用户进行管理。 1 3 1 3 寄存器 寄存器位于芯片数据存储区中,作为临时存放数据之用。但是,c p u 使用不 用于其他存储器的指令来访问寄存器。而且寄存器都是预先定义好功能,不需要 程序控制,所以存取速度比其他存储器快。 u s b 控制芯片提供的寄存器可以分为状态寄存器和控制寄存器。状态寄存器 用于保存芯片当前的状态,可以提供给用户查询。而控制寄存器则是用来产生控 制信号。 1 3 2 $ 3 c 2 4 1 0 内置的u s b 控制器简介 a r m 微处理器的开发及应用研究目前也是处于非常火热的阶段。世界上排名 前2 0 位的半导体公司几乎都采用了a r m 技术。在国内,2 0 0 1 年a r m 才进入中国 内地市场,当时a r m 技术对大多数人来说还是一个完全陌生的名词,目前a r m 技术在国内的研究也还是处于一个高速发展阶段。所以该系统采用a r m 系列的 $ 3 c 2 4 1 0 作为u s b 设备的微处理器,选用其内置的u s b 控制器。虽然$ 3 c 2 4 1 0 中 内置的是u s b l 1 全速的控制器,但对于一般的数据传输也能满足。如果要求需 要更高,则可采用更高端的a r m 内置的u s b 2 0 控制器,其u s b 接口的开发与该 系统的设计基本相似。 $ 3 c 2 4 1 0 内置的u s b 控制器是在通用的微控制器的基础上扩展了u s b 功能, 是由d m a 接口构成的高效全速功能控制器。该u s b 控制器允许用d m a 的块传输、 基于$ 3 c 2 4 1 0 + u c 0 s ii 的u s b 接口设计与研究 中断传送和控制传送模式。其特性为: 完全兼容u s bv e r l 1 。 全速( 1 2 m b p s ) 设备。 集成u s b 收发器。 支持控制、中断和块传输。 五个带f i f o 的端点:一个双向控制端点,带1 6 字节f i f o ( e p o ) ;四个双向 块b u lk 端点,带6 4 字节f if o ( e p l ,e p 2 ,e p 3 和e p 4 ) 。 支持用于块端点的接收和发送的d m a 接口。( e p l ,e p 2 ,e p 3 和e p 4 ) 。 独立的6 4 字节接收和发送f i f o 。 支持悬挂和远程唤醒功能。 主要的u s b 设备控制寄存器如下: 功能地址寄存器( f u n c a d d r r e g ) 陔寄存器存储由主机指定的u s b 设备控制器地址。m c u 从s e t a d d r e s s 描述 符接收的值写入本寄存器。这个地址在后续的令牌中使用。 中断寄存器( e p i n t r e g u s b i n t r e g ) u s b 控制器有两个中断寄存器。u s b 中断时这些寄存器保存m c u 的状态。每个 被设置的位通过写“1 “清除。一旦m c u 被中断,m c u 应该读中断相关的寄存器的 内容且如果必要时写回以清除其内容。 索引寄存器( i n d e x r e g ) 索引寄存器用于指定某个端点寄存器有效。m c u 可使用索引寄存器寻址特定 端点的端点寄存器( b i a x p r e g 、i n _ c s r i r e g 、i n _ c s r 2 _ r e g 、o u t _ c s r l 一r e g 、 o u t _ c s r 2 一r e g 、o u t _ f i f o _ c n t l 一r e g 和o u t f i f o _ c n t 2 _ r e g ) 。 端点0 控制状态寄存器( e p o _ c s r ) 该寄存器设有端点0 的控制和状态位。因为一个控制传输既包括i n 令牌也包 o u t 令牌,只有一个c s r 寄存器,映射至u i n _ c s r i 寄存器。( 共享i n l - c s r 且可通 过写索引寄存器”0 ”寻址读写i n l 一c s r ) 。 除此之外还有端点i n 控制状态寄存器( i n c s r i r e g i n c s r 2 一r e g ) ,端点 o u t 控制状态寄存器 ( o u t _ c s r i r e g o u t _ c s r 2 一r e g ) ,端点f i f o 寄存器 ( e p n f i f o r e g ) ,端点o u t 写计数寄存器o u t f i f oc n t l 一r e g ) 等控制寄存器。 基i - s 3 c 2 4 1 0 + u c 0 s i i 的u s b 接口设计与研究 1 4 论文选题的意义和主要工作 喷绘机所采用的接口技术可以间接反映出喷绘机输出速度的快慢。目前市场 上喷绘机产品所采用的主要技术包括常见的并行接口技术和u s b 接口技术。u b s 接口依靠其支持热插拔和输出速度快的特性,在喷绘机接口技术中迅速崛起,目 前市场主流喷绘机大多采用这种接口技术。处理器、u s b 控制器和嵌入式操作系 统的选择一定程度上会影响喷绘机的性能。比如m c u 采用工作在4 0 m h z 主频的 s s t 8 9 e 5 6 4 、u s b 接口芯片采用i s p l 5 8 1 的m c u + u s b 设计方案n 们,由于其处理器 的主频和存储器空间存在的问题,喷绘机的性能将会受到一定的限制。该系统设 计方案是选用主频为2 6 6 m h z 的$ 3 c 2 4 1 0 a 处理器和内置的u s b 控制器,并且使用 uc o s i i 作为操作系统,在很大程度上提高了喷绘机的性能。由于处理器速度 的提高,不少曾经在计算机主机上完成的任务( 如数据的转换) 可以交给喷绘机 设备来完成,这样就可以减轻u s b 总线的负担。并且该系统可应用到那些需要大 量数据传输的u s b 设备中。 该论文的主要工作是固化程序的设计与实现。完整的一个u s b 接口开发过程 还应该包括硬件电路设计、主机中的设备驱动程序和主机上的应用程序。试验的 硬件环境是采用e l a r m 一8 3 0 试验箱;驱动程序和应用程序目前已经比较成熟, 该系统使用的驱动程序和应用程序是在别人所做的工作基础之上进行设计的,使 其能辅助该固化程序设计和调试工作。该系统的设计和实现过程为:第一步对 u s b 设备环境正确的初始化,使在u s b 插入主机时u s b 设备能有中断的发生,这 是以后设计工作的基础。第二步是根据主机识别u s b 设备时所产生的一系列中断 来完成向应识别过程的程序设计。使计算机主机能安装驱动程序,在应用程序中 能找到u s b 设备的句柄。第三步在前后台系统完成控制传输和数据传输,确保 u s b 设备与主机之间能正常通信。第四步在前后台系统进行单通道、双通道、d i d a 三种传输方式的设计和分析。第五步载入pc o s - i i 操作系统,在该环境下进行 d m a 传输方式的设计,并进一步提出了双缓冲区的设计方案。最后为防止传输数 据堵塞而提出一种解决方案。 基于s 3 c 2 4 1 0 + u c o s i i 的u s b 接口设计与研究 二、固化程序设计 2 1 初始化 初始化部分是固化程序能畅通运行的基础,是u s b 系统能正常工作的基本工 作。主要包括u s b 设备控制器中的特殊寄存器初始化、中断初始化以及描述符的 初始化。 2 1 1 u s b 设备特殊寄存器初始化 2 1 1 1 时钟控制寄存器的设置 在$ 3 c 2 4 1 0 a 中u s b 设备接口需要4 8 m h z 的时钟。$ 3 c 2 4 1 0 a 有两个锁相环 ( p l l ) 。其中一个用于u s b 模块,给u s b 设备产生4 8 m h z 的时钟频率。u c l k 直 到配置p l l ( u p l l ) 后才提供。设置语句为( 其中r u p l l c o n 为u p l l 配置寄存器, 0 x 4 8 为m a i n 除数控制值,o x 3 为p r e - 除数控制值,o x 2 为p o s t 除数控制值) : r u p l l c o n - - o x 4 8 1 20 x 3 41o x 2 2 1 1 2u s b 相关的引脚控制寄存器的设置 在$ 3 c 2 4 1 0 a 中,大多数引脚是多功能引脚,所以需要定义每个引脚选定的 功能。端口控制寄存器( p n c 0 n ) 决定每个引脚的功能。在杂项( m i s c e l l a n e o u s ) 控制寄存器r m i s c c r 控制数据端口上拉电阻、高阻态、u s b 引脚和c l k o u t 选定, 该寄存器的设置使u s b 相关的引脚为u s b 设备,而不是主机。并且u s b 端口1 模式为正常模式。 r m i s c c r = r m i s c c r ( 1 3 ) : r m i s c c r = r m i s c c r ( 1 l3 ) : 2 1 1 3 对端点的配置 5 3 c 2 4 1 0 提供了五个带f i f o 的端点:一个双向控制端点,带1 6 字节 f i f o ( e p o ) 。四个双向块b u l k 端点,带6 4 字节f i f o ( e p l ,e p 2 ,e p 3 和e p 4 ) 。 一1 3 基于s 3 c 2 4 1 0 + u c 0 s ii 的u s b 接口设计与研究 由于改计只用到控制传输和块输入传输,并且块传输使用双通道( 见后文) 的方 式进行了输入传输,则将e p o 设置为控制端点,端点e p l 和e p 2 都设置为块传输 i n 端点。其主要设置代码为: r i n d e x _ r e g = o :r i n d e xr e g 为索引寄存器,其值为指定该端点有效 r a x p r e g = o x 0 1 :端点最大包为8 字节 r e p o c s r = o x 4 0o x 8 0 :端点0 控制状态寄存器 r l n d e x r e g = i : r i n _ c s r i r e g = o x 0 8o x 4 0 :r i n _ c s r i r e g 为端点i n 控制状态寄存器 r i n _ c s r 2 一r e g = i 51 4o 6 : r i n d e x r e g = 2 : r i n _ c s r l 一r e g = o x 8 0o x 4 0 ; r i nc s r 2r e g = o 5l 4o 6 : 2 1 2 中断初始化 2 1 2 1 无操作系统下的中断初始化 a r m 系统结构支持7 种处理器模式:用户模式、快中断模式、中断模式、管 理模式、终止模式、未定义模式和系统模式,执行特定指令可以切换处理器模式。 a r m 系统结构响应多种异常事件,本文采用的是i r q 中断异常的响应机制。系统 响应中断请求后,即进入中断模式,内核按下面的步骤工作:将下一条指令的地 址保存至0 中断模式的连接寄存器:复带t c p s r 到中断模式s p s r :设置c p s r 寄存 器模式位1 0 0 1 0 ,置i r q 禁止位:强$ 1 p c 从相应的中断向量地址取指令,进入 中断处理函数。这些工作是由a r m 内核完成的,不需要用户程序参与。中断处理 完成后,系统需要返回到发生中断的模式,继续执行被中断的程序,中断处理 函数要完成下面的工作:恢复状态寄存器c p s r :清除中断禁止标志:将l r 中的 值减去偏移量计算返回地址。这些工作必须由用户在中断处理函数中实现。异常 处理函数与普通函数不同,在处理异常事件前和处理后需要进行一系列与a r m i 内 核相关的操作,普通函数经过封装后才可以作为中断处理函数链接到异常向量 表中。标准的a r m 指令编译器提供了一个用来声明中断处理函数的关键字一i r q , 基于$ 3 c 2 4 1 0 + u c 0 s ii 的u s b 接口设计与研究 使用此关键字声明的函数可以被编译器识别为中断处理函数。在初始化中断时分 为无操作操作系统和带操作系统u c o s i i 两种情况来作不同的处理。 在无操作系统时中断发生后只要能保证能进入中断服务程序就可以了,也就 是将中断处理函数人口地址赋值给相应的中断向量表地址。 # d e f i n e i s r s t a r t a d d r e s s o x 3 3 f f f f 0 0 # d e f i n ep i s r u s b d ( 木( u n s i g n e d 木) ( 一i s rs t a r t a d d r e s s + o x 8 4 ) ) # d e f i n ep f s r d m a 2 ( 木( u n s i g n e d 木) ( 一i s rs t a r t a d d r e s s + o x 6 c ) ) # d ef i n ep l s r t i m e r l ( 术( u n s i g n e d 木) ( 一i s rs t a r t a d d r e s s + o x 4 c ) ) v o i di s r i n i t ( v o i d ) 初始化函数 ( 。 p i s r u s b d = ( u n s i g n e d ) i s r o s b d ;i s r o s b d 为u s b 中断处理函数 p l s r _ d m a i - - ( u n s i g n e d ) i s r d m a l :i s r d m a l 为d m a 控制通道处理函数 c l e a r p e n d i n g ( b i t d m a i ) :清除u s b 中断相应位 c le a r p e n d i n g ( b i t _ u s b d ) :) 清除d m a l 中断相应位 2 1 2 2 带uc o s - ii 操作系统下的中断初始化 uc o s - ii 操作系统是一种基于优先级的抢占式实时操作系统,当中断来临 时,系统把f 在执行的任务挂起,保护现场,进行中断处理:中断处理完成后, 检查是否有新任务进入就绪状态,比较所有处于就绪状态的任务的优先级,通 过任务切换去执行最高优先级的任务:如果没有新任务进入就绪状态,中断返 回后继续执行原任务。因此,退出中断处理函数时需要进行任务切换,而不是单 纯地恢复保存的c p u 现场。这样就要求将中断集中统一管理。将每个中断的人口 地址都设置为同一个地址,当中断产生后都跳到该地址,使用同一个程序来处理

温馨提示

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

评论

0/150

提交评论