




已阅读5页,还剩66页未读, 继续免费阅读
(计算机应用技术专业论文)嵌入式tcpip协议栈的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 本文以目前发展较快的一个分支精简指令集计算机( a r m ,a d v a n c e r i s cm a c h i n e s ) 作为介绍重点,对t c p 礤协议族在a r m 7 处理核嵌入式系统中 的应用与实现做了深入研究,并研究了适合选定硬件平台的t c p i p 双协议栈, 该双协议栈既支持i p v 4 也支持i p v 6 ,实现了基本的网络应用。 本文在阐述嵌入式系统基本概念和发展现状,指出嵌入式系统的主要发展 方向以及发展前景的基础上,采用了基于三星公司s 3 c 4 4 8 0 x 芯片的开发板, 并参阅配套开发文档,以及t c p i p 协议文档,同时以实时操作系统u c i o s i i 为 基础,研究了t c p i p 双协议栈的实现过程。文章主要分为三大部分: ( | 一) 阐述实时操作系统u c o s i i 及该系统在s 3 c 4 4 b o x 开发板的移植; ( 二) 分别介绍t c p i p 协议族的分层,分别介绍了基于l p v 4 和i p v 6 的各个具体协 议,主要介绍各个协议的功能,所属分层,以及报文格式等: ( - - - ) 介绍以太网控制芯片r t l s 0 1 9 a s 寄存器,基于t c p i p 协议族的i p v 4 i p v 6 双协议栈在开发板的具体实现过程以及主要函数的设计。这也正是本文的重点 和作者研究的主要成果和创新所在。 本文把t c p i p 双协议栈的实现过程层次化,提高了协议栈的移植性,把该 协议栈移植到其他的硬件上只需更改少量和底层硬件联系的文件,上层的程序 无需修改。各层次间的数据传递均依靠实时操作系统u c o s i i 的信号量和消息队 列。协议栈全部采用汇编语言和c 语言开发,编译成功后可写入开发板上的 f l a s h 中,利用b o o t l o a d 引导执行。t c p i p 双协议族在嵌入式系统的实现可 以大量应用到工业生产以及普通生活中,可使设备轻易增加网络接口,特别是 随着i p v 6 的推广应用以及现代生活的飞速发展,本文所阐述的实现就有着更为 重大的意义。例如可以推动家电接入i n t e m e t 的进程等。 关键字:嵌入式系统、a r m ,t c p i p 协议族、i p v 6 、实时操作系统 a b s t r a c t t h i sp a p e rp r e s e n t st h ea r m ( a d v a n c er i s c m a c h i n e s ) e m p h a t i c a l l yw h i c h d e v e l o p e dv e r yq u i c k l y , o f f e r i n gd e e pr e s e a r c h e so nt h ea p p l i c a t i o na n dr e a l i z a t i o no f h o wt c p h p p r o t o c o lf a m i l yi su s e di n a r m 7m i c r op r o c e s s o rc o r e t h i sp a p e rd e s c r i b e st h eb a s i cc o n c e p ta n dd e v e l o p m e n to f a m b e d d e ds y s t e ma t t h ep r e s e n tt i m e ,i d e n t i f i e st h em a j o rd e v e l o p m e n t a ld i r e c t i o na n d a p p l i c a t i o n f o r e g r o u n d b a s e do n s 3 c 4 4 b o xp l a t f o r ma n dt h et e c h n o l o g yd o c u m e n to fi t , i p r o g r a mt h ed r i v e ro fe t h e m e tc o n t r o lc h i p r t l 8 0 1 9 a sa n dt h et c p i pp r o t o c o l s t a c kb a s eo ni p v 4 i p v 6 t h ep a p e rc o u l db es e p a r a t e di n t ot h r e ep a r t s : o ) u c o s i ir e a l t i m eo p e r a t i o ns y s t e ma n dm i g r a t i n gi ns 3 c 4 4 b o xp l a t f o r m ( 2 ) i n t r o d u c t i o no ft c p f l pd u a l s t a c k 0 ) i n t r o d u c t i o no ft h er e g i s t e r sw h i c hb e l o n goe t h e m e tc o n t r o l c h i p r t l 8 0 1 9 a s , t h i ss e c t i o ni sa l s ot h ee m p h a s i so ft h ep a p e r , i tc o n t a i n st h em a i np r o g r a mf u n c t i o n , a n dt h et o t a lp r o c e s so fa c t u a l i z i n gt c p i pd u a l - s t a c ki n t op l a t f o r m e s p e c i a l l yi nt h i s p a p e r , im a k et h ei m p l e m e n t a t i o np r o c e d u r eo ft c p i pd u a l - s t a c kh i e r a r c h i c a l i n d o i n gt h i s ,ii m p r o v et h em i g r a t i o n n b i l i t y w h e nim i g r a t et h i sp r o t o c o ls t a c kt oo t h e r h a r d w a r e ,s e l d u m c h a n g e sn e e dt ob em a d ei ns o m ef i l e s ,w h i c hh a v ea f f i l i a t i o nw i t h t b e b o t t o mh a r d w a r e ,a n dt h et o p p e rp r o g r a m sd o n tn e e da n ym o d i f i c a t i o n s d a t a t r a n s f e r e n c eb e t w e e nd i f f e r e n tl a y e r sd e p e n d so nt h es e m a p h o r ea n dm e s s a g eq u e u e i nt h er t o su c o s i i id e v e l o pt h ep r o t o c o ls t a c ku s i n ga s s e m b l el a n g u a g ea n dc l a n g u a g e t h ep r o g r a mc a nb ew r i t t e nt ot h ef l a s ho fb r e a d b o a r d , w h i c hc a nb e b o o t e d b yb o o t l o a d e r t h ea c t u a l i z a t i o no ft c p i pd u a ls t a c ki nt h ee m b e d d e ds y s t e mc 蛆b e a p p l i e di n i n d u s t r yp r o d u c t i o na n do u rd a i l yl i f ep l e n t i f u l n e t w o r ki n t e r f a c e sc a nb ea d d e dt o a n ye q u i p m e n te a s i l y e s p e c i a l l y , w i t ht h es p r e a do fi p v 6a n dt h er a p i dd e v e l o p m e n t o fm o d e ml i f e ,t h er e s u l t so ft h i sp a p e rh a v em o r es i g n i f i c a n tm e a n i n g f o re x a m p l e , w e na c c e l e r a t et h ec o u r s eo fh o u s e h o l da p p l i a n c e sc o n n e c t i n gw i t hi n t e r n e t k e yw o r d s :e m b e d d e ds y s t e m ,a r m ( a d v a n c er i s cm a c h i n e s ) , t c p i pp r o t o c o l ; i p v 6 ,r t o s ( r e a lt i m eo p e r a t i n gs y s t e m ) 独创性声明 本人声明,所呈交的论文是本人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含为获得武汉理工大学或其它教育 机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示了谢意。 签名:丞庭日期:丝望兰! 关于论文使用授权的说明 本人完全了解武汉理工大学有关保留、使用学位论文的规定,即学校有权 保留、送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部 或部分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名:越导师签移络期:互选) 。 武汉理工大学硕士学位论文 第1 章绪论 1 1 嵌入式网络技术概述 1 1 1 基本概念 随着互联网应用的普及和信息共享的程度的提高,嵌入式设备如何与国际 互联网连接,也就是嵌入式网络技术已经成为一种趋势。 嵌入式网络技术主要是指怎样把嵌入式系统接入国际互联网,但是目前, 嵌入式系统还没有一个确切统一的定义。广义地说,任何内含中央处理器的专 用系统都可以称之为嵌入式系纠1 1 。嵌入式系统另一种较为通用定义是:以应用 为中心、以计算机技术为基础、软硬件可裁剪、适应于应用系统对功能、可靠 性、成本、体积、功耗严格要求的专用计算机系统【2 j o 嵌入式网络技术是指为了 使嵌入式系统实现接入互联网功能,把t c p i p 协议按照实际需求经过简化后, 作为一种嵌入式应用,从而,这种技术也可以简单地理解为一种采用嵌入式模 块而非p c 系统直接接入互联网的技术【3 】。 1 1 2 主要特点 嵌入式网络技术的主要具有以下几个方面的特点: 第一,为了提高程序执行速度和系统的可靠性,嵌入式网络技术的实现可 以是作为嵌入式代码在原有嵌入式系统的处理器中实现,也可以采用单独的处 理器来实现,并作为一个功能模块为原系统所使用【4 】。 第二,嵌入式网络技术的实现的实现面临一定的技术难题 s l 。在嵌入式网络 技术的实现过程中,网络协议通常由嵌入式系统专用的处理器来实现,这些处 理器中除了部分具有较强的功能外,大部分都是一些功能简单、价格低廉的设 备,例如大量存在嵌入式系统中的8 位单片机就是例子,它们的处理速度通常 只有几兆到几十兆,可用r o m 和r a m 都很有限,在这些系统中实现t c p i p 协议栈的难度比较大【6 】。 第三,应用嵌入式网络技术的系统应该具有高度的稳定性。嵌入式网络技 术的应用对象可能是普通的家用电器,也可能是重要的工业仪表或仪器,这些 武汉理工大学硕士学位论文 仪器仪表通常要求比普通的计算机系统具有一更高的稳定性。因此,嵌入其内 的网络技术即嵌入式网络技术也应该具备较高的稳定性川 第四,嵌入式系统身处工业与家用电器等应用领域,与具体的应用有机结 合,必须追求最高的性价比,因此,在保证使用的前提下,嵌入式网络技术的 成本应该有着严格的控制。嵌入式网络技术可能应用于一台昂贵的大型工业设 备,更有可能用于价格低廉的家用电器上t s l 。其应用的广泛程度直接取决于其实 现成本。因此,研究在较低成本下实现嵌入式网络技术将是嵌入式网络技术发 展的一个重要方面。 1 2 研究现状 1 2 1 几种主流的开源嵌入式t c p i p 协议栈 1 w m l w l p 是瑞士计算机科学院( s w e d i s hi n s t i t u t eo fc o m p u t e rs c i e n c e ) 的 a d a md u n k e l s 等开发的一套用于嵌入式系统的开放源代码i p v 4 协议栈。1 9 l l w 口 的含义是l i g h tw e i g h t ( 轻型) 】咿协议。1 w i p 可以移植到操作系统上,也可以在无 操作系统的情况下独立运行。1 w l pt c p f l p 实现的重点是在保持t c p 协议主要 功能的基础上减少对r a m 的占用,一般它只需要几十k 的r a m 和4 0 k 左右 的r o m 就可以运行,这使1 w l p 协议栈适合在低端嵌入式系统中使用。 u 口u l p 这个t c p i i p 协议栈是专门为嵌入式系统设计的。为了减少代码 尺寸和所需要的内存空间,u l p 精简了t c p 的实现机制,删除了应用和栈间的某 些接口机制,例如软件错误汇报机制和t c p 连接的动态配置服务类型位等。【1 川 1 2 2t c p i p 协议栈研究的方案和现状 随着嵌入式系统与网络的日益结合,在嵌入式实时操作系统中引入t c p i p 协议栈,以支持嵌入式设备接入网络,成为嵌入式领域重要的研究方向。目前 国内外已经有很多嵌入式t c p i p 协议栈的实现方案。以下列举有代表性的几种。 ( d o s i c o m 公司研发的n e t 十a r m 的系统级芯片( s o o 方案。它是在a r m 7 内核和以太网( e t h e m e t ) 上实现通信。它是在实时操作系统之上实现的t c p i p 协 议栈。1 1 1 i s o c 实现t c p i p 协议栈中的以下协议:t c p ( 传输控制协议1 、u d p ( 用 户数据报协议) 、r a r p ( 反向地址转换协议) 、i c m p ( 网际控制报文协议) ;应用的 2 武汉理工大学硕士学位论文 层的协议有h t t p ( 超文本传输协议) 、s m t p ( 简单邮件传输协议) 、f 1 甲( 文件传输 协议) 。 由m c u ( m i c r oc o n t r o l l e ru n i t 微控制器1 及内部固化t c p i p 协议的芯片 组成应用系统核心的方案。在这种方案中,单片机应用系统可以直接拨号上网, 硬件电路相对简单,也不需要其它中间环节的支持。但由于单片机使用了t c p i p 协议芯片,需要大容量的程序存储器,而且要求m c u 有较高的运行速度。应用 系统的设计工程师还必须熟悉t c p i p 协议和相关的接口,软件设计复杂,工作 量大。以这种方案实现的有s c e n i xs e m i c o n d u c t o r 公司的s x - s t a c k 和s e i k o 公司 的$ 7 6 0 0 a 芯片等。 e m i t ( e m b e d d e dm i c r oi n t e m e t w o r k i n gt e e l m o l o g y 嵌入式微型网络技术1 是美国e m w a r e 公司开发的嵌入式设备因特网的解决方案。e m i t 技术采用桌面 计算机或高性能的嵌入式处理器作为网关,称为e m g a t e w a y ,上面支持t c p i p 协议并运行h t i p 服务程序,形成一个用户可以通过网络浏览器进行远程访问 的服务器。e m g a t e w a y 通过r s 2 3 2 ,r s 4 8 5 ,c a n 、红外、射频等轻量级总线与多 个嵌入式设备联系起来,每个嵌入式设备的应用程序中包含一个独立的通信任 务、称为e m m i e r o ,监测嵌入式设备中预先定义的各个变量,并将结果反馈到 e m g a t e w a y 中;同时e m m i e r o 还可以解释e m g a t e w a y 的命令,修改设备中的变量, 或进行某种控制。增加到嵌入式系统中的e m m i e r o 代码长度一般在1 - 8 k b 左右, 不会影响m c u 的正常运作。e m i t 技术中的主要部分包括:锄微处理器,锄 网关和w e b 浏览器。该方案由于复杂的网络协议是通过e m 网关在p c 机上实现 的,应用系统m c u 只使用较简单的e m n e t 协议,因此对m c u 的要求较低。但 应用系统设计工程师必须熟悉e m n e t 协议和相关的接口,原来客户应用系统的 m c u 也不一定符合要求,并且软硬件设计的工作量仍然较大。同时,应用系统 的单片机处理e m n e t 协议要占用一定的系统资源。e m i t 技术经过多年的发展己 经在工业设备的网络化中得到了广泛的应用,但由于该技术的起步价位很高, 而且e m g a t e w a y 软网关的使用需要具有许可权,要支付相应的版税,因此它并 不适合用在要求低成本接入的网络系统中。 1 2 3i p v 6 在嵌入式系统上的研究 目前随着全球互联网用户的大量增加,i p v 4 地址不足的问题愈加突出,而 i p v 6 的出现使这个问题得到了缓解。目前有很多嵌入式操作系统支持i p v 6 协 3 武汉理工大学硕士学位论文 议栈,如v x w o r k s ,f i n u x 等。这些与操作系统紧密结合的协议栈不具有移植性, 用户不能根据自己的需要进行裁减。而前面提到的为嵌入式系统设计的协议栈 如1 w w , u l e 等虽然具有很好的移植性,但是都不支持w v 6 协议。因此。实现一个 支持v 6 协议,并且满足代码尺寸小,占用内存少;提供方便的用户接口;可 移植性强;可扩展性好的协议栈具有较重要的研究意义。 1 3 本文主要研究内容 本文研究的主要内容是,构建基于m 岫6 的嵌入式t c p l p 双协议栈的 体系结构及各层的实现。 实现网络协议是嵌入式系统网络功能的首要问题。嵌入式设备受硬件资源 的限制,一般只支持简单的通信协议( 如r s 2 3 2 4 8 5 等) ,这些简单的通信协议 不足以让这些嵌入式设备连入互联网,因此要让嵌入式设备连入互联网,就必 须让它支持t c p l p 协议栈。最终通过互联网来实现远程控制、远程数据采集等 应用。而随着互联网的发展,口v 6 协议的出现,嵌入式网络技术支持,、,6 协议 已经成为研究的重点。 一般嵌入式系统硬件资源无法容纳体系结构复杂的协议栈,而且标准的基 于i l i v 4 ,、,6 的t c p a p 协议栈都是面对p c 或者服务器的实现,具有复杂的功 能,而这些功能对于简单的,实现某种特定功能的嵌入式应用是不必要的,并 且给有限的系统资源带来较高的负担。因而,设计并实现支持v 4 和、,6 两种 协议的t c p 仃p 双协议栈时,必须遵照协议标准文件,即m t f ( i n t e m e te n 西n e e f i n g t a s kf o r c e 互联网工程任务组) 的r f c ( r e q u e s tf o rc o m m e n t s ) 文档,从以下两个 方面裁剪嵌入式系统, 功能性裁剪:裁剪掉对t c p i p 双协议栈功能实现关系不大,而又不影响系统 最终功能的协议实现。 性能性裁剪:由于嵌入式系统一般都是针对某个特定的系统而实现的,因此 根据应用目的要求可以对某些复杂的情况进行简化处理。 本文在对标准t c p i p 协议栈进行简化后,设计并实现支持w v 4 和、,6 两种 协议的t c p 仃p 双协议栈。 4 武汉理工大学硕士学位论文 1a 章节安排 全文共分五章,各章的内容安排如下: 第一章是对嵌入式网络技术的综述,并对嵌入式网络技术的特点,及其在 工业,信息家电方面的应用和论文的研究背景进行了介绍。 第二章主要介绍如何搭建实现基于i p v 4 i p v 6 的嵌入式双协议栈的软硬件平 台。 第三章分别介绍了l p v 4 和i p v 6 两种协议的分层及报文格式。 第四章介绍了实现双协议栈过程中如何对标准的t c p i p 协议进行裁减和优 化,并详细地介绍了为每层的实现而设计的主要相关函数。 第五章在总结整个论文研究的基础上,对以后的工作进行了展望。 5 武汉理工大学硕士学位论文 2 1 硬件平台 2 1 1 arm 核概述 第2 章平台搭建 首先介绍基于a r m 的3 2 位r i s c 处理器系列。a r b t ( a d v a n c er i s c m a c h i n e ) 公司,依靠转让设计许可的形式由合作伙伴来完成各具特色的芯片生 产。其3 2 位嵌入式r i s c ( r e d u c e di n s t r u c t i o ns e tc o m p u t e r ) 处理器内核系列以其 出色的低功耗、低成本、多系列、数据传输和处理速度快而成为各种数字移动 通讯终端以及网络产品的首选。现在设计、生产a r b l 芯片的国际大公司已经超 过5 0 多家,国内大的通信公司也已经购买a r m 公司的芯核用于通讯专用芯片 的设计。 a 2 1 a r m 产品都使用通用的基础体系结构,所有a r m 处理器共享这一体系 结构,并在基础体系上进行扩充同时所有的系列都是向下兼容的。当前a r m 主 要有4 个系列的体系结构:v 4 t ( 主要处理器有a r m 7 、a r m 9 系列) 、v 5 t e ( 主要处理器有a r m 9 e 、a r m i o 系列等) 、v 5 t e j ( 主要处理器有armio ej 系列) 、v 6 ( 主要处理器有a r m l l 系列) 。 2 1 2 基于s 3 c 4 4 b o x 微处理器的嵌入式系统 本文微处理器采用三星公司开发的一款微控制器s 3 c 4 4 b o x ,它是三星公 司专为手持设备和其它嵌入式应用提供的高性价比的微控制器解决方案,它既 具有低功耗,高性能的有点又具有非常丰富的片上资源。 它的c p u 核采用a r m 公司的1 6 3 2 位a r m t t d m ir i s c 结构( 主频 6 6 m h z ) 。a r m 7 t d m i 原意为,t :支持1 6 位压缩指令集t h u m b ;d :支持在 片调试,允许处理器响应调试请求暂停;m :增强型乘法器( m u l t i p p l i e r ) ,产生 全“位结果;i :嵌入式i c e 硬件提供片上断点和调试点支持,a r m 7 t d m i 是基于r i s c 指令体系,相对于c i s c 体系有较简单的译码机制。从而实现了较 高的指令流,优秀的实时中断响应能力和体积小,效率高,功耗低的处理器。【切 6 武汉理工大学硕士学位论文 a r m 7 t d m i 采用了3 级流水线技术以提高处理器的速度。它允许处理器同时进 行多个操作,实现取指和处理同步进行。 片上除内核外扩展了一系列完整的通用外围器件,片上集成的外围部件如 下:带8 k b 缓存的2 5 v 静态a r m t t d m ic u p 核;扩展内存控制器;外部存储 器控制器;带有1 个专用d m a 通道的l c d 控制器;4 个d m a 通道;2 个u a r t ; 1 个多主1 2 c 总线控制器;一个s b u s 控制器;以及5 通道p w m 定时器和1 个内部定时器;8 通道1 0 位a d c ;看门狗定时器;7 1 个通用f o 口,8 个外部中 断源;带p l l 的片上时钟发生器等,能够与常用的外围设备实现无缝连接。 1 4 1 s 3 c 4 4 8 0 x 上的存储系统地址空间分为8 个存储体( b a n k ) ,每个存储体可 达3 2 m b ,总共达2 5 6 m ,每个b a n k 的数据总线位数可设置( 8 1 6 3 2 位) ;7 个 存储体的初始位置确定,空间大小可设置;1 个存储体的初始位置和空间大小就 都( 可行) 设置。b a n k 0 分配给自举r o m ,b a n k 6 ,b a n k 7 通常分给s d r m s 3 c _ m b o x 接1 6 3 2 位存储器时地址线需要错位。 8 3 c 4 4 b o x 微处理器采用0 2 5 微米c m o s 工艺制造,特别适合对成本敏 感和功耗敏感的应用场合。它采用一种新的总线结构s a m b ai i ( s a m s u n g a r mc p ue m b e d d e dm i c r o c o n u o u e rb u sa r c h i t e c t u r e ) ,同时把a r m 7 的指令系 统与t h u m b 相结合,减少了存储器的容量,降低了系统成本。片上i c e 中断调 试支持j t a g 调试方式,使系统设计更容易。s 3 c 4 4 b o x 自带l c d 控制器,一 方面降低了增加硬件的成本,另一方面简化了系统结构,使系统更加稳定。【1 5 】 s 3 c 4 4 b o x 支持新的中断处理模式:向量中断模式( v e c t o r e a t i n t e r m p m o d e ) 。 在多个中断请求发生时,由硬件优先级逻辑判断应该由哪个中断得到服务,同 时硬件逻辑使中断向量表的跳转指针加载到o x l 8 ( 或0 x 1 c ) 位置,在该位置执行 跳转指令使程序跳到相应的中断服务线程。因此相对于传统的a r m 软件方法能 够大大减少中断进入延时。 它的低功耗、锁相环、高速缓存、l c d 控制器、向量中断模式等,所有这 些都给嵌入式软件开发带来了方便。 7 武汉理工大学硕士学位论文 2 2 嵌入式实时操作系统u c o s i i 及其移植 u c o s 是由美国人j e a nj l a b r o s s e 编写的一个公开源代码的,微内核嵌 入式实时操作系统,其实时性能和内核的健壮性早已经在大量的实际应用中得 到了证实。程序开发人员可以改写源代码,使之符合自己的要求。裁减掉不需 要的部分,使操作系统变得小巧、灵活,并且能满足用户特定操作系统的需要。 u c o s 对于学校研究完全免费,只有在应用于盈利项目时才需要支付少量的版权 费,特别适合一般使用者的学习、研究和开发。【1 6 】 u c o s i i 有如下特点: ( 1 ) 公开源代码,且源代码中有详细的注释,源代码清晰易读且结构协调、组 织有序,对实时操作系统的基本原理做了非常详细的解释,其实时内核让人一 目了然,简单易懂。 ( 2 ) 移植性好,绝大部分u c o si i 的源代码是用移植性很强的a n s ic 编写 的,与微处理器一件相关的那部分是用汇编语言写的,而且已经压缩到了最低 程度,使得u c o s i i 便于移植到其它处理器上。 ( 3 ) 可裁剪,用户可以根据自己的寄存器空间的大小和实际需要,只保留 u c o s i i 中应用程序需要的那些系统服务,这样可以大大减少产品中u o o s - 所需要的存储器空间僻a m 瓜0 m ) 。这样使得u c o s i i 适合中小系统,灵活应 用。 ( 4 ) 稳定性和可靠性高,抗干扰能力强。 ( 5 ) 实现嵌入式t c p i p 协议栈需要依赖底层操作系统提供的对多用户的支 持。 2 2 2u c o s - 的移植条件 移植是指使一个实时操作系统能够在某个微处理器平台上运行。绝大部分 的u c o s i i 源代码使用移植性很强的a n s ic 编写,因此它可以方便地移植到 不同的微处理器上。但是由于处理器相关的代码还是需要用c 语言和汇编语言 完成,因此移植是有些代码还是需要修改的。要使u c o s i i 正常运行,处理器 必须满足以下要求: 8 武汉理工大学硕士学位论文 ( 1 ) 处理器的c 编译器能产生可重入代码。 可重入代码是指某一段代码可以被多个任务同时调用,而不必担心会破坏 数据,换句话说,可重入型函数在任何时候都可以被中断执行,但过一段时间 后它又能继续运行。旧可重入代码不可能因为在函数中断的时候被其他的任务 重新调用而影响函数中的数据。 ( 2 ) 可重新打开或关闭中断。 在u c o s i i 中定义了两个宏( m a c r o ) :o se n t e rc r m c a r 0 或者 o xe x r i :c r 1 来关闭或者打开中顿。当不同c 编译器厂商选择不同的 方法来处理开,关中断时,不会造成影响。在a r m 7 t d m i 和的处理器上,通过 设置相应的寄存器可以打开和关闭系统所有的中断。 ( 3 ) 处理器支持中断,并且能产生定时中断( 通常在1 0 至1 0 0 h z 之间) 。 ( 4 ) 处理器支持能够容纳一定量数据( 可能是几千字节) 的硬件堆栈。 ( 5 ) 处理器有将堆栈指针和其它c p u 寄存器读出和存储到堆栈或内存中的指 令。 u c o s - i i 进行任务调度时,将当前任务的c p u 寄存器放到任务堆栈中,然 后再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。所 以寄存器的入栈和出栈是u c o s i i 多任务调度的基础。 2 2 3u c o s i i 在s 3 c 4 4 b o x 上的移植 本文选择的编译器是a r m 公司自己开发的c 语言编辑器a d s 。移植工作 包括以下几个内容 i 、编写o sc p u h 文件 ( 1 ) 用# d e f i n e 设置一个常量的值,三个宏 u c o s - i i 需要先禁止中断再访问代码的临界区,并且在访问完毕后重新允许 中断。这就使得u c o s - i i 能够保护临界区代码免受多任务或中断服务例程( i s r ) 的破坏。所以必须要定义宏o s _ e n t e rc r r r i c a l 0 乘 o s _ e x r rc r m c a i ) 。 具体定义及注释如下。 # d e f i n eo s _ s t k _ g r o w t h1定义堆栈的增长方向:1 = 向下,o = 向上 , # d e f i n eo s _ e n t e p _ c r i t i c a l ( ) p 禁止中断t # d e f i n eo s _ e x l t _ c r m c a l ( 1 p 允许中断+ 9 武汉理工大学硕士学位论文 # d d n eo st a s ks w ( ) 任务切换 ( 2 ) 定义数据类型 不同的微处理器有不同的字长,a c o s - n 的移植包括了一系列的类型定义以 确保其可移植性。如c 语言s h o r t ,i n t 和l o n g 等数据类型是与编译器相关的, 不可移植,在u c o s 中从不使用。以下是类型的定义以及注释。 t y p e d e fu n s i g n e dc h a rb o o l e a n : t y p e d e fu n s i g n e dc h a r i n t 8 u :a 无符号8 位整数木 t y p e d e fs i g n e d c h a ri n t 8 s : 有符号8 位整数木 t y p e d e fu n s i g n e ds h o r ti n t l 6 u :肛无符号1 6 位整数木 t y p e d e fs i g n e d s h o r ti n t l 6 s ; 木有符号1 6 位整数杉 t y p e d e fu n s i g n e di n ti n t 3 2 u :木无符号3 2 位整数 t y p e d e fs i g n e d i n ti n t 3 2 s : 牢有符号3 2 位整数 t y p e d e ff l o a t f p 3 2 : 术单精度浮点数术 t y p e d e fd o u b l ef p 6 4 :宰双精度浮点数木 t y p e d e fu n s i g n e di n to s _ _ s t k ;肛堆栈入口宽度为1 6 位衫 、编写o sc p uc c 文件 必须要编写的函数o s t a s k s t k i n i t 0 该函数的功能是初始化任务的堆栈结构,初始化后的堆栈看起来就如同刚 发生中断、并已将所有的寄存器保存到堆栈时的情形一样。本文移植的堆栈是 从上向下生长的( 由高地址向低地址) ,图2 1 显示了函数放到正在建立的堆栈 中的内容。 低地址内存 存储器寄存器值 中断返回地址 处理器状态字 任务起始地址 p d a t a 高地址内存 图2 1 函数放到堆栈中的内容 移植好的代码如下: o s s t k * o s t a s k s t k l n i t ( v o i d ( * t a s k ) ( v o i d * p d ) ,v o i d* p d a t a ,o ss t k * p t o s 。i n t l 6 uo p t ) 武汉理工大学硕士学位论文 0 s s t k * s t k ; o p t = o p t :书没有用,仅仅为避免编译器警告女 s t k = p t o s : 载入堆栈指针衫 胁初始化新建任务堆栈,堆栈是从上向下生长的 * s t k = ( 0 ss t k ) t a s k : a p c 木 _ 一一s t k = ( o s - s t k ) t a s k ; * l r * 宰s t k = o :* r 1 2 * _ c _ 一s t k = 0 :a r l l 木s t k = 0 :* r i o * 幸s t k = 0 :* r 9 * 和一s t k = 0 :* r 8 * 牛一一s t k = 0 :* r 7 * 掌一一s t k = 0 : i r 6 * 拳一一s t k = 0 : * r s * 宰_ 一s t k = 0 :* r 4 * - 一一s t k = o : * r 3 * 扣一s t k = 0 : * r 2 * ,- 一s t k = 0 : * r i * * - - s t k = ( u n s i g n e di n t ) p d a t a ; 母参数值r 0 衫 和一s t k = ( u s e r _ u s i n g _ m o d eo x 0 0 ) : * c p r s ,允许i r q ,f i q 中断衫 幸一s t k = 0 ; 卑关中断计数器o s e n t e r s u m * r e t u r n ( s t k ) : ) 由于本文没有特殊要求以下的5 个钩子函数,可以不加代码: * o s t a s k c r e a t e h o o k0 * o s t a s k d e l h o o k0 o o s t a s k s w h o o k 0 o o s t a s k s m t h o o k0 o o s m m e t i c k h o o k ( ) m 、编写o sc p ua 。a s m 文件 用汇编语言编写4 个与处理器相关的函数( o c p u a s m ) 移植工作中最关键的 地方就是这4 个汇编语言函数的编写。下面给出各个函数的原型和编写后的汇 编代码。 1 1o s s t a r t h i g h r d y o ;运行优先级最高的就绪任务 该函数由操作系统启动函数0 s s t a r t 0 调用来运行处于就绪态的优先级最高 1 1 武汉理工大学硕士学位论文 的任务。它的主要功能是首先找到处于就绪态的优先级最高的任务控制块 地址,从而获得新任务的堆栈地址,再把堆栈的内容压入到硬件堆栈,然后把 堆栈中的内容弹出到相应的寄存器即可。汇编语言具体实现如下: 0 s s t a r t h i g h r d y l d rr 4 ,a d d r :得到当前任务的tcb地址_ostcbcur l d rr 5 ,a d d r _ o s t c b h i g h r d y ;得到最高优先级任务t c b 地址 l d rr 5 , r 5 ) :获得堆栈指针 l d rs p , r 5 :转移到新的堆栈中 s t rr 5 , r 4 :设置新的当前任务t c b 地址 l d m f ds p ! , r 4 m s rs p s r ,r 4 l d m f ds p ! , r 4 ) :从栈顶获得新的状态 赆rc p s r ,r 4;c p s r 处于s v c 3 2 m o d e 模式 l d m f ds p ! , r o - r 1 2 ,l r ,p c :运行新的任务 劲o s c 恢s w o ;任务级的任务切换函数 这个函数完成任务级的任务切换功能,由任务调度函数o s s c h e d o 调用。与 上一个函数有点类似,但多了一个步骤就是要保存当前运行的任务的现场。该 函数原来定义功能的处理过程如下: v o i do s c t x s w o 保存p c ,1 r ,寄存器,返回地址和当前状态字c p s s p s r 到堆栈; 得到当前任务的t c b 地址并把堆栈指针保存到t c b ; 得到优先级最高的就绪任务的t c b 地址,从而得到新任务堆栈指针: 把任务保存的堆栈内容拷贝到硬件堆栈: 设置新的当前任务的t c b 地址: 保存任务方式寄存器( c p s r 和s p s r ) ; 弹出堆栈内容到相应寄存器,以此返回到新任务的上下文: 修改后汇编代码如下: s i l w d s p l , l r :保存p c 指针 s t m f d s p i , 1 r :保存l r 指针 s 1 帅 s p ! ,( r o - r 1 2 ;保存寄存器文件和r e t 地址 m r s r 4 c p s r 武汉理工大学硕士学位论文 s f 僻- o s p ! , r 4 ) l sr 4 。s p s r s t m f i ) s p ! , r 4 l d r r 4 ,a d d ro s p r i o c u r l d rr 5 ,a d d ro s p r i o h i g h r d y l d r br 6 , r 5 s t r b1 6 r 4 :得到当前任务的t c b 地址 l d r r 4 a d d r _ o s t c b c u r l d rr 6 , r 4 s t r s p r 5 :取得高优先级任务的t c b 地址 l d r r 6 a d d r _ o s t c b h i g h r d y l d rr 6 , 1 6 l d rs p , r 6 l s t rr 6 , r 4 ) :设置当前新任务的t c b 地址 l d m f d s p ! , 1 4 ) m s r s p s r _ c x s f ,r 4 l d m f i ) s p ! r 4 m s r c p s r _ c x s f ,r 4 l d 婚 d s p ! ,l r o _ r 1 2 ,l r ,p c 3 ) o s i n t c t x s wo ;中断级的任务切换函数 这个函数是在中断服务程序( i s r ) 中调用的,它与上一个函数o s c t x s w o 有两 点不同:第一,由于它在i s r 中被调用,所以,相关的寄存器已经保存到堆栈, 函数里不需要再保存现场,第二,o s i n t c t x s w o 被o s i n t e x i t 0 调用的,堆 栈中保存了4 个字节的o s i n t e x i t 0 返回地址,所以,要修改堆栈指针,减4 即 可。该函数原来的定义功能的处理过程如下: v o i d o s i n t c t x s w ( v o i d ) 修改堆栈指针,s p = s p - 4 ; 保存当前硬件堆栈到当前任务的t c b ; 获得处于就绪态的优先级最高的任务的t c b 地址,从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论