已阅读5页,还剩81页未读, 继续免费阅读
(轮机工程专业论文)基于嵌入式技术的船舶机舱网络监控系统的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 摘要 随着后p c 时代的到来,嵌入式系统以其体积小、可连续工作时间长、性能稳 定可靠等优点,已经成为现代社会进行监控系统设计的主流方向,随着现代船舶 自动化程度的逐步提高,通过嵌入式系统进彳亍船舶机舱监控已经成为现在船舶自 动化程度的一个重要体现。 本课题首先对船舶机舱监控系统的实时性、准确性、交互性等方面进行了总 体简介,并提出了系统的硬件结构和软件框架。在硬件平台上,系统以8 b i t 加强 型的5 1 处理器w 7 8 e 5 1 6 b 作为c p u ,并辅以嵌入式操作系统i tc o s - i i ,使之能 在c p u 上运行,组成了一个硬件平台。同时根据8 b i t 处理器资源有限的特点,将 精简的t c p i p 协议栈礤嵌入其中,其中只包括u d p 、i c m p 、i p 、a r p 等协议, 并使之能在处理器上运行,并采用网络接口芯片r t l 8 0 1 9 a s ,使整个底层系统能 更好的为应用程序服务。同时本文详细介绍了嵌入式操作系统l lc o s i i 的结构特 点和如何移植到处理器中,以及如何将嵌入式t c p i p 协议栈pi p 移植其中,在此 基础上在通过c g i 技术构成了一个数据采集交互系统,系统通过5 1 系统单片机、 精简的t c p i p 协议栈、以太网接口芯片、a d 、d a 转换器等接口电路实现了系 统的核心结构。该系统通过网络接口芯片连入以太网,并通过c g i 接口技术迸行 模拟量采集和远程传送。 本论文经过我一年的学习和调试研究,基本上已经达到了当初设想的目标。 课题的实现为在船舶机舱监控上实现嵌入式监控技术打下了一个良好的基础,为 船舶机舱的自动化程度的进一步提高提供了很好的参考价值。 关键词:l lc o s - ;t c p i p 协议栈;r t l 8 0 1 9 a s ;c , g i 技术 英文摘要 a p p l i c a t i o na n dr e a r c ho f t h ee m b e d e dn e t w o r km o n i t o r i n g s y s t e mi ne r g i n er o o m a b s t r a c t w i t ht h ea r r i v a lo fp ce r a , t h ee m b e d d e ds y s t e mh a sb e i n gt h em a i nd i r e c t i o nb y t h es t r o n g p o i n t so fs m a l lv o l u m e 、l o n gw o r kt i m e 、c a p a b i l i t ys t e a d yi nt h em o d e m s o c i e t ym o n i t o r i n gs y s t e md o m a i n w i t hi m p r o v i n go fs h i pa u t o m a t i z a t i o n , s h i p m o n i t o r i n gh a sb e i n gi m p o r t a n te m b o d i m e n t o fs h i pa u t o m a t i z a t i o nb ye m b e d d e d s y s t e m f i r s t l y , t h ep a p e ri n t r o d u c e st h ep e r f o r m a n c e o fr e a lt i m e 、v e r a c i t y 、a l t e r n a t i o ni n e n g i n er o o mm o n i t o r i n gs y s t e ma n dh a r d w a r da n ds o f t w a r ef r a m eo ft h es y s t e m i nt h e h a r d w a r ef r a m e ,t h ep r o c e s s o ro ft h es y s t e mi sw 7 8 e 5 1 6 b ,a n dm a d et h ee m b e d d e d o p e r a t i n gs y s t e mi ic o s i im i m i n go nt h e8 - b i tm c u t of o r mah a r d w a r ef r a m e a c c o r d i n gt ot h ec h a r a c t e ro ft h e8 一b i tm c u sl i m i t e dr e s o u r c e s ih a v es i m p l i f i e dt h e t c p i pp r o t o c o ls t a c k , o n l yi n c l u d i n gu d p 、i c m p 、i p 、a r pe t c , m a k i n gi tm i m i n go n t h em c u ,a n db e c a u s eo fu s i n ge t h e m e ti n t e r f a c ec h i pr t i 加1 9 a s ,i tm a k e st h e b o t t o ms y s t e mw o r k i n gb e t t e r a tt h es a m et i m e ,t h ep a p e ri n c l u d e st r a i t so fe m b e d d e d o p e r a t i n gs y s t e mi lc o s i ia n dt h em e t h o do ft r a n s p l a n t i n gi nt h ed e t a i l ,a n dh o w t o t r a n s p l a n tt h ee m b e d d e dt c p i pp r o t o c o l ,i nt h ef o u n d a t i o n ,id e s i g nad a t ac o l l e c t i o n s y s t e m ,w h i c hi sm a d eu po fc g it e e l m i c 、5 1 s c m 、p i n t s i z et c p i pp r o t o c o l 、e t h e m e t i n t e r f a c ec h i p 、a d 、d as w i t c he q u i p m e n t t h es y s t e mc a na c c e s st h ei n t e r a c tb y n e t w o r ki n t e r f a c ec h i pt op r o c e s sa n a l o gs i g n a l sc o l l e c t i o na n dr e m o t et r a n s m i s s i o nb y c g ih a t e r f a c ct e e i m i c a f t e ra b o u tay e a r ss t u d y i n ga n dd e b u g g i n go fh a r d w a r ea n ds o f t w a r e ,ih a v e a c h i e v e do r i g i n a l l ya i m t h ea c c o m p l i s h m e n to ft h i sp a p e rh a saf a v o r a b l ef o u n d a t i o n f o rr e a l i z i n ge m b e d d e dm o n i t o r i n gt e c h n i ci nt h es h i pe n g i n er o o m ,a n do f f e r i n gt h e g r e a dv a l u eo fr e f e r e n c ef o re n g i u er o o ma u t o m a t i z a t i o n t k e yw o r k s :| e c o s - i i ;t c p i pp r o t o c o l ;r t l 8 0 1 9 a s ;c g it e c h n i c 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果, 撰写成硕士学位论文“茎王送式撞盔的船舶扭舱囝络笪控撞鲞班究”a 除论文中 已经注明引用的内容外,对论文的研究做出重要贡献的个人和集体,均已在文中 以明确方式标明。本论文中不包含任何未加明确注明的其他个人或集体已经公开 发表或未公开发表的成果。 本声明的法律责任由本人承担。 论文作者签名:嚷妒键) p 宇年弓月p 日 学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连海事大学研究生学位论文提交、 版权使用管理办法”,同意大连海事大学保留并向国家有关部门或机构送交学位论 文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本 学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫 描等复制手段保存和汇编学位论文。 保密口,在年解密后适用本授权书。 本学位论文属于;保密口 不保密口( 请在以上方框内打“4 ”) 论文作者签名:荡矿眇导师签名: 啦嘶 日期。杪萨;月伪日 基于嵌入式技术的船舶机舱网络监控技术研究 第1 章绪论 1 1 课题的研究及应用背景 随着计算机和网络技术的发展,社会已经进入了一个网络化的时代,计算机、 i n t e m e t 已经深入到工业、家庭等社会的每一个角落,而嵌入式技术则在其中占据 着重要的地位,它的迅速发展对整个社会的网络化进程起着一个巨大的推动作用。 实时的数据处理、网络互连、强大的应用软件功能和越来越多的扩展功能模块几 乎成了现代实时监控系统的共同需求。但同时由于嵌入式系统的复杂性,嵌入式 操作系统已经成为嵌入式系统的重要组成部分,而uc o s i i 凭借其结构清晰、源 代码开放、可移植性高等优点,已经成为基于监控系统、数字技术等嵌入式领域 的技术热点。将1 tc o s - i i 和其相应的硬件平台结合起来,共同构成一个软硬件结 合的系统平台,可以高效、快速、实时的执行其设定的功能,并可以在以后的研 究和功能改进中,通过修改相应的软硬件,来完成日益复杂的功能需求。 我国现阶段船舶的自动化水平较低,8 0 年代以来,国内研制的船舶机舱监控 系统大多属于电、气动及中小规模集成电子模块组合逻辑控制和中小型计算机集 中控制,即使微机控制系统,其软硬件设置比较单一,只能适用于特定的机型和 特定的功能,如果外界条件稍有改变,则很多监控系统将无法在进行工作,因此 不仅给使用和维修造成了很大的困难,而且也限n t 自身的发展。因此,通过将 实时操作系统1 1c o s i i 和基于单片机的硬件平台结合起来,将t c p i p 协议栈嵌 入到单片机中,使系统网络化。这样,通过以网络通信技术为基础的嵌入式系统 对船舶机舱实行监控,可以大大提高船舶机舱监控的实时性和可靠性【1 】。 1 2 嵌入式系统简介 1 2 1 嵌入式系统 嵌入式系统一是以应用为中心、以计算机技术为基础,软、硬件可裁减,适 应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统t 2 1 。 它一般具有如下的结构: 第1 章绪论 l软件 【 戆燃譬鞲翳襻 输入_ _ 处理器_ _ 一输出 1 卜 存储器 箴舔豢镰秀甏秽 图1 1 嵌入式系统的组成 f i g 1 1f r a m e w o r k o ft h ee m b e d d e ds y s t e m 它主要表现在下列几个方面: 嵌入式系统是面向用户的、面向产品、面向应用的,它有很强的 专用性,必须结合实际系统需求进行合理的裁减利用。 嵌入式系统是一个技术密集、资金密集、高度分散、不断创新的 知识集成系统。 嵌入式系统必须能够根据应用需求对软硬件进行裁减,满足应用系统的功 能、可靠性、体积、成本等方面的要求。 1 2 2 嵌入式操作系统 嵌入式操作系统是一种实时的、支持嵌入式系统应用的操作系统软件,它是 嵌入式系统( 包括硬、软件系统) 的核心组成部分,通常包括与硬件相关的底层 驱动软件、系统内核、设备驱动接口、通信协议、图形界面。标准化浏览器b r o w s e r 等。嵌入式操作系统具有一般通用操作系统的基本特点,但是与通用操作系统相 比较,嵌入式操作系统在系统的实时高效性、硬件的相关依赖性、软件固态化和 应用的专用性方面又具有独特的优点。 嵌入式实时操作系统( r t o s ) 则对逻辑和时序的要求非常严格,根据操作系 统的工作特性,实时是指物理进程的真实时间。r t o s 具有实时性,能从硬件方面 支持实时控制系统工作。在其中实时性是第一要求,需要调度一切可利用的资源 完成实时控制任务,其次才考虑提高计算机系统的使用效率。 基于嵌入式技术的船舶机舱网络监控技术研究 1 2 3 引入实时操作系统的意义 首先,嵌入式实时操作系统提高了系统的可靠性,在船舶监控系统中,要求 系统具有可靠的稳定性,不仅能防止系统崩溃,而且还要有自我修复能力,这样 不仅要求系统硬件方面提高系统的可靠性和抗干扰性,而且还要求在软件方面也 应该提高系统的抗干扰性,尽可能减少不安全因素和填补漏洞能力。而传统的前 后台系统由于它的时间相关很强的关键操作( c r i t i c a lo p e r a t i o n ) 是靠中断服 务来保证的,一旦它受到强干扰,运行的程序可能就会发生异常、出错、跑飞, 甚至有可能发生死循环,造成系统的崩溃。但是对于由实时操作系统管理的系统, 干扰只能引起众多进程中的某一个或几个产生破坏,我们可以通过监控系统对它 进行修复,最坏的事情也就是把受损的进程删除,并不影响整个任务的运行。 其次,可以快速提高开发效率,缩短开发周期,在开发过程中,可以将任务 分解成几个模块分别进行,每一个模块的修改和设计并不影响其他模块,这样可 以大大缩短任务的维护、开发。 最后,实时操作系统可以充分发挥c p u 的多任务潜能,对于1 6 位、3 2 位的 c p u ,它的速度比较快,而且它们本身就是为了实行多任务、多用户操作系统而设 计的,所以通过采用操作系统可以更好的发挥它们的能力,而对于8 位的c p u ,嵌 入式实时操作系统可以按照需要进行裁减,即满足了任务的需求,又不多占用过 多的资源。 1 3 uo o s - i i 和w 7 8 e 5 1 6 b 现在实时嵌入式操作系统的种类很多,但主要分为两大类商用型和免费 型,商业上的实时操作系统不但价格昂贵,而且用户也无从知道其源代码,i ic o s 则是一个免费的源码公开的嵌入式操作系统,可以适应从x 8 6 到8 0 5 1 的各种不 同类型不同规模的嵌入式系统,并且由于它的代码公开性,可移植性强,代码量 相对较小等优点,已经广泛应用于现代社会的各类高科技产品中。 w 7 8 e 5 1 6 b 是由台湾w i n b o n d 公司生产,带6 4 k 的a p r o m 和4 k 的l d r o m ,可以 实现i s p ( i n - s y s t e mp r o g r a m m i n g ) 功能,由于本课题设计中要求实现的功能有限, 为了节约成本,故采用此系列的处理器。 在嵌入式实时操作系统下来开发各种应用程序使程序的设计和扩展变得非常 第1 章绪论 容易,通过将应用程序分成若干个任务模块,不需要大的改动就可以增加新的功 能,使应用程序的设计大大简化,而且对实时性要求比较苛刻的事件都得到了快 速、可靠的处理,通过合理、有效的系统设计,嵌入式实时操作系统将使系统资 源得到更好的利用。 1 4 嵌入式系统现阶段的发展及趋势 进入2 0 世纪9 0 年代以来,随着信息化,网络化的飞速发展,嵌入式技术也 获得了广阔的发展空间目前已经成为通信和消费类产品的共同发展方向,在通信 领域,数字技术正在全面取代模拟技术;在广播电视领域,美国现在几乎已经全 部转换为数字电视,欧洲的d v b 技术也已经在全球大多数国家推广;在个人领域, 嵌入式产品主要是做为个人移动的数据处理和通信软件,由于嵌入式设备具有自 然的人机交互界面,所以很受用户的欢迎。 现在市场上众多的电子产品就是把网络、控制、信息结合起来,通过软硬件 结合,使产品具有智能化和网络化。 硬件方面,不仅有各大公司的微处理器芯片,还有用于学习的研发的各种配 套开发包。目前底层系统和硬件平台经过若干年的开发和研究,已经相对比较成 熟,实现各种功能的芯片应有尽有。 软件方面,国外商品化的嵌入式实时操作系统,如w i n d r i v e r 、m i c r o s o f t 、q n x 等产品已经进入了我国市场,而且我国也自主研发了很多比较成熟的产品。很多 厂商提供这种驱动程序源代码和微处理器的样片,初学者可以通过对现有产品进 行学习和进行更深一步的研发,都是一个可以很好利用的东西。 随着后p c 时代的到来,嵌入式产品也获得了巨大的发展机遇,随着信息、数 字技术的发展,未来嵌入式系统大概有下列几种发展趋势: 1 、和互联网结合 2 、向s o c 发展是趋势 3 、和a s p 相结合 4 、和w a p 相结合 5 、向深嵌入发展 6 、和纳米技术结合 基于嵌入式技术的船舶机舱网络监控技术研究 第2 章嵌入式实时操作系统uc 0 s - i i 提倡在计算机嵌入式应用中使用实时操作系统r t o s ( r e a lt i m eo p e r a t i n g s y s t e m ) ,是因为r t o s 可以将任务分解为多任务,简化了应用系统软件的设计; r t o s 使控制系统的实时性得到控制,可以接近理论上能达到的最好水平;良好的 多任务设计,有助于提高系统的稳定性和可靠性。 嵌入式实时操作系统uc o s i i ( 皿er e a l t i m ek e r n e l ) 就是在此基础上由美 国科学家j e a nj l a b r o s s e 先生根据最初的版本pc o s 在1 9 9 2 年推出的,由清华大 学教授邵贝贝先生翻译成中文,从而在中国普遍流传开来。 l ac o s i i 的核心代码是用c 语言写的,可读性强,只有一小部分与处理器有 关的代码是用汇编语言写的。i io o s i i 可以移植到很多种处理器上,前提条件只 要是微处理器有堆栈指针,有c p u 内部寄存器出栈、入栈指令,此外还要求c 编 译器支持嵌入式汇编或该c 语言编译器可扩展、可连接汇编模块,使得开关中断 可以在c 语言中进行。并且目前为止,u c o s i i 已经成功应用在很多的m c u 上。 2 1 实时操作系统 实时操作系统是嵌入式应用软件的基础和开发平台,但是实时操作系统只有 向用户提供开发程序的各种a p i 而没有通常意义下的界面,亦即只有一个核心, 在核心里只有操作系统的一些基本功能,如:任务调度、存储管理、同步机制、 中断管理和a p i 等,这些功能又可以根据不同的应用程序来进行裁减或扩展,以 便用最小的代码量来满足嵌入式系统的需求。 实时系统的特点是:如果逻辑和时序出现偏差,将会引起严重的后果。现在 有两种类型的实时系统,软实时系统和硬实时系统。在软实时系统中,系统的宗 旨是要求任务尽快的完成,而并不要求任务在多长时间内完成;而硬实时系统, 各任务不但要执行无误,而且要做到准时。现在的大多数实时系统都是二者的结 合。 r t o s 是针对不同的处理器优化设计的高效率实时多任务处理内核,r t o s 可 以面对不同系列的嵌入式处理器,如:m p u 、m c u 、d s p 、s o c 等提供类同的 a p i 接口,这是r t o s 基于设备独立的应用程序开发基础,并且基于r t o s 的c 语 第2 章嵌入式实时操作系统uc o s i i 言程序具有极大的可移植性,在r t o s 基础上可以编写各种硬件驱动程序、专家 库函数、产品库函数和通用性的应用程序一起来完成用户设定的各种功能,因而, r t o s 又是一个软件开发平台。 r t o s 是操作系统的一个重要分支,它与一般商用多任务o s 如:l i n u x 、 w i n d o w s 既有相同的一面也有不同的一面。对于商用多任务o s ,其目的是方便用 户管理计算机资源,追求系统资源最大利用率;而r t o s 追求的是调度的实时性、 相应时间的可确定性和系统的高度可靠性1 3 - 6 1 。 在实时操作系统中,最重要的一个概念就是任务,就是线程。实时应用程序 的设计过程就是把要解决的问题分割成多个任务,每个任务是应用程序的一部分, 并且给每个任务分配一个优先级。多任务运行的实现就是靠c p u 在各个任务之间 的调度和转换,c p u 轮番运行于多任务中的其中一个,而多任务则使c p u 的利用 达到了最大化,并使应用程序模块化。使用多任务,将使应用程序更加容易维护 和设计。并且每一个任务都是一个无限的循环,它无论在那一时刻肯定处于下列5 中状态之一休眠态、就绪态、运行态、挂起态和中断态。 在多任务系统中,内核( k e r n e l ) 负责管理各个任务,或者说是给各个任务分 配c p u 时间,并且负责任务问的通信。内核提供的基本服务是任务切换,使用它 可以大大简化应用系统的设计,因为实时内核允许将应用分为多个任务,由内核 来管理它们。但是实时内核也增加了r o m 的用量,内核的数据增加了r a m 的用 量,因为内核是加在应用程序中的软件,内核提供的服务需要一定的执行时间, 本身就增加了应用程序的额外负荷。 多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同,被 赋予一定的优先级。基于优先级的调度法是指,c p u 总是让处于就绪态的、优先 级最高的任务先运行。基于优先级的内核有2 种类型:不可剥夺型和可剥夺型。 不可剥夺型( n o n - p r e e m p t i v ek e r n e l ) 也称作合作型多任务,既要求每个任务 主动放弃c p u 的使用权。它的优点是相应中断快,几乎无须使用信号量保护共享 资源,运行着的任务占有c p u ,而不用担心被别的任务抢占;但是它在相应时间 上具有很大的缺陷,即无法确定何时最高优先级的任务能获得c p u 的使用权。而 可剥夺型的内核则使相应时间得到最优化,即它总是让就绪态的高优先级的任务 先运行,中断服务程序可以抢占c p u 。现在一般的操作系统都属于可剥夺型的。 基于嵌入式技术的船舶机舱网络监控技术研究 实现任务间通信最简便的办法是使用共享数据结构。特别是当所有的任务都 在一个单一地址空间下,这种处理特别方便。如果能使用变量( 如全局变量、指 针、缓冲区、链表和循环缓冲区等) ,使用这种共享数据结构通信就更为容易。虽 然共享数据区法简化了任务间的信息交换,但是必须保证每个任务在处理数据时 的排它性,以避免竞争和数据的破坏。使用共享资源时,一般使用下列几种方法 来满足互斥条件: 关中断; 使用测试并置位指令; 禁止做任务切换; 利用信号量。 有时需要在任务间或中断服务与任务间进行通信。这种信息传递称为任务间 的通信。任务间信息的传递主要2 个途径:通过全程变量,或发消息给另一个任 务。 用全程变量时,必须保证每个任务或中断服务子程序独享该变量。中断服务 中保证独享的唯一办法是关中断。如果2 个任务共享该变量,各任务实现独享该 变量的办法可以是关中断,在开中断,或使用信号量。但是,任务只能通过全程 变量与中断服务子程序通信,而任务并不知道什么时候全程变量被中断服务子程 序修改了,除非中断服务子程序以信号量方式向任务发信号,或者是该任务以查 询方式不断周期性地查询变量的值。如果要避免这种情况,可以使用邮箱或消息 队列。 消息邮箱也称为交换消息,即用一个指针型变量,一个任务或一个中断服务 子程序通过内核服务,可以把一则消息( 一个指针) 放到邮箱里去。同样,一个 或多个任务通过内核服务,可以接受这则消息。发送消息的任务和接受消息的任 务约定,该指针指向的内容就是那则消息。每个邮箱都有相应的正在等待消息的 任务列表。要得到消息的任务会因为邮箱是空的,而被挂起,且被记录到等待消 息的任务表中,直到接收到消息。一般说来,内核允许定义等待超时。等待超时 的时间超过了,仍然没有接受到消息,该任务就进入就绪态,并返回出错信息, 报告等待超时错误。 消息队列实际上就是邮箱阵列,用于给任务发消息。通过内核提供的服务, 第2 章嵌入式实时操作系统“c o s i i 任务或中断服务子程序可以将- - n 消息( 该消息的指针) 放入消息队列。同样, 一个或多个任务可以通过内核服务从消息队列中得到消息。发送和接受消息的任 务约定,传递的消息实际上是传递的指针指向的内容。通常采用的是先进先出原 则( f 1 f o ) ,即先进入消息队列的消息先传给任务;但是,有的操作系统也采用后 进先出原则( l i f o ) ,如本课题采用的pc o s i i 。 中断是一种硬件机制,用于通知c p u “有个异步事件发生了”。中断一旦被 识别,c p u 保护部分( 或全部) 现场,即部分或全部寄存器的值,跳转到专门的 子程序,称为中断服务子程序。中断可以使c p u 在事件发生时予以处理,而不必 让微处理器连续不断地查询是否有事件发生。 在中断服务程序中,可以通过2 条特殊指令:关中断和开中断让微处理器不 响应和响应中断。对于实时内核,最重要的指标就是关中断时间的长短,所有实 时系统在进入临界区代码段之前,都要关中断;执行完临界代码之后,在开中断。 关中断的时间越长,中断延迟就越长。中断相应则为从中断发生到开始执行用户 的中断服务子程序代码来处理这个中断的时间。而对于可剥夺型内核来说,中断 恢复时间则为:微处理器返回到被中断了的程序代码所需要的时间,或返回到更 高优先级任务的时间。典型的,在执行用户代码之前,要保护现场,将c p u 的各 寄存器推入堆栈,而这段时间将被记做中断相应时间;而在中断服务子程序的末 尾,要调用一个由实时内核提供的函数,这个函数用于判断中断是否脱离了所有 的中断嵌套,这个时间则被称为中断恢复时间。时钟节拍是特定的周期性中断, 时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等 待事件发生时,提供等待超时的依据。一般说来,时钟节拍率越快,系统的额外 开销就越大。 实时内核的使用使得应用程序的设计和扩展变得容易,无需大的改动就可以 增加新的功能。但实际上,如果用户给系统增加一些低优先级的任务,用户系统 队高优先级的任务的相应时间几乎不受影响。通过将应用程序分割成若干个独立 的任务,r t o s 使得应用程序的设计过程大为简化。使用可剥夺型内核时,所有时 间要求苛刻的事件都得到了尽可能快捷、有效的处理。通过有效的服务,如信号 量、自区箱、队列、延时及超时等,r t o s 将使资源得到更好的利用。 基于嵌入式技术的船舶机舱网络监控技术研究 2 2 u c 0 s - i i 内核的原理 l ic o s i i 是源码公开的其实嵌入式操作系统,它的源代码的大部分是用c 语 言写的,经过简单的编译,设计者就能在p c 机上运行,仅有与c p u 亲密相关的 一部分是用汇编语言写成的。| ic o s i i 内核几乎已经被移植到所有的嵌入式应用 类c p u 上。在经过了1 0 多年的使用实践,许多行业都有很多成功应用pc 0 s 实时内核的实例【7 2 1 。 uc o s i i 的文件结构以及与硬件的关系如下图所示: u c o s - i i 缝理器无欠代码 0 sc o r e co s c _ q o s 船o x c 皤m 翻e ( i sc o st i m c0 c o s - i i h 0 ss m l - c 回回国 图2 1 c o s i i 的软硬件体系结构 f i g2 1h a r d w a r ea n ds o f t w a r ea r c h i t e c t u r eo f uc o s - i i 2 2 1l lc 0 s - i i 的临界段管理 和其他实时内核一样,uc o s i i 需要在存取代码核心区时禁止中断,在存取 完成时再将中断重新打开。禁止中断是为了保护核心区代码,以免出现多个任务 或中断服务程序同时进入该代码区t 1 3 1 。 第2 章嵌入式实时操作系统uc o s l i 关中断的时间是实时内核的重要指标之一,因为这个指标影响用户系统对实 时事件的相应特性。uc o s i i 努力使关中断降到最低,但是仅仅对于uc o s - i i 而言,关中断的时间很大程度上取决于微处理器的结构以及编译器所生成的代码 质量。 c p u 一般都具有关中断开中断指令,用户使用的编译器必须能够在c 语言中 直接实现关中断开中断操作。而有一些编译器允许在用户的c 源代码中插入汇编 语言的语句,使得插入微处理器指令来关中断开中断很容易实现,也有一些编译 器含有扩展语句,可以从c 语言中直接允许关中断开中断。 l ic o s i i 定义了2 个宏来关中断和开中断,以避免由于不用编译器的差异而 导致的中断设置差异隐藏起来。uc o s i i 定义了两个宏:o s e n t e r c r i t i c a l 0 和o s e x i t - c r i t i c a l 0 来实现对中断的允许和中断。这个两个宏是由c p u 决定 的,它们在o s c p u h 中可以找到相应的宏定义。每种c p u 都有自己的o s c p u h 。 o s e n t e r c r i t i c a l 0 和o s - e x i t - c r i t i c a l 0 总是成对使用的,把临界区 代码段围绕起来,其用法如下所示: o s e n t e r c r i t i c a l 0 严“c o s i i 的核心代码区 用户的应用程序也可以利用这两个宏来保护自己的临界代码段。但是需要当 心的是,如果在调用一些如o s t i m e d e l ( ) 之类功能函数之前关中断,应用程序将会 崩溃( 死机) 。这个问题的发生是因为在定时到达以前,任务将一直被挂起;但是 由于中断已经被禁止,这个任务就永远不可能获得定时中断。所有的“挂起”调 用均受制于这个问题,做为一条普遍适用的规则,应当在中断总是开着时调用u c o s 功能函数。 用户可以通过不同的方法o s - e n t e r c r i t i c a l 0 和o s e x i t - c r i t i c a l 0 。 并且般通过用户打算移植的处理器的性能以及所用的c 编译器来决定选用那种 方法。用户可以通过定义( # d e f i n e ) 常数0 s c m n c a l 广m 唧o d 来选择具体使用 那种方法。该常数定义在用户的应用程序的移植文件o s c p u h 。 第一种方法:# d e f i n eo s c r i t i c a l - m e t h o d = = i 基于嵌入式技术的船舶机舱网络监控技术研究 这是用最简单的方法来实现这2 个宏调用的:用处理器关中断来完成 o s e n t e r c r i t i c a l 0 ,用处理器开中断来完成0 s e x l t - c l u t i c a l 0 a 但是这 种方法也有一个小问题。如果用户在中断禁止的情况下调用了一个l - tc o s i i 函 数,而在从一个l lc o s i i 返回时,中断将被允许。但是,如果用户在调用uc o s - 函数之前就以将中断关掉,而在调用返回后仍要求禁止中断。在此情况下,这 个实现方法就是不太妥当的。但对于某些c 编译器或c p u 而言,这种方法仍是用 户唯一的选择。 第二种方法:托e f i n co s c r m c a i m 咖o d = = 2 通过这种方法来实现o s e n t e r c r i t i c a l 0 时,是将禁止的中断状态保留在 堆栈中,然后禁止中断。而o s e x i t - c r i t i c a l 0 的实现只需简单地将中断状态从 堆栈中恢复出来。利用这种机制,在中断允许和中断禁止时调用| lc o s i i 服务时, 函数的进入和返回状态都得到了保护。简单说,如果在uc o s i i 系统调用前中断 时允许的,则系统调用后仍是允许的:而在系统调用前如果中断是禁止的,则调 用后仍将是禁止的。 但是有一点需要特别当心的是:在关中断的情况下调用uc o s - i i 服务延长了 应用程序的中断延迟时间。这两个宏的实现伪代码如下: 鹤m ( “p u s hp s w ,) a s m ( “d i ”、 a s m c p o p p s w ”1 在上述代码中,我们一般假设编译器允许用户可以直接在c 代码行之间插入 行汇编语言。并且通过这种指令来开、关中断。但是上述指令只是伪码,仅仅用 于解释上述实现方法,并不是实际的c p u 指令。 第三种方法:# d e f i n eo s c r m c a ir m 唧o d = = 3 有些编译器提供了扩展功能,允许用户获取当前处理器的状态字( p s w ) ,并 把它存入函数的局部变量中。但是由于并不存在编译器所提供的函数的标准命名 规则,所以在实际的uc o s 中一般采用下列的宏来调用其功能: # d e f m eo s e n t e r c r i t i c a l 0 第2 章嵌入式实时操作系统uc o s i i c p u - s r2g e t - p r o e e s s o r - p s w 0 ; d i s a b l e i n t e r r u p t 0 ;1 5 】 # d e f i n eo s e x i t - c r i t i c a l 0 s e t - p r o c e s s o r - p s w ( c p u 。s r ) ; 2 2 2 任务 任务通常是一个无限的循环,u c o s i i 可以管理6 4 个任务,但系统保留了4 个最低优先级和4 个最高优先级,因此用户可以使用5 6 个任务。必须给每个任务 赋予不同的优先级,l lc o s 总是运行进入就绪状态优先级最高的任务 6 1 。 ( 1 ) 任务状态 典型的是,每个任务都是一个无限的循环,都可能处于以下图示中5 种状态 之一休眠态、就绪态、运行态、挂起态及被中断态。 图2 2 任务状态的切换 f i 9 2 2 t a s ks w i t c hu n d e r u c o s l i 休眠态是指任务驻留在程序空间中( r o m 或r a m ) ,还没有交个uc o s i i 基于嵌入式技术的船舶机舱网络监控技术研究 来管理,即不被多任务内核所调度; 就绪态是指任务已经准备好,可以运行,但由于该任务的优先级比正在运行 的任务的优先级低,还暂时不能运行; 运行态是指任务掌握了c p u 的使用权,正在运行中; 挂起态也可以称作等待事件态,指任务在等待,等待某一事件的发生( 例如 等待外设的i 0 操作,等待某共享资源由暂不能使用变成能使用状态,等待定时脉 冲的到来,等等) ; 被中断态是指发生中断时,c p u 提供相应的中断服务,原来正在运行的任务 暂不能运行。 图2 2 表示pc o s i i 中一些函数提供的服务,这些函数使任务从一种状态变 成为另一种状态。 当所有的任务都处于等待时间发生或等待延迟时间结束的状态时,hc o s i i 执行空闲任务。 ( 2 ) 任务控制块 一旦创建好一个任务,系统就会自动为它指定一个任务控制块o s - t c b ,这是 一个被| ic o s i i 使用的数据结构,用于在一个任务被其他任务抢占时保持其状 态。当任务的c p u 使用权被剥夺时,任务控制块能确保任务从当时中断的那一点 准确无误的继续执行。o s - t c b 全部驻留在r a m 中,并且在任务建立时就被初始 化了,代码如下t 1 4 - 1 9 1 : t y p e d e fs t r u c to st c b 0 ss t k* o s t c b s t k p t r : # i fo s _ t a s kc r e a t e e x t e n v o i d * o s t c b e x t p t r : 0 s s t k爿c o s t c 8 s t k b 0 t t o m : i n t 3 2 u0 s t c b s t k s i z e : i n t l 6 uo s t c b o p t : i n t l 6 uo s t c b i d : # e n d i f 第2 章嵌入式实时操作系统pc o s s t r u c to s t c b * o s t c b n e x t : s t r u c t o s t c b * o s t c b p r e v ; # i f ( o s - q - e n ( o sm a x _ q s = 2 ) ) | | o s _ m b o x _ e nl o s s e m e n o s _ e v e n t * o s t c b e v e n p t r : # e n d i f # i f ( 0 s q e n ( o s - m a x o s = 2 ) ) iio s m b o x - e n v o i d * o s t c b m s g : # e n d i f i n t l 6 u o s t c b d l y : i n t 8 u o s t c b s t a t : i n t 8 u o s t c b p r i o : i n t 8 u o s t c b x ; i n t 8 u o s t c b y : i n t 8 u o s t c b b i t x : i n t 8 u o s t c b b i t y : # i fo s _ t a s kd e l _ e n b o o l e a no s t c b d e l r e q : # e n d i f o s t c b : 下面简要介绍一下几个重要的变量: o s t c b s t k p t r :指向当前任务堆栈顶的指针。 o s t c b e x t p t r :指向用户可定义的任务控制块扩展部分的指针,它允许p c o s i i 用户在不必修改| ic o s h 源代码的情况下,就能扩展任务控制块。 o s t c b e x t p t r 仅被用在o s t a s k c r e a t e e x t 0 6 p 。所有用户需要设置o s c f g h 中的 o s - 1 a s k _ e ) e n 为1 来允许该域。 o s t c b s t k b o t t o m : 指向任务堆栈底的指针。 o s t c b s t k s i z e :存有栈中可容纳的指针的数目,即堆栈体积。 o s t c b e v e n p t r :指向一个事件控制块的指针。 o s t c b m s g :指向一个发往某个任务的消息。 基于嵌入式技术的船舶机舱网络监控技术研究 o s t c b p r i o :含有任务的优先级。优先级越高它的数值越小。 在o s t c b 结构中的一些域是由条件编辑语句包围的。这些条件语句可以在用 户不需要i tc o s i i 所提供的全部特征时减少r a m 的开销。 任务最大值o s m a x - t a s k s 是在o s c f g h 中定义的,它决定了应用中o s - t c b 的数量。用户可以根据o s m a x - t a s k s 所设置的实际应用中任务数,来减少r a m 的总量。所有o s t c b 都被放在o s t c b t b l q h ,目前o s - t c b 一般采用静态方式 来存储,在以后的发展中,很可能会改成动态方式。 ( 3 ) 任务管理 任务的建立 想要uc o s i i 来管理用户的任务,用户必须首先要建立任务。用户可以通过。 将任务的地址和其他参数传递到以下2 个函数之一来建立任务:o s t a s k c r e a t e ( ) 或o s t a s k c r e a t e e x t ( ) 。o s t a s k c r e a t e ( ) 与p c o s 是向下兼容的,o s t a s k c r e a t e e x t ( ) 是o s t a s k c r e a t e ( ) 的扩展,提供了一些附加的功能。用2 个函数中的任何 一个都可以建立任务。任务可以在多任务调度开始前建立,也可以在其他任务的 执行过程中建立。但是在开始多任务调度前,必须建立至少一个任务。任务不能 由中断服务程序( i s r ) 建立。 o s t a s k c r e a t e ( ) 在建立函数时需要四个参数: t a s k 是指向任务代码的指针; p d a t a 是任务开始执行时,传递给任务的参数的指针; p t o s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消费者权益保护课件
- 医院空调系统运维管理手册
- 养老护理岗位流程标准化SOP
- 微生物自动化育种平台设计方案
- 泵的种类课件
- 药分论文毕业答辩
- 肾穿刺前后的护理
- 2026事业单位工勤技能-陕西-陕西无损探伤工五级(初级工)历年参考题库含答案详解
- 2026事业单位工勤技能-陕西-陕西公路养护工二级(技师)历年参考题库含答案详解
- 2026事业单位工勤技能-重庆-重庆电工四级(中级工)历年参考题库含答案详解
- 蜂王浆的课件
- 基于多因素协同的喷涂机器人喷枪轨迹优化策略与应用研究
- 药品qa培训课件
- 项目合作佣金协议书范本
- 农村土地承包合同书
- 艺术品交易市场建设合同
- UL1977标准中文版-2019连接器UL中文版标准
- 公共图书馆情绪疗愈空间设计研究:动因、现状与实现机制
- 肺部疾病护理查房
- 心理咨询中的认知重构技巧
- 第9章 语义分割
评论
0/150
提交评论