(计算机应用技术专业论文)嵌入式internet在arm上的实现方法和研究.pdf_第1页
(计算机应用技术专业论文)嵌入式internet在arm上的实现方法和研究.pdf_第2页
(计算机应用技术专业论文)嵌入式internet在arm上的实现方法和研究.pdf_第3页
(计算机应用技术专业论文)嵌入式internet在arm上的实现方法和研究.pdf_第4页
(计算机应用技术专业论文)嵌入式internet在arm上的实现方法和研究.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

(计算机应用技术专业论文)嵌入式internet在arm上的实现方法和研究.pdf.pdf 免费下载

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

文档简介

哈尔滨工程大学硕士学位论文 摘要 随着网络时代的发展,i n t e r n e t 己成为重要的基础信息设施,越来越多 的设备需要接入i n t e r n e t ,但目前嵌入式微处理器接入i n t e r n e t 的解决方 案却有很多种。论文详述了根据系统设备特点采用的1 6 3 2 位高性能单片机 加精简t c p i p 协议栈接入以太网的方案。论文中系统总体设计采用了大多 数嵌入式设备开发的体系结构,介绍了系统的硬件实现和软件框架,细述了硬 件设计时需注意的几个问题。软件设计中,为了增加系统的可靠性,使t c p i p 协议栈更好地运行,课题的程序设计引入了嵌入式实时操作系统uc o s i i 。文中详细介绍了嵌入式实时操作系统uc o s 一的任务调度机制和移 植其到a r m 7 系列单片机s 3 c 4 4 b o x 的过程及需要注意的问题,以及如何在嵌 入式操作系统uc 0 s i i 上嵌入t c p i p 协议栈,并对嵌入式t c p i p 协议 栈各层协议的实现、接口函数和数据包的流入流出机制作了详细的介绍。本 文的最后一部分,详细的分析了超文本传输协议h t t p ,给出了一种单片机系 统中实现嵌入式w e b 服务器的方法。 关键词:单片机;嵌入式系统;i n t e r n e t ;uc 0 s - - i i ;t c p i p 协议栈 嵌入式w e b 服务器 哈尔滨工程火学硕士学位论文 a b s tr a c t w i t ht h ed e v e l o p m e n to fn e t w o r ke r a ,i n t e r n e th a sb e c o m et h em o s t i m p o r t a n tf o u n d a t i o n a li n f o r m a t i o ne s t a b l i s h m e n t ,s om o r ea n dm o r e d e v i c e sn e e dt ob ec o n n e c t e di ni n t e r n e t ,b u tt h es o l u t i o n sf o rs u c h d e v i c e sa se m b e d d e dm i c r o p r o c e s s o r v a r ya1 0 t t h es o l u t i o nf o r c o n n e c t i n gt h e1 6 3 2b i tm i c r o c o n t r o l l e ra n dt i d yt c p i pp r o t o c o l s t a c ki ne t h e r n e t ,w h i c ha r es e l e c t e da c c o r d i n gt ot h es p e c i f i c a t i o n o ft h ed e v i c e ,i sd e s c r i b e di nd e t a i li nt h i st h e s i s w ed e s i g n e dt h e f r a m e w o r kw h i c hc o u l db eu s e df o rm o s te m b e d d e dd e v i c e sa n di n t r o d u c e d t h eh a r d w a r ea n ds o f t w a r eo ft h es y s t e m p r o b l e m sw h i c hs h o u l db ep a i d s p e c i a la t t e n t i o nt ow h e nd e m g n i n gt h eh a r d w a r ei sa l s ow r i t t e nu p i no r d e rt oi n c r e a s er e l i a b 儿i t vo ft h es y s t e ma n de n s u r et h ew e l l r u n n i n go ft c p i ps t a c k ,l ic o s i ii si n t r o d u c e dd u r i n gs o f t w a r e d e s i g n i n g i nt h i sp a p e r ,w ed e s c r i b et h et a s ks c h e d u l e rm e c h a n i s mo f t h er e a l t i m eo p e r a t i n gs y s t e muc o s i ia n dd i s c u s st h ep r o b l e m s w h i c hw ec a nm e e ti nt r a n s p o r t i n go st os 3 c 4 4 b o x ,h o wt oe m b e dt h et c p i p p r o t o c o ls t a c ki n i tc o s i i i nd e t a i l i ns u c c e s s i o n ,t h er e a l i z a t i o n o fa 1 1l a y e r so ft c p i pp r o t o c o ls t a c k ,i n t e r f a c ef u n c t i o n s , f l o w i n & f l o w o u tm e c b a n i s mo fd a t ap a c ka r ed e s c r i b e dp a r t i c u l a r l y a t t h ee n do ft h ep a p e r ,h y p e r t e x tt r a n s f e rp r o t o c o lh t t pisd e s c r i b e d i nd e t a i l ,a n dam e t h o dt or e a l i z ee m b e d d e dw e bs e r v e ri ns c ms y s t e m i sg i y e n k e yw o r d s :s c m ;e m b e d d e ds y s t e m ;i n t e r n e t ;uc o s i i :t c p i p ;e m b e d d e d w e bs e r v e r 哈尔滨工程大学 学位论文原创性声明 本人郑重声明:本论文的所有工作,是在导师的指导 下,由作者本人独立完成的。有关观点、方法、数据和文 献的引用已在文中指出,并与参考文献相对应。除文中已 注明引用的内容外,本论文不包含任何其他个人或集体已 经公开发表的作品成果。对本文的研究做出重要贡献的个 人和集体,均已在文中以明确方式标明。本人完全意识到 本声明的法律结果由本人承担。 作者( 签字) : 日期:匆占年,月多e t 哈尔滨工程大学硕士学位论文 第1 意绪论 1 1 嵌入式i n t e r n e t 技术 当今挂会逐澎步入嘲络对代,i n t e r n e t 已成为重要的基础信息设施。这 方丽的技术进步对于社会各个方面产生了积极影响,很多领域都在不断探索、 开发帮剩震网络爨潜力。虽藏,大部分露终终蠛仍以p e 极豹形式出现,健是 从计算机应用普及情况看,嵌入式系统是个不可忽视的方面。单片机或微 控箭器m c u ( m i c f oc o n t r o l l e ru n i t ) 及萁软件,统称嵌入式系统,已经在家 庭魏工业的各个领域褥到了应用“1 。弱翦大多数嵌入式系统还处于单独应用 的阶段,以m c u 为核心,与些监测、伺服、指示设备配合实现一定的功能。 在一些工谴秘汽车痉蠲中,为了实现多个m c u 之阉麴售惑交浚,剥翅c a n 、 r s 2 3 2 、r s 4 8 5 等总线将m c u 组网,但这种网络的有效半径比较有限,有关的 通信协议也眈较少,并且一般是孤立于i n t e r n e t 颤矫的。i n t e r n ec 现汪成 为社会黧要的基破信息设旌之一,是信息流通的重要渠道。如果嵌入式系统 能够连接到i n t e r n e t 上面,则可以方便、低廉地将信息传送到几乎世界上的 任俺一个逮方”。穗嵌入式系统与i n t e r n e t 终合莛来熬想法其实缀旱以前 就有了,主要的困难在于,i n t e r n e t 上面的各种通信协议对于计算机存储器、 运辩速度等的要求比较高,黹嵌入式系统中除部分3 2 位簸毽嚣良外,太蓬存 在的是8 位翻1 6 馒m c u ,支持t c p i p 等i n t e r n e t 协议垮占用大攫系统资 源,或根本不可能。但是随着8 位和1 6 位m c u 速度增快,存储器容量增大, 茏葵是3 2 位m c u 翡出现。搜嵌入式系统积i n t e r n e t 嚣结合减为可戆。支墅2 0 年来,p c 机c p u 的产量仅是m c u 的1 ,并且由于m c u 的成本低廉,在工业测 控系统、智能仪器、安防系统、智能家电帮信惑家电等领域,m c u 应爝系统 已缝无处不在。衣这些场合中,以m c u 为核心的设备同样也嚣要解决接入 i n t e r n e t 的问题。我们将嵌入式设备与i n t e r n e t 的缩合称为嵌入式i n t e r n e t 技术e i t ( e m b e d e di n t e r n e tt e c h n 0 1 0 9 y ) ”1 。 支持互联网得以正常运行的t c p i p 协议是一个庞大而复杂的协议族, 它对于计算丰凡存储器、运算速度等都有耽较高的要求,因诧实现嵌入式设备 上阚存在比较多的阉题。针对嵌入式i n t e r n e t 蜘问题,目前的勰决方案可分 为如下几类:”1 1 灞专用蕊片来完或攀片橇与瓣关瓣静秘议转换 在电子设备中内置一块专用的网络接阴芯片,将其作为智能装置成为连 接到i n t e r n e t 上的“桥梁”。芯片独立予各种徽控稍器m c u ,逶遥标准豹输 入、竣燃日,与微控暴嚣摆连。这样,微控专4 器可以通过芯片接收并执行经 豫乐滨工黢大学矮士学位论文 由i n t e r n e t 远程传兼的命令,或将一些数据交给芯片发送如去,实现电子设 各的智能化。武汉力源公司开发的w e b c h i p 网络接口j 墨片p s 一2 0 0 0 为此方案 的典型应用。m c u 应用系统通过w e h c h i p 网络芯片与g a t e w a y 连接,再进入 i n t e r n e t 鼹。w e b c h i p 痰帮霆伲了m c u n e t 秘议,莠与e m g a t e w a y 积o s g i 谤 议兼容。应用设计时不必考虑任何网络协议,只需要解释并执行w e b c h i p 传 送过来的指令和数据就可以实现与i n t e r n e t 网络连接,原理如图1 1 所示。 图l 。iw e b c h i p 聪终芯片连接i n t e r n e t 原理 2 嗣代理渗议来完成单冀毒晁与瓣关阉的协议转换 利用网关在网络中桥接代理协议栈和t c p i p 协议栈。如一个通过互联 网控制的仪表,它和控制它的服务器之间只需要交换很少量的几个字节的数 据,不需爱功能完整的t c p i p 协议去管理。网关担当翻译转换的业务,将 代理秘议夔供载数据转换藏t c p i p 震要懿数撵,或将t c p i p 发送夔数攥 转换后掇供给代理协议。此方案的典型代表为e m w a r e 公司开发的e m i t 技术 ( e m b e d d e dm i c r oi n t e r n e t w o r k i n gt e c h n o l o g y ) ,其原理如图1 2 所示。 霆l 。2e m i t 技末实瑗藏壤 e m w a r e 网络协议在单片税应t 鳟j 系统中使爝,遴过e m g a t e 与i n t e r n e t 栩 连。网络协议通过e m g a t e w a y 在p c 机上实现,单片机应用系统只使用较简单 的e m n e t 协议,对m c u 要求比价低。e m i t 技术主瑟有三个部分; 哈尔滨j 二程大学硕士学位论文 ( 1 ) e m m i c r o 是目前唯一适合小型电子设备的微型网络服务器。e m m i c r o 驻留在嵌入式设备中,是e m g a t e w a y 和嵌入式设备系统软件之间的通信服务 模块。它占用的字节可以小到1 k b ,和e m g a t e w a y 一起,为8 位1 6 位嵌入式 设备提供网络服务器功能。 ( 2 ) e m g a t e w a y 是e m i t 分布式网络平台的关键,是轻量级设备网络( 如 r s 2 3 2 、r s 4 8 5 、c a n 、r f 等) 和i n t e r n e t 之间的桥梁。e m g a t e w a y 提供网络服 务功能,并可以与多种用户界面相连接。 ( 3 ) 网络浏览器使用e m o b j e e t s ( 预先建立j a v a 对象,能够实现从标 准网络浏览器中访问和控制嵌入式设备) 进行显示和与嵌入式设备之间的数 据传输。 3 直接在电子设备上实现t c p i p 此方案的实质是m c u 内部固化t c p i p 协议栈芯片组成应用系统的核心。 t c p i p 协议栈是通过虚拟外设( 即软件模块实现硬件功能) 来实现的。它的 原理如图1 3 所示。此方案中,单片机应用系统可以直接上网,硬件电路相 对简单,不需要其他环节的支持。此方案实现的典型代表有s c e n i x s 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 芯片等。应用此方案 开发系统软件难度小,开发周期短,但硬件成本比较高。 图1 3m c u 应用系统接入i n t e r n e t 4 采用支持i n t e r n e t 的嵌入式操作系统 嵌入式操作系统是指运行在嵌入式平台上,内核小具有高度的模块化和 扩展性;具备文件和目录管理、设备支持、多任务、图形窗口以及用户界面 等功能;具有大量的应用程序接口( a p i ) ,能够适应系统对功能、可靠性、 成本、体积和功耗严格要求的系统软件。由于i n t e r n e t 技术的发展,嵌入式 操作系统己逐渐向网络化的方向发展。目前市场上已有许多这样的嵌入式操 作系统如i ic l i n u x 、r t l i n u x 、v x w o r k s 、n u c l e u sp l u s 以及v r t x s a 等等”1 。 它们通过内核自身或是附加的网络组件提供对t c p i p 协议的支持。基于这 些操作系统的嵌入式设备,由于操作系统自身的要求大都采用高档的3 2 位处 理器如x 8 6 、p p c 、a r m 、c o l d f i r e 等,同时拥有较大容量的r o m 和r a m ,因 嗡尔滨1 程大学硕士学位论文 羹乏竣各笈实璇多静复杂懿豳络凌麓。毽这秘方案存褒翔下获熹:惩挡熬3 2 位处理器价格较贵,开发周期较长;需嚣购买昂贵的嵌入式操作系统、网络 组件以及配套的开发软件,对开发人员的开发能力、经验要求较商。 5 8 位或1 6 位高性能微处理器十精简t c p i p 协议栈 | 三l 往由予8 位强位攀片规在处理熬力、r o m 翻r 躺空超上豹袋到,蘑强 不麓实瑷t c p i p 协议棱这样复杂鲍功馥。僵是近年浓随着市场对魑微型嵌 入式应用技术需求的不断增长,以及半导体技术和系统设计方法的进步,具 有高速处理能力的智能化嵌入式芯片的快速发展,使得单片机系统支持t c p i p 协议成为可能。一般说来t c p i p 协议栈都比较庞大,在嵌入式系统中 缀滚支耩宠熬瓣t c p i p 给议筏,要摄撵嵌a 式霹终产瑟夔跨点,跨麓t c p i p 协议,灾现与需要相关的部分,这样就可阻大幅度减少对于系统资源的 需求,从而可以在低成本、小内存的系统中实现i n t e r n e t 连接的功能”1 。 在实际应用中,嵌入式设备的网络化,根据自身不同的特点和需要将会 袋蠲不曩夔接入方案。本论文课题采薅了第五零孛方褰寒实褒设备翁瓣终纯, 硬用a r m 7 系绞m c u ,成本低、技术成熟,软硬彳牛开发蠲期都报短,并虽设计 方案灵活多变,可适用于不同的对象。 虽然现在的8 位1 6 位m c u 有了足够的存储空间和比较高的运行速度,但 m c u 要在完成艨有控制系统功能的前提下,同时实现t c p i p 网络通信,又 蹩发送又是接 | 芟,这稃在系统软箨懿编麓中使磊簧统浆蔻嚣壹稳窿开发蕊裁 魑非常困难的,所以本课鼷采用了嵌入式实时操作系统( r t o s ) 柬开发多任务 程序,使t c p i p 协议更好的在其上逡行。 。2 嵌入式实时操传系统( r t o s ) 1 2 1 关予嵌入式实时操作系统 实时操作系统,简称雕o s ( r e a lt i m eo p e r a t i n gs y s t e m ) ,建指能在 确定的时间内执行其功能并对外部的异步事件做出响应的计算机系统。实时 操作系统对响应的时间有严格的要求,其操作的正确性不仅依赖于逻辑设计 熬正确程度,嚣且跟这些绦佟进雩亍的对闼有关。大多熬实时操佟鬃统是嵌入 式系统。在这静系统中,计算穰被肉装予专蔫设备袋系绕中,它瓣爱应速度 快,自动化程度高。嵌入式实时操作系统向开发人员提供一个实时多任务内 核,开发人员将应用分解成若干个独立的任务,将各任务要做的搿、任务间 的关系向实时多任务内核交代清楚,让嶷对多任务内核去管理这然任务,开 发过程帮完戏。嵌入式实瓣操箨系统瓣耱华是实对多任务蠹竣,它努滋一颡 行星,诸任务就像围绕行凝旋转的许多卫星,在内核的管理下,有条不紊遣 落转着。任意时刻,处于邋行状态地任务只有一个,萁他任务则处于另外的 4 哈尔演工程大学硕士学位论文 i i i 状态,如睡h 民、等待、就绪等。 1 。2 2 爨h 寸操 乍系统与遴耀操作系统的一些 匕较 我们在隧常工作学习环境中接触最多的是通羽操作系统,通瘸澡作系统 是由分时操作系统发展而来,大部分都支持多用户和多进程,负责篱理众多 的进程并为它们分配系统资源。分时操作系统的撼本设计原则是:尽髓缩短 系统的平均响应时间并提高系统的吞吐率,在单位时间内为尽可能多的用户 请求提供服务。分时操作系统注重平均表现性能,不注重个体表现性熊。对 予整个系绞来说,注重掰有任务熬平均嚷应鑫麓琵不关心蕈个任务熬嚼应时 闯,对予浆令擎令任务来说,注蓬每次执行兹平均确应时闻嚣不关心萦次特 定执行的响应时间。 对于实时操作系统而言除了要满足应用的功能需求以外,更重要的是还 要满足应用提出的实时性要求,而组成一个应用的众多实时任务对于爽时性 的要求是备不相同的。实时操作系统所遵循的最熬器的设计原则是始终保证 系统行为的可预测性( p r e d i c t a b i l i t y ) 。可预测馈跫指在系统运彳亍的任褥时 妻l ,在任德爆 兄下,实霹操穆系绫的资源诿酝蓑貉酃缝为争夺资潦( 惫撬c p u 、 内存、鼹络带宽等) 的多个实辩经务合理主氇分配资源,使每个实时任务静实时 性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不怒系统 的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性骚求, 也就是说,实时操作系统注爨的是个体表现,更凇确地讲是个体最坏情况表 现。 1 2 3 骰入式应用审使用r t o s 蘸毖要憔 提倡在嵌入式应用中使用r t o s 最主要的原因是它可以提高系统的可靠 性。在控制系统中“不死机”烂最起码的要求。系统设计时硬件上要尽量提 高抗干扰能力,满足电磁兼容性要求,这只是提辩可靠性一方面,另一方面 就是在软俘上聚取掊捷“。 铸统瓣程净开发采爱蘩惹螽式结穆缡麓线装懿旋掰程痔。整个寂鲻程t | 事 是一个无隈循环,循环中调用榴应的函数完成相应盼操作,这部分可以看成 后台行为。中断服务程序处理髀步事件,这部分可以看成前台行为。脂台可 以叫做任努级,前台也叫中断缴。这种系统的最坏情况下任务级响应时间取 决于整个循环的执行时间。它在遇到强干扰时,程序在任何一处产生死循环 或破坏都会引起死机,这对只熊依靠硬件看门狗复位,重新唐动系统。面对 于r t o s 镑瑷瓣系统,这势予羧可1 只是辱| 起若予逡稷中懿一个破坏,冒毅爱 勇舞静遴弦瓣其进葺亍修复。不仪霹良将应焉翟彦分解威若干独立豹遴程,舔 哈尔滨工程大学硕士学位论文 且可以另外启动一个监控进程,监视各进程运行状况。提倡使用r t o s 的第二 个原因是提高开发效率,缩短开发周期。一个复杂的应用程序,可以分解成 多个任务。每个任务模块的调试、修改几乎不影响其他模块。 1 3 课题的提出、意义 随着电子设备智能化要求的提高和各种功能强大的微处理器的推出,单 片机系统逐渐成为许多电子设备不可缺少的一部分,并处在前所未有的发展 期;而互联网概念的深入人心更为单片机系统与互联网的结合提出了要求。 本研究课题正是在这样的大背景下提出来的,要实现的嵌入式i n t e r n e t 方案 是针对采用a r m 处理器的单片机系统,这些系统广泛应用在工业控制、通信 设备、家用电器等领域中。这些为数众多的设备接入i n t e r n e t 后,将可实现 设备的远程控制、管理和升级等功能,改变以往单独、孤立的存在方式,进 入一种开放、互连的方式。可以说单片机系统连接i n t e r n e t 不仅可产生经济 效益,对社会效益也有深远的意义。 a r m 是目前嵌入式领域应用最广泛的r i s c 微处理器结构,以其低成本、 低功耗、高性能等优点占据了嵌入式系统应用领域的领先地位。本人计划依 托嵌入式实验室的a r m 7 试验仪,移植“c o s i i 操作系统,并在其上构建 嵌入式i n t e r n e t 系统。它包括r 8 2 3 2 、以太网等多种接口,实现内部低速接 口和以太网之间的数据转发功能,可以为多种嵌入式设备提供网络服务。 总的来说,本课题的研究工作包括以下几个内容: 1 uc o s i i 嵌入式实时操作系统在a r m 7 处理器s 3 c 4 4 b o x 上的移植; 2 i o m 以太网卡( r t l s 0 1 9 a s 控制器) 驱动程序编写; 3 嵌入式t c p i p 协议栈的设计与实现,具体包括以太网协议、a r p 协 议、i p 协议、u d p 协议以及t c p 协议; 4 e m b e d d e dw e bs e r v e r 的设计与实现。 1 4 本章小结 本章介绍了嵌入式i n t e r n e t 技术的基本现状、发展趋势和实现方法,深 入分析了嵌入式实时操作系统r t o s 的特性及其对于实现嵌入式i n t e r n e t 的 必要性,最后选择了一种适合自己的实现嵌入式i n t e r n e t 系统的方法,由此 引出了本课题并且阐述了本课题研究的现实意义。 哈尔滨工程大学硕士学位论文 第2 章嵌入式实时操作系统l ac 0 s i i 2 1 uc 0 s i i 简介 l ac o s i i 是美国人j e a nl a b r o s s e 写的一个嵌入式实时内核。它是一 种专门为嵌入式应用设计的抢占式实时多任务操作系统,可以将其嵌入到产 品中作为产品的一部分。它的主体用标准的a n s ic 语言写成,可移植性极好, 己被成功地移植到四十多种c p u 上,包括8 位、1 6 位、3 2 位及6 4 位单片机 和若干种d s p ,它的稳定性和可靠性很高。目前的实时操作系统很多,如 v x w o r k s 、w i n d o wc e 、p s o s 、q n x 、l y n x o s 等,这些操作系统也都具有很高 可靠性和实时性,但它们都是商业操作系统,价格昂贵,人们往往很难接受。 t ic o s i i 是源码公开的实时操作系统,是一个自由操作系统。程序开发人 员可蛆改写源代码,使之符合自己的要求,裁减掉不需要的部分,使操作系 统变得小巧、灵活,并且能满足用户特定操作系统的需要。l ac o s i i 内核 主要提供进程管理、时间管理、内存管理等服务。系统可以管理6 4 个任务, 每个任务均有一个独有的优先级。由于其内核为抢先式,所以总是处于运行 态最高优先级的任务占用c p u 。系统提供了丰富的a p i 函数,实现进程之间 的通信以及进程状态的转化。 uc o s i i 可以大致分成核心部分、任务处理、时间处理、任务同步与 通信、c p u 的移植等5 部分。它的体系结构如图2 1 所示。 核心部分( o sc o r e c ) :是操作系统的处理核心,包括操作系统的初始化、 操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等部分。 能够维持系统基本工作的程序都在此部分。 任务处理部分( o st a s k c ) :任务处理部分中的内容都是与任务的操作密 切相关的。包括任务的建立、删除、挂起、恢复等。 时钟部分( o st i m e c ) :完成任务延时等的操作。uc 0 s i i 中的最小 时钟单位是时钟节拍( t i m e t i c k ) 。 任务同步和通信部分:为事件处理部分,包括信号量、邮箱、邮箱队列、 事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。 c p u 的移植部分:由于1 1c o s i i 是一个通用性的操作系统,所以对于 关键问题上的实现,需要根据c p u 的具体内容和要求作相应的移植。 哈尔滨工程大学硕士学位论文 uc o s 一 ( 与处理器无关的代码) o sc o r e c u c o si i c o sm b o x cu c o si i h o sm e m c0 sq c 0 ss e m c o st a s k c o st i m e c 软件 一一一一一一一一砸1 平一一一一一一一一 图2 1uc o s i i 的软硬件体系结构 2 2hc 0 s i i 的使用 uc o s - i i 程序的执行与传统的顺序式编程一样,都由m a i n 0 函数开 始。与传统编程不同的是uc o s - - i i 的m a i n 0 函数只做三件事情: ( 1 ) uc o s i i 初始化和系统变量的初始化; ( 2 ) 用o s t a s k c r e a t e o 函数新建任务,确定任务的传递参数和堆栈的指 针,以及任务的优先级; ( 3 ) o s s t a r t0 启动多任务的运行,进入实时内核的多任务调度环境。 传统编程中要用一个大循环运行的应用程序,使用uc o s - i i 我们把它 分成多个任务完成。如图2 2 示“”。 8 哈尔滨工程大学硕士学位论文 , i m a i n 0 i f o s i n i t ( ) :c io s t a s k c r e a t e0 i 协“卜启 、 、 一一一一 图2 2l jc o s i i 的程序流程 在完成程序的软件仿真调试后,我们要把程序烧录到硬件系统中运行。 和其他一些著名的嵌入式操作系统不同,pc o s i i 在单片机系统中的启动 过程比较简单,不像有些操作系统那样,需要把内核编译成一个映像文件写 入r o m 中,上电复位后,再从r o m 中把文件加载到r a m 中去,然后再运行应 用程序。t lc o s i i 的内核和应用程序放在一起编译成一个文件,使用时只 需要把这个文件转换成h e x 格式,写入r o m 中就可以了,上电后,会像普通 的单片机程序样运行。 2 3uc 0 s i i 中任务调度与中断处理的实现机理 多任务r t o s 中,内核负责管理各个任务,为每个任务分配c p u 时间,并 负责任务之间的通讯。作为实时操作系统,uc o s - - i i 是采用的可剥夺型实 时多任务内核“”。 2 3 1 任务切换的实现原理 uc o s i i 中,如果任务执行了某个函数,其结果改变了当前任务的状 态,或者是改变了别的任务的状态都要引起新的任务调度。调度工作的内容 可以分成两部分:最高优先级任务的寻找和任务切换。最高优先级任务的寻 找是通过函数o s s c h e d 0 来实现,宏调用o s j a s k _ s w 0 完成任务切换。uc o s i i 任务调度所花的时间是常数,与应用程序中建立的任务数无关。 o st a s ks w 0 实现任务切换的工作流程如图2 3 所示。 1 硬件进入中断处理:全局中断使能位置0 、返回地址压栈; 2 寄存器值压入当前任务堆栈; 3 修改当前任务控制块指针o s t c b c u r 和当前任务优先级o s p r i o c u r ; 9 眙尔滨= :【:程大学硕士擎能论文 # # 啊r 1 i t l l l li l l l l l l l l l $ 自日目一 4 恢复任务堆栈中的值到寄存器中; s 执行当前任务,畦jr e t i 指令完成。 醋2 。so s s c h e d 滤狴嚣 2 ,3 2 申断级的任胬切换原理 中瓣跫黠羚罄袭蠹部攀髂箍袭立霹壤瘦辍游艇蕊髓。釜e 醛l l 中雏跫 莲过程魏蕊2 4 新承。对予砸露夸墅实靖痰挟,中断返强荫数姆汝定跫返隧 1 0 哈尔滨工程大学硕士学位论文 到被中断的任务( 图2 4 a ) ,还是让优先级最高任务运行( 图2 4 b ) ,在后一种 情况下,因为内核要做任务切换,恢复中断的时间要稍长一些。 中 | 中断返回i 图2 4uc o s i i 中断处理过程 uc o s i i 中的中断服务子程序和一般前后台的操作不同。 1 保存全部c p u 寄存器,以便为中断服务; 2 调用o s i n t e n t e r 0 函数或把中断嵌套层数计数器( 全程变量 o s i n t n e s t i n g ) 直接加1 ,通知系统用户做中断服务; 3 执行用户代码做中断服务,此时的工作要尽可能地少,大部分工作通 知任务去做; 4 调用o s i n t e x i t0 ,将中断嵌套层数计数器减1 ,当嵌套计数器减到 零时,所有中断,包括嵌套的中断都完成了,此时uc o s i i 要判定有没有 优先级较高的任务被中断服务子程序唤醒了。如果有优先级高的任务进入了 就绪状态,uc 0 s i i 就返回那个优先级的任务。如果调度被禁止了( 中断 嵌套层数计数器o s i n t n e s t i n g o ) ,uc o s i i 将被返回到被中断了的任 务。 5 恢复所有c p u 寄存器; 6 执行中断返回指令i r e t 。 时钟节拍是特定的周期性中断,它提供周期性信号源,使得内核可以将 任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时 的依据。时钟节拍率越快,系统的额外开销就越大。时钟节拍的实际频率取 决于用户应用程序的精度。 哈尔滨工程大学礤士学位论文 2 4 嚣c o s i l 程a r m 7 徽处理器上的移植 2 4 1 移植壮c o s i i 的条件 所谓移植,就是使一个实时蠢核能程菜个徽继瑾器或徽控粥嚣上运行。 为了方便移植,uc o s i i 的大部分代码是用c 语言写的,但与处理器相关 鹣l 弋码傍震要遐汇编语言驾。由予斗c o s l l 在设计时就已经充分考虑1 丁可 移植性,所以移植工作并不复杂。 要移植uc o s i i ,目标处理器必须满足以下要求: 1 处理器黥c 编译器戆产生霹羹入代鹦; 2 用c 语言就可以打开和关黼中断; 3 处理器支持中断,并且熊产生窥对中凝( 通常在l o 一1 0 0 h z 之闼) ; 4 经瑾器支持是够麓臌( 足予字节) ,佟为多任务环境下黪任务蘩棱; 5 处理器有将堆栈指针和其它c p u 寄存器读出和存储到壤栈或内存中 瓣撂令。 “c 0 s i l 是面向中小型嵌入式系统的,如栗包含全部的功能模块( 信 号量、消息邮箱、消息队列等及相关函数) ,编译后的“c o s i i 的内核大 绞鸯6 i o k b :黧采只绦器最核;熬代磁,列簸小哥压缩至l2 k b 潋下。r a m 的占用与系统小的任务数有关,任务堆栈要占用大量的r a m 空间。堆栈的大 小取次于任务的局部变擞、缓冲送大小及可能的中断嵌套的层数。对于般 瓣中,j 、系统任务难筏爵疆鼗a 嚣字节涮死予字节。酝黻,掰癸移蓬的系绞 中必须有足够的r a m 资源。单片机系统嵌入uc o s i i 以后总的r a m 需求可 以幽如下表达式缛出: r a m 憨需求一应用稔序馥r a m 需求十海孩数箍区豹r a m 需求十( 任务钱辩 求十最大中断嵌套栈需求) 任务数。 矗掰7 t d m i 鲶灌器突全瀵是上述要袋。菠下来分绍麴鹰瑟瑟e 篱一| l 移 辍到s a m s u n g 公司的一款a r m 7 t i ) m i 的嵌入式处理器s 3 c 4 4 b o x 上。 2 4 2 工具和运行环缓 硅c o s 一 静大部分代码都楚嗣e 语言霹游,所醮它的移丰蠢需要支簿e 语言的交叉编译器。各种不同的单片机和微处理器所使用的开发环境不尽相 嗣,零漾题使用的是北裘媾剖公镯的u p - n e t a r m 3 0 0 0 实验仅,开发扳辨带懿 a 黼s d t2 5 软件是一套完整的a 脒开发环境,包括c 和汇编语言的编译、 连接、下载、调试等功能。这个编译器允许在c 语言中嵌入行汇编,另外逐 翼煮强大弱爨纯e 缡译熬麓戆“”。 哈尔滨工程大学硕士学位论文 2 4 3 移植的过程 1 在s o t 2 5 丌发环境中,新建工程,使用开发板推荐的e x p 例子,将 e x p 3 中的文件和r e s u c o s i i u c o s i i 的文件添加到工程中。同时用 r e s u c o s i i s t a r t u p 目录下的u h a l c 和u i al h 替换e x p 3 s t a r t u p 的相应 文件。 2 设置i n c l u d e s h 文件中与处理器和编译器相关的的代码 i n c l u d e s h 是主头文件,在所有后缀名为c 的文件的开始都包含 i n c l u d e s t t 文件。 # d e f i n ei n t 8 u u n s i g n e dc h a r # d e f i n ei n t l 6 u u n s i g n e ds h o r t # d e f i n ei n t 3 2 u u n s i g n e dl o n g ” # d e f i n eo ss t k u n s i g n e dl o n g # d e f i n eb o o l e a ni n t # d e f i n eo sc p us ru n s i g n e d1 0 n g # d e f i n ei n t 8 sc h a r e x t e r ni n ti n t s o f f ( v o i d ) : e x t e r nv o i di n t s _ o n ( v o i d ) : # d e f i n eo s e n t e r _ c r i t i c a l ( ) c u p s r = i n t s _ o f f0 ; # d e f i n eo s e x i t s r i t i c a l0 if ( c p u _ s r = = o ) i n t s _ o n0 ;) # d e f i n e o s s t k 6 r o w i 。h l # d e f i n es t a c k s i z e2 5 6 ( 1 ) 与编译器相关的数据类型 因为不同的微处理器有不同的字长,所以”c o s i i 的移植包括了一系 列的类型定义以确保其可移植性。尤其是uc 0 s i i 代码从不使用c 的 s h o r t ,i n t 和l o n g 等数据类型,因为它们是与编译器相关的,不可移植。 相反的,我们定义的整形数据结构既是可移植的又是直观的。为了方便,虽 然uc o s i i 不使用浮点数据,我们但还是定义了浮点数据类型。 例如,i n t l 6 u 数据类型总是代表1 6 位的无符号整数。现在,uc o s i i 和用户的应用程序就可以估计出声明为该数据类型的变量取值范围是o 6 5 5 3 5 。将ue 0 s i i 移植到3 2 位的处理器上也就意味着i n t l 6 u 实际被声 明为无符号短整形数据结构而不是无符号整数数据机构。但是,1 1c o s i i 所处理的仍然是i n t l 6 u 。 用户必须将任务堆栈的数据类型告诉给uc o s i i 。这个过程是通过为 o ss t k 声明正确的c 数据类型来完成的。我们的处理器上的堆栈成员是1 6 哈尔滨= :】= = 程大学硕士学位论文 位的,所以将o s s t k 声明为无符号整形数据类型。所有的任务堆栈都必须用 o ss t k 声明数据类型。 ( 2 ) o s e n t e rc r i t i c a l0 和o se x i tc r i t i c a l0 与所有的实时内核一样,“c o s - - i i 需要先禁止中断再访问代码的临界 区,并且在访问完毕后重新允许中断。这就使得“c o s i i 能够保护临界区 代码免受多任务或中断服务例程( i s r ) 的破坏。在s 3 c 4 4 b o x 上是通过两个 函数实现开关中断的。 r o ,c p s r ;当前c s r r 1 ,r o;复制屏蔽 r l ,r l ,# o x c o ;屏蔽中断位 c p s r ,r l ;关中断( i r qa n df i o ) r o ,r o ,# o x 8 0 ;从初始c s r 返回f i q 位 p c ,l r;返回 i n t s o n m r s r o ,c p s r b i c r o ,r o ,# o x c o m s r c p s r ,r o m o v p c ,l r ( 3 ) o s s t k g r o w t h 。 绝大多数的微处理器和微控制器的堆栈都是从上往下长的。但是某些处 理器是用另外种方式工作的。uc o s i i 被设计成两种情况都可以处理, 只要在结构常量o s s t k g r o w t h 中指定堆栈的生长方式就可以了。 置o ss t kg r o w t h 为0 表示堆栈从下往上长。 置0 ss t k g r o w t h 为1 表示堆栈从上往下长。 3 用汇编语言编写4 个与处理器相关的函数( o s c p u a a s m ) 这部分需要对处理器的寄存器进行操作,所以必须用汇编语言来编写, 包括4 个子函数:o s s t a r t h i g h r d y 0 ,o s c t x s w 0 ,o s i n t c t s s w ( ) , o s t i c k l s r 0 。 o s s t a r t h i 曲r d y ( ) 在多任务系统启动函数o s s t a r t 0 中调用。完成的功 能是:设置系统运行标志位o s r u n n i n g = t r u e ,将就绪表中最高优先级任务 的栈指针装载到s p 中,并强制中断返回。这样就绪的最高优先级任务就如同 从中断返回到运行态一样,使得整个系统得以运转。 o s c t x s w 0 在任务级任务切换函数中调用。任务级切换是通过s w i 或者 t r a p 人为制造的中断来实现的。i s r 的向量地址必须指向o s c t x s w ( ) 。这一 中断完成的功能:保存任务的环境变量( 主要是寄存器的值,通过入栈来实 现) ;将当前s p 存入任务t c b 中;载入就绪最高优先级任务的s p ;恢复就绪 1 4 ff s v r r d v0眦叫l刍锄 srn qh a q 豫 黜蛳叭 前蔽中回 当屏开返 蹬尔擦工程大学硕士学谴论文 最新优先级任务的环境变量;中断返飚。 0 s i n t c t x s w 0 在运逡中颟瓣务隧数o s i n t e x i t 0 中调爰,实瑰中鞭缀 壬 务切换。在时钟中断i s r ( 中断服务程序) 中,当发现有寓优先级任务簿待的 瓣锻信号煎寒时,在孛凝遥馥麓劳不遨嬲被中颧任务,糕是壹攘调度就绪鼹 最高优先级任务执行,从而能够尽快地让商优先级的任务得到响应,保证系 统的实嚣寸性戆。其原理基本上与任务级的切换捆阉。但是由于进入中断时已 经保存了被中断任务的c p j 现场,因此不爝苒进行类骰的操作了,是需对蠛 栈指针做相应的调整。 o s t i c k i s r ( ) 系统辩镑节糖中繇激务蕊数,爨一个蠲期茬巾叛,为内较掇 供时钟节拍。频率越高,系统负荷越羡。其周期的大小决定了内核所能给应 髑系绞爨供豹最,j 、时翊溷疆骚努。对予要袋更热蘧刻

温馨提示

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

评论

0/150

提交评论