




已阅读5页,还剩61页未读, 继续免费阅读
(计算机科学与技术专业论文)无人机飞控系统vxworks平台研究与开发.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 隧蓿模块和任务的不断增加,及对系统实时性、可靠性受求的不断增强,单 任务单嬲| 户酶銎隅6 。2 2 已经不能满遐无太枫飞控系统的要求。嵌入式实时攮体系 统擎x 释r k 鑫具有良好的可靠佳和章越的窦时牲,麓完全满是飞攘系统的簧求,同 时v x w o r k s 友好的用户开发环境及大量的第三方支持能有效的减少开发时间,加 快开发趱程。本论文以“某无人槐飞攘计算机操撵蒸统平台嚣缀擀的课题为背景, 具捧讨论了¥x 淞薮s 在魏具体瑷瓣中的一些虚溺岛开发。 本文首先对v x 释。熊8 实时操作系统内核进行深入分析,包括任务管理、侄务 间通信、中断机制和时钟管理等内容,并相应对其进行了举例说明,为具体的 8 鼹开发爱程序移植奠定基璃。 荛人机飞控系统澍v x r k s 系统的启动速麓有严格要求,变牵通过详细分祈 v x w o r k 8 的启动过程殿各种启动映像,提出了一步弓j 导启动的快速启动方案,之 后又采用穰序动态期载的方法解决一步引导感动中存在的寤动酞像太小受限蕊 闻题,觚薅实瑗了¥x 釉雾荻s 酶抉速癌动。 本文的第三部分工作是v x w o r k 8 串行设备瓤动分析与设计,文中详细分析串 行设备驱动的三层结构,阐明了t 毫y 醣v 虚拟驱动的实现原理与方法,并重点讨 论了韶豁淫冬实现选耩中的关键一s 薹_ 鼹列判瞒缡穗体,鬣嚣给出了篱2 裁蛰凄 芯片审行设备驱动程序的具体实现。 本文解决了p c l 0 4 心8 6 环境下v x w o r k s 系统的快速启动、串行设备驱动设计 开发等阕趣,系统备顼性裁指撂均达到或超过顼隧要求,该课题已于2 0 0 7 霉重 胃逶避警方专家组的测试鹈验收。 关键字:飞控系统,v 鬟w o r k s ,板缀支持包,一次引导启动,宰行设备驱动 a b s 藿1 a c l d o s 6 。2 2o p e r a t 堍s y 瓣mc a n ts 撕s 移雠f e q u i 黼m e n to fu 斛s 她h tc o n t r o l 姆s t e ma l 辩a d 弘b e c a u 辩o f 幽ei n c 糟躺i 薹熏go ft a s k s 锵m o d n l e sa 耐f e q u i f e i n e 姓to f 潮莲一l i 蹴秘黼移。萎蘸越疆i 谤i 建u 越辗骶感霪雄繇l 释瓣。磐粼i 嚷鼯瓣穆蛐彘瓣醇 p e r 硒黜魏勰啪n o to 髓i y8 a t i s 每k 糖蚪i 蛳黼嫩o f 黼嬲b u ta l s 晒随t ke 姆i 鐾o f 娃l e d e v c l o p 揪m eb y 疳i e n d l y 【d ea 栅i o t so ft h i 树p 删s u p p o 熊s 。a g a i n s tm i s 壤躲k g 硒挂斌k s 群攀雕骥i s ;c 戮滔嚣s 德棼盘;v o l o p 躐嫩戮堪巍p 瘿i e 庭赫魅o fv x 骶r 埝瓣涵 印擎a s 糖篇s 蠡i g 融暾瓣ls y s 静辙翁黔md o s 巷。2 2 幻v x 酗舾。 f i r s t ,椭sp a p e ra n a l 辫st h ek e m e io fv x w - 0 她0 8 ,i n c i 戚鹪km 彻a 弦m e n t , e o 础n u n i e 激i 摊b e 撕鼹巍强;b ,i n 姥臌掌a n d6 m i 嵫m a l n g e m e l _ 曛,e t c 。m e a n w h i l e , 蝴p 燃瓣畦i l l 掇趣蛹塔涨s 弦巍巷i 糕器鞭g i ¥。纛娥i e 董塞萄迭l lb 霉 辙黔瞧l 隧j b 鹬稔勤 i a t e fw 静嫩, f l 瑶啦l n 擂o ls y 蹴mo fu a v h a s 穗8 戚c ts t a n 一雌i m el i m i t b yt h f o u 曲a n 鑫l y 豳 o f 妞b 黔蚪豁鑫耐l i 姆,雠蒜辨p 葭p 豫辩糕趣趣矮鞋i 攮娥* 却瓣e 心搬躐l s o 魏e 一蹴秘酾魄差:醢确e r 辫峨d p 毽徽赫镪s k 晒a d i l 壤獭艇d 弧毯簿翱墓略f 豁o l 端融 p r o b l e ml 鼬lm es i z eo f 酌o ti ma _ 学秘糟s t r i c t e di 媳。黼一s t e pb o o t ,鳓a st 1 0a c h i e 裙 q u i e ks 纨瞧一l 蛩。 啦毯瀑t 蠡v 玉震漱,鐾雕槭瓣蕊s 妞獬一l 疆弦f 魏l 垂c 激黼赛& v i 龆酾蝎 a 薹:融y z e s 豫缝d m i c a l 州瞻i p l e s 越l d 蛳薹e m e n t a t i o no fv i r t u a ld r 沁站r 谯y d r 甜l d 耄h e n d e s 嘶b e 8 誊量瓣k e yi s s u 铭i 殷d e 、,i c ed d v 燃d e s i g n i n g 。f i n a l 域m ed e v i e ed r i v e rp r o 黝 。薹s e 弱e 辫遮e 强l 羚l i 蒜魏楗。 y 咖献:腭8 ;v x 垧热,b s p ,o 一湘p b o o t ,u a 瓣曲v 妇“f 西北工业大学 学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读学位 期阀论文工作酶知谈产权单位属于嚣北工监大学。学校有权保留并向阂家有 关部门或机构送交论文的复印件和电子版。本人允许论文被查阅和借阅。学 校可以将本学位论文於全部或部分内容编入有关数据库进幸亍检索,可以采用 影印、缩印或扫描等复制手段保存和汇编本学位论文。同时本人保证,毕业 后结合学位论文研究课题再撰写的文章一律、注明作者单位为谣= 艺工鼗大学。 保密论文待解密后适用本声明。 学位论文作者签名: 年 指导教师躲象吨 渊年、月瑶 西北工业大学 学位论文原创性声明 秉承学校严谨鲶学风耪优良的科学道德,本入郑壅声明:所呈交的学位 论文,是本人在导师的指导下进行研究工作所取得的成果。尽我所知,除文 中已经注明弓 溺躲内容和致谢的地方外,本论文不包含任何箕缝个人或集体 已经公开发表或撰写过的研究成果,不包含本人或他人已申请学位或其它用 途使耀过酶残果。对本文酶磷究徽崮重要贡献鹃个人糯集体,均已在文中戳 明确方式标明。 本久学位论文与资料若有不实,愿意承摆一切楣关酶法律责任。 学位论文作者签名: 西北二r 业大学硕十学位论文第一章绪论 1 1 论文研究背景 第一章绪论 随着高新技术的发展,现代战争已经呈现出明显的无人化趋势。在现代高技 术条件下的陆、海、空、天、电“五维”一体化的战争中,无人军事装备几乎 渗透到战场空间的各个领域。现代无人机被广泛用于执行各种非杀伤性和软、硬 杀伤性任务。无人机正在从过去单一的侦察、预警等战斗支援作用向攻击杀伤作 用的方向发展,已成为影响作战进程的重要乃至关键性力量。在未来的信息战、 精确打击作战和“陆海空天电”的一体化战场中,多功能无人机必将成为一种高 效费比、攻防兼备的新概念武器。 近30 年来,随着微电子、通信、材料及推进系统等技术的迅猛发展,无人 机得到了长足的进步,加上无人机在2 0 世纪9 0 年代以来几场局部战争中的成功 战例,世界各国开始重视无人机的研究与发展。据不完全统计,目前,世界上 3 0 余个国家和地区已研制出了5 0 多种无人机,无人机型号超过3 0 0 余种,有5 5 个国家装备了无人机,但发展最快、水平最高的主要是美国和以色列。 美国在”全球作战”的战略指导下,已经计划发展重、中、轻型,远、中、近 程,配套成族、系列发展的多用途无人机装备,以满足不同战略、战役任务的需 要。其活动半径从几十到几千千米,留空时间从几小时到几十小时。其中最具代 表性的是“捕食者”、“先锋”、“猎人”和“全球鹰”。“全球鹰”高空长航时无人 飞机是美国目前和今后一段时期内重点发展的无人机,也是当今世界上最先进的 长航时远程无人侦察机。“全球鹰”留空时间达4 2 小时,每日可探测1 9 0 0 个点 目标。在2 0 0 1 年,“全球鹰”高空长航时无人机完成了越洋飞行,创造了航程和 飞行时问的世界纪录。“捕食者”中空长航时无人机在美国对阿富汗的空袭行动 中,首次使用挂载的导弹对阿富汗地面目标进行了实弹攻击,开创了无人机执行 对地攻击任务的先例。 我国研制无人机已有四十多年的历史,先后研制成功长空一号无人靶机系 列、长虹高空高速无人侦察机、t 一6 通用型无人机、z 一5 系列无人侦察机、 a s n 系列无人机等。开发出的数十种靶机和侦察型无人机,已能批量生产和装 备部队,广泛应用于昼夜空中侦察、战场监视,目标定位、校正火炮射击、战场 毁伤评估、边境巡逻等军事领域和航空摄影、地球物理勘探、灾情监测、海岸缉 私等民用领域。 西北工业大学硕士学 奇论文 第一章绪论 国内无人机的研究发展在总体设计、飞行控制、组合导航、中继数据链路系 统、传感器技术、图像传输、信息对抗与反对抗、发射回收、生产制造和部队使 用等诸多技术领域积累了一定的经验,具备一定的技术基础。但从总体上说,我 军无人机装备同发达国家相比仍有一定差距,还不能完全适应高技术战争的要 求。国内已有的无人机任务系统载重都不大,尚难满足电子对抗、预警、侦察等 大型任务系统的要求,平台技术难以满足无人作战飞机的高隐身、高机动能力的 要求,在气动力、发动机、轻质结构和高精度导航等方面基础技术薄弱。此外, 无人作战飞机需要的智能控制、决策和管理技术,空天基的信息网络技术,以 及相关的小型化高效精确制导武器等,也还都未能满足无人作战飞机系统的要求 【1 】。【3 】。 1 。2 论文任务来源及意义 本论文的研究任务来源于某研究所某型号无人机的飞控系统升级。飞控系统 是无人机系统的大脑和心脏,它的性能好坏直接决定了整个无人机性能的优劣。 操作系统平台作为飞控系统的关键组成部分,直接决定并影响了飞控系统的开发 流程及性能。某型号无人机原飞控系统为单任务单用户的d o s 6 2 2 ,但随着无人 机模块、任务的不断增加,及对系统可靠性要求的不断增强,d o s 6 2 2 显然已经 不能满足需求,急需更换一种更加高效的操作系统平台来打破这个性能提升的瓶 颈。 v x w b r l 【s 是一个具有可伸缩、可裁减和高可靠性多任务实时操作系统,并具 有良好的持续发展能力、高性能的内核以及友好的用户开发环境。它以其良好的 可靠性和卓越的实时性被广泛地应用于通信、军事、航空和航天等高精尖技术及 实时性要求极高的领域中,如卫星通信、军事演习、导弹制导和飞机导航等。采 用v x w 硎【s 实时操作系统代替d o s 6 2 2 不仅可以满足现阶段无人机任务需求, 及方便未来任务模块的增加,更重要的是为以后新型号的开发积累经验。 1 3 内容及要求 本课题的主要内容为v x w b r k s 下的b s p 开发、操作系统定制及启动过程的 优化等。按照具体硬件环境及飞控系统的要求,本课题的研究及开发主要分为以 下几点: 驱动程序的开发 2 西北丁业人学硕十学位论文 第一章绪论 飞控系统硬件环境采用盛博p c l 0 4 4 8 6 模块1 4 】,接口包括串行数据接口1 0 个;a d 转换通道5 6 路;d ,a 转换通道1 6 路;数字i o 各3 2 路,其他非标准 接口l o 个,其中8 路串行接口为用户在p c i 0 4 总线的基础上自己开发的串口 扩展板( 采用了两个s c 2 6 c 9 4 四扩一串口芯片) 。需对各接口操作进行v x w o r k s 下的驱动封装( 主要为用户自开发的串口扩展板) 。 操作系统定制 根据飞控系统的具体需求,对内核进行适当裁减和配置,减小占用的存储空 间,并且在实时性、多任务、稳定性方面达到飞控应用要求,添加新的组件完成 系统的定制任务。 启动要求 须满足专用p c l 0 4 4 8 6 飞控机的硬件要求,能够快速启动,启动时间小于5 秒;有出错处理和自动复位功能;该系统实时软件固化于电子盘中,须能开机自 行启动。 1 ,4 论文章节安排 根据课题内容及完成的工作,本文章节做如下安排: 第一章为绪论。主要讲述该课题的背景及意义,并概述了课题的相关内容及 具体要求。 第二章主要为v x w b d 【s 概述及其内核分析。主要分析了v x w 矾【s 内核中的 任务管理、任务间通信、中断机制、时钟管理等内容,并对其应用进行了举例说 明,为后续章节的快速启动及串行设备驱动开发提供理论基础。最后简单介绍了 v x w j r k s 集成开发环境t o m a d o 。 第三章为b s p 与开发环境的建立。这一章内容比较多也比较零碎,首先阐 述了b s p 概念、b s p 的组成及其开发流程等内容,之后介绍一些v x 、r l 【s 下b s p 开发的一些基础知识,如:v x w b r k s 的启动、程序映像、如何构建v x w b r k s 交 叉开发环境等等,最后讲述了本课题开发中的一些具体应用,如:d i s k o n c l l i p 盘的驱动加载,v x w o r k s 系统定制等内容。 第四章为v x w b r k s 快速启动的实现,是本文的两大核心之一。本章通过详 细分析v x w 6 r k s 的启动过程及各种启动映像,提出了一步引导启动的方法,并 通过程序动态加载的方法解决了一步引导启动中存在的启动映像大小受限的问 题。一步引导启动为冷启动,本章的最后部分提出了一种热启动解决方案并达到 更加迅捷的启动速度。 第五章为串行设备驱动程序开发。v x w j r l 【s 下串行驱动程序分为三层:i ,o 西北t 业大学硕士学位论文 第一章绪论 层、t t v d r v 虚拟驱动层和s c d r v 实际硬件驱动层。本章根据这三层第一节概述i o 层,同时也介绍了串行设备的总体框架;第二节讨论了何d r v 虚拟驱动层及该层 各函数的作用,并详细的讨论了该层与i ,o 层、s c d r v 实际硬件驱动层的关系; 第三节是本章的重点,讲述s c d n r 的具体实现,首先介绍s c 2 6 c 9 4 芯片的一些 特点及该芯片与飞控系统主控板p c l 0 4 4 8 6 接口设计,接着重点讨论了串行设备 的实现关键s cc h a n 设备描述符,并由此进一步讨论了t t y d r v 虚拟层的实现 原理。最后介绍驱动中重要函数的具体实现问题。 4 耨= 艺t 韭丈学硬士学静论文第二牵囊时操律鬈统魄成s 第二章实时操作系统¥x 瀚歉s v x 眦是美国磷耐辎蝌公司专船为嵌 戴微楚理器设计的一种嵩模块 化、高性能的实时多任务操作系统,它熊有很好的安全性、可靠性( 如冗余性【多 e 踟】、誊链性【检测、隔裹、恢复】以漫系统爰潘性热菇可裁减、超过1 8 个应用程序接口) 。 v x 訇蜘呔s 为程序员提供了离效的实时任务管理与调度、任务的阉步与通信、 内存管理、雾b 管蘧、时钟管理等基奉功能,犀时瞧包含了一些扩展模块,期湖 络系统、文件系统、虚拟内存系统、图形系统等。、仅w b d 媳适用于从俺单到复杂 酶产瑟设计:蕊簖拖霾系统捌爨际探测慧多种关键痰瘸,麓够在掰有常凳的撵豁 上运行。 v x 触实时操作系统由4 0 0 多个相对独立的、短小耩悍的层标模块组成, 溺户霹穰攥所开发瓣应用程序的纛要选释适当模块来裁剪耩配置v 巍黼系统, 系统的链接器可接应用程序的需要自动链接目标模块。这样,通过目标模块之间 酶按需组合,可得刘许多满足功能需求的应用系缝。魄鼢藤器操作系统的基本构 成模块如阕2 1 掰承。 圈黔lh - b 妹8 模块层次缩构 缡程a 爨在骗踊豳:上鳊翟裁像在操作系统编程一样,不登关,& 系统羹源 的管理发底层的具体实现方式,从而可以把主要正作放在应用系统的具体设计和 实现上。 5 西北丁业大学硕士学位论文第二章实时操作系统v x w o d ( s v x w b r l 【s 从1 9 8 3 年成功设计以来已经经过了广泛的验证,成功地应用于航 空、航天、医疗等关键领域,并且在嵌入式系统领域中占有大部分的市场份额, 足以证明其可靠性和先进性。 目前,v x w b r i 【s 已经成为事实上的工业标准和军用标准,大量的软硬件厂商 都提供v x w j r k s 的扩展组件,由于v x w b r k s 在各种c p u 硬件上提供了统一的接 口和一致的运行特性,应用程序不用任何改动就可以运行在各种c p u 上,为程 序员提供了一致的开发、运行环境,减少了重复劳动【5 j 。 2 2w i n d 内核 v x w o r l 【s 实时微内核( w i n d ) 主要包括基于优先级的任务调度、任务同步 和通信、中断处理、定时器和内存管理。 w i n d 的基本功能可以分为如下几大类: 任务管理; 事件机制和异步信号服务; 信号量服务; 消息队列服务; 内存管理; 中断服务程序; 时钟管理和定时器服务; 出错处理。 2 1 2 1 任务管理 ( 1 ) v x v v o n s 任务概念及特点 经过系统启动过程、硬件和上层软件组件的初始化完成后,v x w 硎娼进入多 任务环境。v x w o r k s 中最基本的调度单位分为两类,中断程序和任务。一般来说 中断是由事件( 硬件中断、异常等) 所引发的。由于事件的随机性,c p u 和v x w 研k s 只有被动的响应并处理发生的事件。而任务则完全是由v x w o r k s 内核根据任务 的优先级的大小、系统负载等情况调度执行。 v x w b r l 【s 中任务是一个动态的抽象对象,可在运行时创建和删除,是多任务 环境中最基本的执行单位。任务是多方面的综合,包括状态、堆栈、上下文和执 行代码等。每个创建的任务都对应一个内核数据结构,即任务控制块【t c b 】,用 于保存关键的动态信息。 6 西北t 业大学硕十学位论文第二章实时操作系统v x w o r k s 任务控制块【t b 】为一个数据结构,内核用来表示和控制任务。每个创建的 任务,内核都会为它分配一个t c b 。t c b 中包含硬件相关的寄存器( 包括p c 和s p ) 、异常信息等。另外还包括与硬件无关的一些参数,如名称、选项、调度 相关、函数、h o o k 、栈、任务变量、标准i o 和环境变量等。t c b 是v x w b r k s 中最重要的数据结构,可以通过查看t a s l 【l i b h ,了解t c b 的具体定义。 本质上说v x w b d 【s 的任务就是我们常说的进程,从下面的内容来看更加类 似于线程的概念。v x w b r i ( s 的w d 微内核采取单一实地址空间模式,整个系 统及所有应用任务共享同一个地址空间,并都运行在c p u 最高级别的系统模式 ( 具有更好的系统性能) ,而不区分核心态和用户态。其优势在于: 任务切换时不需要进行虚拟地址空间的切换; 任务问可以直接共享变量,不需要通过内核在不同的地址空间复制数 据; 系统调用时不需要在核心态和用户态之间切换,相当于直接的函数调 用。 所有任务都运行于同一个地址空间,这也是v x w o r l 【s 高实时性的原因之一。 尤其对于本课题使用的x 8 6 系列处理器来说,段寄存器的重新装载远远慢于普 通指令的执行速度,单一地址空间有效避免任务切换时段寄存器的重新装载,大 大提高了任务的切换速度。 当然,由于( 1 ) v x w 矾( s 任务和内核具有相同的权限,都能执行处理器所 支持的全部指令;( 2 ) 所有任务( 包括内核) 共享同一实地址空间( 不进行虚拟 内存管理) ,不同任务的数据没有任何保护机制。这两个特性使得v x w o r l 【s 具有 很高的效率,但同时,由于v x w b r l 蹬任务执行指令和访问内存没有任何的约束 和保护,使得某个任务的错误极易造成严重的影响,因而对代码的质量提出了更 高的要求【5 】。 1 2 ) 任务调度策略阿 多任务调度须采用一种调度算法来分配c p u 给就绪态任务。w i n d 内核采用 基于优先级的抢占式调度法作为它的缺省策略,同时它也提供了时间片轮转调度 法。 基于优先级的抢占式调度,它具有很多优点。这种调度方法为每个任务指定 不同的优先级,没有处于悬置或休眠态的最高优先级任务将一直运行下去。当更 高优先级的任务由就绪态进入运行时,系统内核立即保存当前任务的上下文,切 换到更高优先级的任务。 w i n d 内核划分优先级为2 5 6 级( o 2 5 5 ) :优先级o 为最高优先级,优先级 2 5 5 为最低。当任务被创建时,系统根据给定值分配任务优先级。然而,优先级 7 西北工业大学硕士学位论文 第二章实时操作系统v x w o n 也可以是动态的,它们能在系统运行时被用户使用系统调用t 觞l 【p r i o r i t y s c t ( ) 【7 1 来 加以改变,但不能在运行时被操作系统所改变。图2 2 展示了一个基于优先级的 抢占式调度的例子。 高 低 优 先 级 时间 注: 罗表示抢占 i 表示任务完成 图2 _ 2基于优先级调度实倒 轮转调度法分配给处于就绪态的每个同优先级的任务一个相同的执行时间 片。时间片的长度可由系统调用k e m e i 凰m e s l i c e ( ) l7 】通过输入参数值来指定。很 明显,每个任务都包含一个运行时间计数器,任务每运行一个时间滴答此计数器 加1 。任务的时间片用完之后,就进行任务切换:停止执行当前正在运行的任务, 并将它放入就绪队列队列尾部,对运行时间计数器清零,并开始执行就绪队列中 的下一个任务。当运行任务被更高优先级任务抢占时,此任务的运行时间计数器 被保存,直到该任务下次运行时。图2 3 是一个轮转调度及优先级调度结合的实 例。 高 低 注: 乌表示抢占,l 表示任务完成。 图2 - 3 轮转调度实例 1 3 l 抢占禁止 w i n d 内核可通过调用t a s k l o c k o 和t a s k u n l o c k ( ) 来使调度器起作用和失效。 当一个任务调用t a s k l o c k ( ) 使调度器失效,任务在接下来的运行中没有基于优先 西北工业大学硕十学伊论文第二章实时操作系统v x w o r k s 级的抢占发生。然而,如果任务被阻塞或是悬置时,调度器从就绪队列中取出最 高优先级的任务运行。当设置抢占禁止的任务解除阻塞,再次开始运行时,抢占 又被禁止。这种抢占禁止防止任务的切换,但对中断处理不起作用。 1 4 ) 异常处理 异常是指程序代码和数据的出错,如非法指令、总线或地址错误、被零除等。 v x w j r l 【s 异常处理过程一般是将引起异常的任务休眠,保存任务在异常出错处的 状态值,内核和其它任务继续执行。用户可借助t 0 m a d o 开发工具,查看当前任 务状态,从而确定被休眠的任务。 1 5 ) 任务栈 每个任务都有独立的栈空间,栈用于任务的函数调用,分配自动变量和函数 返回值。任务控制块w i n dt c b 记录了位置和大小等栈信息。w i n dt c b 本身 放在任务栈开始部分。 任务栈大小的设置必须合理,太大会浪费内存空间,太小可能引起栈溢出。 在v x w 触s 中,所有任务在同一地址空间运行,任务之间没有任何地址保护机 制,因此栈溢出会引起连锁反应,可能导致系统崩溃,或者出现难以调试的意外 结果。 栈大小设置没有可以套用的公式,一般凭经验设置一个较大的值,以存储空 间换取可靠性。分析程序所有可能的分支和调用,从而计算出需要的栈大小的方 法,从理论上给出了最佳的栈设置方案,但是目前好像还没有这样的自动化分析 工具,靠程序员手工计算似乎不大可行。现在存储器越来越便宜,因此许多应用 中,人们更趋向于使用大存储器解决问题。对可靠性要求高的应用,仍然需要充 分分析和测试栈大小设置是否足够。栈大小在t a s k s p a w n ( ) 创建任务时指定, t a s k s p a w n 函数创建确定的栈大小不能在运行时更改。 所有函数调用都会使用栈,将栈帧格式( 觑衄e ) 压入栈中。栈帧包括传给函数 的参数、函数的返回值、函数返回地址等。所以要确定该任务中函数调用链的最 大深度和传递参数的个数。 有时我们在考虑栈大小的时候还需要考虑中断。某些处理器( 如我们所用的 x 8 6 ) 没有中断栈指针。因此,所有中断使用当前运行任务的栈。中断会随机在 任意任务中发生,所以需要保证每个任务有足够的栈空间来满足自己的需要,以 及最多中断嵌套的需要。 我们可以使用v x w 础【s 提供的辅助程序来确定任务栈的大小,比如t o m a d o b m w s e r 。以及s h e u 中使用的c h e c k s t a c k 命令。它们会显示任务运行中使用栈的 最大值。用户可以根据最大值来确定任务栈的大小,需要考虑冗余。 9 西北工业大学硕士学位论文第二章实时操作系统v x w o r k s 1 6 l 任务函数库 函数库t a s k l i b 【7 l 包含了任务创建、删除、启动和停止等功能的内核函数。这 里只对常用的t a s k s p a w n 函数进行介绍。 创建和启动任务函数t 嬲峪p a w n ii n tt a s k s p a w n ( 瑚m e ,p r i o r i 吼o p t i o 玛s t a c k s i z e ,e n 扛y n ,a r g o ,a r 9 9 ) 。| t a s k s p a w n 的参数如表2 1 所示: 表2 1t a s k s p m 参数列表 n a m e 。 字符串任务名称 一 ! p n o n 哆任务优先级,从o ( 最高) 到2 5 5 ( 最低) o p t l o n任务选项指定任务是否使用浮点,是否断点有效等 s t k s i z e任务栈大小,创建后就不再变化,可以使用b r o w s e r 检测栈的使用 e n 仕v p t任务创建后执行的函数 a r g o a r 9 9传给e n t r y p t 函数l o 个4 字节参数,将参数强制转换为整数类型避免 编译错误 t a s k s p a w n ( ) 实现实际上分两步:( 1 ) 分配任务空间,初始化w i n dt c b ;( 2 ) 激活任务。其内部实现就是调用t a s k i i l i “) 函数和t a s k a 硎v a t e ( ) 函数来完成的,相 当于u n 中的f | o r k + e x c c 。t 嬲k s p 鲫v n 函数返回任务标志i d ,其他t 船k l i b 函 数使用标志i d 来引用任务,任务i d 其实是指向任务控制块【t c b 】的指针。 咖p t 是创建任务的主函数调用。任务在主函数中一般都有一个无限循环, 因为大多数应用产品都是上电后一直运行。主函数的形式如下: 注意主函数名禁止使用“m a i n ”,否则会和系统冲突。任务使用主函数指针 为入口指针,同一个函数可以作为多个任务的入口函数,但是要注意函数必须是 可以重入的。 主函数从t a s k s pa _ w n 可以接收最多l o 个4 字节参数,不过不用完全使用, 可根据需要选择参数个数。 2 2 2 任务间通信 v x w o r l 【s 支持各种任务间通信机制,提供了多样的任务间通信方式,主要有 如下几种: l o 西北丁业大学硕十学位论文第二章实时操作系统v x w o r k s 共享内存,主要是数据的共享; 信号量,用于基本的互斥和任务同步; 消息队列和管道,单c p u 的消息传送; s o c k e t 和远程过程调用,用于网络问任务消息传送; 二进制信号,用于异常处理。 1 1 ) 共享存储区 v x w b r k s 使用扁平【n a t 】内存模式,采用单一线性实地址空间,也就是说所有 的任务使用一个内存映射空间,因此存放全局变量的内存可以看成是共享的内 存。任一程序中定义的各种类型的全局变量,都可以被所有任务直接访问【5 1 。 内存共享是任务间通信最直接、最明显的方法,但和多任务概念是冲突的, 会使任务间的耦合过紧,而增加系统的复杂度。另外因为多任务调度,各线程对 共享内存的访问可能会出现冲突,所以实际编程中多采用信号量来保护共享内存 资源。对于临界资源,应使用互斥型信号量来保护。原则上,应该尽量少使用这 种通信方式,除非涉及必要并且实现方法清晰。图2 4 为多个任务访问共享数据 示意。 图2 4共享内存机制 1 2 ) 信号量 v x w 础( s 信号量提供最快速的任务问通信机制,它主要用于解决任务间的互 斥和同步。针对不同类型的问题,有以下三种信号量【5 】【8 】: 1 ) 二进制信号量 二进制信号量也称为二位信号量,或开关信号量,可看作计数值为1 的特殊 计数信号量,使用最快捷、最广泛,可用于共享资源互斥和事件同步。由于 v x w b d 【s 有专门的互斥信号量用于资源保护,二进制信号量多用于线程同步。 使用二进制信号量,任务在等待事件时处于阻塞状态,不用消耗c p u 时间 来查询事件状态。事件由中断或任务异步触发。使用时,先用溯n b c r e a t e 创建 信号量,初始值设为s e me m p l y ( o ) ,以等待事件发生;用m 蚀e 来判断事件 状态;用辩m g i v e 来通知事件发生。 两北工业大学硕十学位论文第二章实时操作系统v x w o r l ( s 当调用m g i v e 时,如果有任务在等待这个信号量,则只有该信号量任务等 待队列的第一个任务恢复到r e a d y 状态,信号量不可再用;如果没有任务等待这 个信号量,则信号量转为可用状态。如果信号量已处于可用状态,再调用s 锄g i v e 则不起作用;当调用s 锄f l u s h 时,所有等待该信号量的任务都恢复到r e a d y 状态, 但信号量的状态不变化;调用s 锄1 钛e 时,若信号量可用,调用立即返回,任务 不会阻塞而继续运行,信号量变为不可用;若信号量不可用,任务就会阻塞在调 用处等待,当信号量可用,任务变为r c a d y ,m 1 酞e 调用返回0 k ,任务继续运 行( 任务本身感觉不到这个停顿) 。也可能信号量一直不可用,直到超时,s 啪1 酞e 调用则返回e t o r 。 以下是使用二进制信号量的框架: 互斥信号量 主要用于优先级继承、安全删除和回溯。互斥信号量是一种特殊的二进制信 号量,两者基本行为相同,但有如下限制:互斥信号量只能用于互斥操作,而不 能作为同步机制;只能由获取信号量的任务来释放它;不能在终端上下文中使用; 不能使用m f l u s h 函数。二进制信号量和计数信号量也可以用于互斥操作,而 互斥信号量是专门设计用来解决互斥中出现的3 个常见的问题。 互斥信号量可以被嵌套获取。也就是拥有该信号量的任务可以多次调用 s c i i l l 酞e ,而不会被阻塞。但放弃使用权时,任务必须调用同样数目的 s e m g i v e 。 当任务t a 拥有删除安全【d e l e t e 鼢f e 】互斥信号量时( 创建信号量时, o p t i o l l s 选项中设了s e md e l e t es a f e ) ,任务t b 删除此信号量时会 被阻塞,直到认放弃该信号量。因此认正在操作资源时是安全的。 反转安全【i n v e r s i o n - s a f e 】。互斥信号量提供优先级继承属性,能防止所谓 的优先级反转问题。拥有该信号量的任务会l 临时提升优先级,级别与等 待该信号量任务中的最高级别相同,放弃信号量后优先级则复原。这样 可以防止如下情况出现:高优先级任务等待低优先级任务拥有的信号 量;而低任务又被中优先级任务抢占,不能执行信号量释放。 用”s e mqp 砌o t y i s e mi n v e r s l 0 ns a f e ”组合选项创建这种信 号量。 实现框架: i s e m _ i dm u x s e m 将其说明为全局变量,使所有使用它的任务都能访问到它 l l ! 竺坠q 一 l 1 2 西北丁业丈学硕上学位论文第二章实时操作系统v x w o r k s 3 ) 计数信号量 和二进制信号量相比,计数信号量只是能够表示更多的状态,因而用来解决 “多生产者消费者”问题。二进制信号量为“空”相当于计数信号量为o 。 在对计数信号量执行1 a k e 操作时,如果信号量大于o ,则任务得到信号量, 信号量减1 ;如果信号量为o ,则任务阻塞,并添加任务i d 到阻塞队列。在对计 数信号量执行g i v e 操作时,如果阻塞队列中有任务,则唤醒一个;否则信号量 计数加l 。 1 3 ) 消息队列 便捷的信号量能解决很多任务间协调问题,但是交换的信息有限,而共享内 存方式又不标准,消息队列作为一种折中方式用于线程间信息交换。消息队列可 以由多个任务读写,交换信息的基本单位为消息,消息队列中可以缓冲多个消息 单元,各消息单元可以有不同的长度,图2 5 1 9 】为消息队列一种简单的应用模型: “生产者消费者”。其中a 为生产者,b 为消费者。 图2 _ 5洧息队列通信 而应用中较多的一种“客户- 服务器”模型中如图2 6 ,使用多个消息队列维 护通信。服务器创建请求队列,并侦听队列上的客户请求;客户将请求放入请求 队列并在各自创建的响应队列上等待从服务器取回,这样一来两个任务间就实现 了全双工通信。另外消息队列允许许多的消息排队,而且每个消息可以有不同的 西北工业大学硕十学位论文第二章实时操作系统v x w o r l ( s 长度,在这一点上,消息队列要比传统的管道优越,因为传统管道中的数据仅仅 是一个数据流( 实际上在v x w 硎l ( s 中,管道中的数据由消息组成,这一点不同 于传统管道) 。 图2 _ 6 任务间全双工信息传送 1 4 l 管道 管道用v x w 础( s 的i ,o 系统提供一种灵活的消息传送机制,它是受驱动器 p i p c d r v ( v x w o r l 【s 所提供) 管理的虚拟i ,0 设备。任务能调用标准的i o 函数打 开、读出、写入管道。当任务试图从一个空的管道中读取数据,或向一个满的管 道中写入数据时,任务被阻塞。和消息队列类似,i s r 能向管道中写入信息,但 不能从中读取。像i o 设备一样,管道有一个消息队列所没有的优势一- s e l e d 函 数支持,任务等待一系列i o 设备上的数据。 v x w o r k s 管道其实是通过管道驱动p i p e d r v 对消息队列采用系统的方式 进行简单的封装,虚拟成i ,o 设备,如图2 7 所示。v x w 硎( s 保证管道的i o 原 子性,显然v x w 破s 管道承载的信息量受内部消息队列大小的限制。 图2 - 7管道i p c 管道是消息队列的替代品,与消息队列不同的是,管道使用了v x w b r k s 系 统的i ,o 系统。管道是由驱动p i p e d r v 提供的虚拟i ,o 设备,由函数p i p e d l e 、,c ”e a t e o 创建管道设备。管道的底层实现同样使用了消息队列,所以在创建一个管道设备 的时候,要指出消息队列的最大数目和最大长度,以便系统为消息队列分配必要 的缓冲区。 和直接的v x w b r l 【s 消息队列相比,v x w b r k s 管道具有如下一致的地方: 当任务试图从一个空的管道读取数据,或向一个满的管道中写入数据 1 4 西北t 业大学硕士学位论文第二章实时操作系统v x w o r k s 时,任务被阻塞; 支持中断服务程序向管道中写入信息,驱动程序判断调用环境属于中断 则不阻塞,即使没有可用的缓冲区,但是不能从管道中读取,如同中断 服务程序不能对消息队列做接收操作一样; , 往管道中写入数据时,一次写入的数据不能超出消息队列最大允许的消 息长度。 另外,v x w j r k s 管道比消息队列有如下不足: 管道的效率不如消息队列高。需要将应用程序中标准的i o 调用映射到 p i p c d n 驱动程序函数,并最终由消息队列函数实现; 管道会稍微多占用一些内存资源和i ,o 系统资源; 不支持消息的优先级控制,消息队列支持两级消息优先级和阻塞任务队 列优先级; 管道不支持超时控制; 尽管如此,管道依然有其价值,有时候用管道更简单灵活,一个明显的优势 就是支持l e c t ( ) ,这样任务可以同时等待在包括管道在内的一系列设备上 的数据,这种模式可以简化编程。此外,p i p e d r v 提供的几个i ,o 控制命令也比 较有用。 2 - 2 3 中断机制 1 1 ) v 删o r b 中断响应过程 v x w 破s 运行在保护模式下。在v x w b r l ( s 中,可以采用i m c o 蛐e c t 关联中 断服务程序至某个中断向量,然而i m c o 加e c t 并不是直接将用户设计的i s r 与 中断门描述符相关联,而是对它加了一层封装,然后将封装代码的内存首地址与 中断门描述符相关联,中断响应过程如图2 8 所示。 西北t 业大学硕士学位论文第二章实时操作系统v x w o r k s 中断描述符表 图2 - 8中断响应过程 实时系统中硬件中断处理是至关重要的,因为它是以中断方式通知系统外部 事件的发生。为了快速响应中断,中断服务程序i s r 运行在特定的空间,不同于 其它任何任务,因此中断处理没有任务的上下文切换。 1 2 ) 与中断相关的函数 在v x w b r l ( s 系统中,中断响应除了需要保存通常的寄存器环境外,还需要 完成栈切换等;另外还要求中断入口运行时绑定,平台移植性,中断嵌套等,所 以v x w b r k s 本身也参与中断封装的管理。v x w b r l 【s 提供i n t l i b 和i n 认r c h l i b ; e x e l i b 和e x e a r c h l i b l 6 】库用于中断的上层管理。用户常用的函数如表2 2 所示: 表2 - 2与中断相关函数 函数描述 。 i n t c o 蛐e c t o将一个c 语言的函数连接到中断上 i n t c o m e x t ( )如果当前执行状态为中断调用则返回t r u e i m l c v e l s e t ( ) 设置处理器的中断屏蔽级别 i n t l o c k ( ) 禁用指定的中断 i n t u i l l o c k ( ) 使能指定的中断 i n t v e c b a s e s e t o设置向量表基地址 i n t v e c b a s c g e t o 获得向量表基地址 i n t v e c s e t ( ) 设置异常向量 i m v e c g “) 获取异常向量 1 6 西魏了避大学硬 擎缓论文第二掌突辫操貉系绕¥嚣溉瞧s 1 3 l 中断服务程序的特殊限制 诲多瓿习融妇黼数在孛甄服务程廖孛是禁悫健属韵。霉| 起这些限制是霸惫 中斯服势程序不在一个溺定的任务上下文孛执行,丽且没有任务控翻块,所有中 断服务程序必须共享一个单独的堆栈。由于这个原因,中断服务程序中禁此使用 会弓l 起隧寨的函数。假设在中断服务摆序中试黧谤阀一个姻设盏,但是这个姻 设备簿不霹耀,系统雨棱将把调嗣者切换裂挂越状态,这样将弓| 起孛觜鹃攘起, 而中断是没有固定的上下文的,从丽导致系统崩溃。 在v x w o 攮s 中存储管理函数,m a l l o c ( ) 和赫的都要求获得信号量,而获取 僖号量瀚操律将会孽l 裁辍塞,所以在中凝溅务糕孝书不可戮嫠用露穰l l 鳓鄯翻哟i 函数。这个限制祷健中断服务程序幂能调用任何用于创建或删除的函数。 如上所述,中断服务程序不能执行i o 操作,虽然系统本身没有内在约 衷,毽是大多数酶弘设备驱动糕序将会阻塞等待设备的调羽者,这将使阕剽任 务上下文,丽中断臌势程序没有鹾宠的上下文,最终将会导蘩系统的阻塞或者崩 溃。由于这些限制,v x w b 如中专门为中断服务程序设计了管道设备,在中断服 务程序皆琢以执行管邀设备的写操作。 羼时为了给中断激务程痔提供输鬻功麓,冁黼孛瓣供了l 嘻翔瘁,这 个库中的蕊数允许系统任务打印文本信息,它题中断服务程序中最常用的输出手 段。我们常用的l o g m s 9 0 函数就是这个库中的。 在默认麓情嚣下孛断服务翟序瀚舅一个照铡是不允许使用调麓浮点协处理 器的函数。这是困兔在v x w 淑s 紫,勰:c 硼稳铭国建立的中断服务程序不麓傈存 并恢复浮点寄存器。如果一定要在中断服务程序中使用浮点运算的话,必须使用 酃砷峨虬掩库中的避数显式的保存和恢复浮点协处理寄存器降l 。 艨了上面提到熬限制磐,衙蒋冀它豹辗黼痒都可戳镬爝。 2 - 2 4 时钟管理 骗t 袖馥s 使用3 个硬件定时器盛褥p c 掩壤辩赫模块巾躲鐾2 5 4 撵;蒹赛定时 器) ,分别用于系统时钟,辅助时钟和时间戳。由于使用的范嗣与作用不阍,三 个定时器具有不同的时间精度。系统时钟作为系统内棱任务调度的基准,频率不 麓过佼或过馒,管感将会簿低系统皴率,一般谈蹇魏速率毙l 姻次,秒,或者是 6 0 次,秒。那么对于基于系统时钟襄现的碱d 嘴和p o s 檬准对钟捧j 支持来说, 其精度大概就在l o m 黪左右( 具体出系统时钟速率决定) 。辅助时钟( a u x i “a 姆e l o d ) 使用单獭酶硬件定瞬器寨理,其精度主要虫硬髂定时器决定,毽显然其耩灌要比 系统时瓣离麴多。魄较特别的是时闻戳鞠m l e 翩p x 它是个硬件时钟计数器, 1 7 西北工业大学硕十学位论文第二章实时操作系统v x w o r k s 系统开始运行即开始计数,当每次系统时钟中断时,其计数器便会清零。由于 t i m e s t 锄p 以硬件定时器的嘀嗒为基准计数,且没有中断负荷,所以其精度相当 高。下面我们将具体介绍几个定时延时机制: 1 1 l 系统时钟 v x w b r l 湛系统必须激活一个时钟中断,来调用t i c k a n n o 埘c e 函数,作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深基坑堆场成品保护管理措施
- 废弃物处理安全生产技术措施
- 并发症发生率研究-第1篇-洞察及研究
- 稀土永磁合金快淬工职业技能考核试卷及答案
- 胶基糖制造工岗位操作技能考核试卷及答案
- 粮食储存运输管理办法
- 多层次分析技术-洞察及研究
- 品牌宣传推广计划书线上线下宣传策略整合版
- 医疗产品供应链管理服务协议
- 可爱的小宝宝100字(11篇)
- 门禁系统施工方案
- 财务大数据基础(第二版)课件 项目一 财务大数据认知
- 快餐店食品处理操作流程
- 安全教育培训记录表三篇
- 高中数学开学第一课课件(初高中衔接)
- 人教版(2024)七年级上册数学第一次月考测试卷(含答案)
- DL∕T 1804-2018 水轮发电机组振动摆度装置技术条件
- 新版学校班主任工作手册模板
- 国家公祭日成品课件
- 八年级下册英语补全对话及答案
- 大便失禁课件
评论
0/150
提交评论