嵌入式实时多任务操作系统
概述1-嵌入式实时操作系统基本特征

进入了被中断状态。
3.多任务系统 10
μC/OS-Ⅱ状态切换的函数: μC/OS-Ⅱ中一些函数提供的服务,这些函数使任务从一种状态变到另一种状态。
3.多任务系统 11
任务切换
Context Switch 实际含义是任务切换,或CPU寄存器内容切换。
概述1-嵌入式实时操作系统特征
教学内容
2
1. 实时操作系统(RTOS)基本特征 2. 前后台系统 3. 多任务系统
1.实时操作系统(RTOS)基本特征 3
基本特征
高效的任务管理
1.支持多任务 2.优先级管理 3.任务调度:优先级的抢占式调度、时间片轮转调度 4.支持快速而确定的上下文切换
快速灵活的任务间通信
任务的优先级低,还暂时不能运行。
运行态:是指该任务掌握了CPU的控制权,正在运行中。
挂起状态:也可以叫做等待事件态 WAITING,指该任务在等待,等待某一事件的发
生, (例如等待某外设的 I/O操作,等待某共享资源由暂不能使用变成能使用状态, 等 待定时脉冲的到来或等待超时信号的到来以结束目前的等任务系统 8
任务的状态 每个任务都处在以下5种状态之一的状态
休眠态 就绪态 运行态 挂起态(等待某一事件发生) 被中断态
3.多任务系统 9
休眠态:相当于该任务驻留在内存中,但并不被多任务内核所调度。
就绪:意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的
任务切换过程增加了应用程序的额外负荷。CPU的内部寄存器越多,额外 负荷就越重。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。
3.多任务系统 6
Nucleus嵌入式实时操作系统

目录一、M entor Graphics ESD公司简介二、N ucleus操作系统的特点三、源代码操作系统的优势四、Nucleus操作系统开发环境的配置五、Nucleus的网络浏览器(WebBrowse)介绍六、Nucleus操作系统的应用领域及在国内外的用户七、Nucleus操作系统的成功案例1、Nucleus操作系统在通讯设备上的应用●以Nucleus操作系统为核心的路由器方案2、Nucleus操作系统在消费类电子产品上的应用●Nucleus操作系统和MPC860平台开发机顶盒●N ucleus操作系统与ARM7构成POS系统●N ucleus操作系统与ARM7构成PDA3、Nucleus操作系统在医疗仪器上的应用4、Nucleus操作系统在电力系统上的应用5、Nucleus操作系统在美国军方的应用举例一、Mentor Graphics ESD公司简介●公司全称:Mentor Graphics Embedded Software Division●Mentor Graphics Group成立于1981年,全球雇员超过4000人,为全球领先的EDA工具提供商;ESD是Mentor Graphics公司内专注于嵌入式开发工具的部门,产品包括:Nucleus RTOS, CodeBench IDE, Inflexion UI Design Tools等,全球雇员超过200人;●ESD总部美国Alabama州的Mobile●在美国的加利佛尼亚,德克萨斯,马塞诸塞,佛罗里达以及田纳西等设有分支机构●在英国、法国和德国设有分支机构●在日本、韩国、澳大利亚、台湾、中国、意大利和俄罗斯等国设有代理商●1990年推出Nucleus实时多任务操作系统●1993年成为MOTOROLA推荐的四大RTOS厂商之一●1994年推出全球唯一的MNT虚拟开发平台●1994年推出全球唯一的VNET网络化虚拟平台●1994年成功地推出Java和RTOS产品●1995年成为全球第一大源代码RTOS厂商●1996年选定旋极科技公司为其中国大陆及香港地区独家代理商二、Nucleus PLUS的特点:Nucleus PLUS 是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSIC写成的,因此非常便于移植并能够支持大多数类型的处理器。
嵌入式系统中的实时操作系统研究与应用

嵌入式系统中的实时操作系统研究与应用嵌入式系统是指被嵌入在其他设备中的电子计算系统。
这种系统通常具有小巧、低功耗、低成本等特点。
嵌入式系统被广泛运用于智能家居、智能交通、医疗器械、工业控制等领域。
嵌入式系统最重要的特点之一就是实时性。
实时性是指系统能够在预定的时间内,按照既定的要求完成任务。
因此,在嵌入式系统中,实时操作系统是非常重要的。
本文将围绕嵌入式系统中的实时操作系统进行研究探讨。
一、实时操作系统概述实时操作系统(RTOS)是嵌入式系统中最常见的操作系统类型之一。
RTOS是一种使得系统能够及时响应外部事件,按时完成任务的操作系统。
它具有高度的可预测性和可靠性。
RTOS常被运用于需要实时响应的设备中,如航空飞行控制系统、医疗监测设备、智能交通系统等。
与一般的操作系统不同,RTOS需要具备以下特点:1.响应速度快:实时操作系统需要及时响应任务,而且响应时间必须小于任务的时间限制。
2.可预测性:实时操作系统需要保证任务在规定时间内完成,因此必须具有可预测性。
3.可靠性:RTOS需要保证任务的可靠性,确保任务能够按时完成,不出错。
4.实时性:RTOS需要保证系统实时性,能够在规定时间内完成任务。
二、实时系统的分类按照实时性的要求,实时系统可以分为硬实时系统和软实时系统。
硬实时系统:硬实时系统对任务的响应时间有极高的要求,任务必须在严格的时间限制内完成。
举例来说,发生在航空飞行控制系统中的事件必须在极短的时间内得到响应,否则将带来灾难性的后果。
软实时系统:软实时系统对任务的响应时间要求有所放宽,任务可以在更广泛的时间范围内完成。
虽然并不是所有任务都必须在规定时间内得到响应,但是任务响应的时间超出一定的范围,也会对系统造成灾难性的后果。
通常,软实时系统和硬实时系统一同出现在一个复杂的嵌入式系统中。
三、实时操作系统的调度机制实时操作系统可以采用不同的调度策略。
常见的调度策略如下:1.先进先出调度(FIFO):按照任务的到来顺序进行调度。
嵌入式实时操作系统简介

嵌入式实时操作系统简介嵌入式实时操作系统简介一:引言嵌入式实时操作系统(RTOS)是一类特殊的操作系统,用于控制和管理嵌入式系统中的实时任务。
本文将介绍嵌入式实时操作系统的基本概念、特点和应用领域。
二:嵌入式实时操作系统的定义1. 实时操作系统的概念实时操作系统是一种能够处理实时任务的操作系统。
实时任务是指必须在严格的时间约束内完成的任务,例如航空航天、工业自动化和医疗设备等领域的应用。
2. 嵌入式实时操作系统的特点嵌入式实时操作系统相比于通用操作系统具有以下特点:- 实时性:能够满足严格的时间要求,保证实时任务的及时响应。
- 可靠性:具备高可用性和容错能力,能够保证系统的稳定运行。
- 精简性:占用资源少,适应嵌入式系统的有限硬件资源。
- 可定制性:能够根据具体应用需求进行定制和优化。
三:嵌入式实时操作系统的体系结构1. 内核嵌入式实时操作系统的核心部分,负责任务和资源管理、中断处理和调度算法等。
- 任务管理:包括任务的创建、删除、挂起和恢复等。
- 资源管理:包括内存、文件系统、网络资源等的管理。
- 中断处理:负责中断的响应和处理。
- 调度算法:根据任务的优先级和调度策略进行任务的调度。
2. 设备管理嵌入式实时操作系统需要与各种外设进行通信和交互,设备管理模块负责管理设备驱动、中断处理和设备的抽象接口等。
3. 系统服务提供一系列系统服务,例如时钟管理、内存管理和文件系统等,以支持应用程序的运行。
四:嵌入式实时操作系统的应用领域嵌入式实时操作系统广泛应用于以下领域:1. 工业自动化:用于控制和监控工业设备和生产过程。
2. 航空航天:用于飞行控制、导航和通信系统。
3. 交通运输:用于车辆控制和交通管理。
4. 医疗设备:用于医疗仪器和设备控制和数据处理。
附件:本文档附带示例代码和案例分析供参考。
注释:1. 实时任务:Real-Time Task,简称RTT。
2. 嵌入式系统:Embedded System,简称ES。
嵌入式系统中的实时操作系统

嵌入式系统中的实时操作系统嵌入式系统是一种特殊的计算机系统,通常嵌入在其他设备中,用于控制和管理设备的功能。
在嵌入式系统中,实时操作系统(RTOS)起着至关重要的作用。
本文将介绍嵌入式系统中的实时操作系统的概念、特点以及在嵌入式开发中的应用。
一、实时操作系统的概念实时操作系统是一种专为嵌入式系统设计的操作系统,具有高度可预测性和响应性能。
它的主要特点是能够在严格的时间约束下处理任务,并能够及时响应外部事件。
实时操作系统分为硬实时系统和软实时系统两种类型。
硬实时系统要求任务必须在预定的时间内完成,不能有任何延迟。
这种系统广泛应用于一些对时间要求非常严格的领域,例如航空航天和医疗设备。
软实时系统对任务的时间要求相对较轻松,任务可以在一定范围内有一定的延迟。
这种系统适用于一些对时间要求较为宽松的场景,例如智能家居和工业控制。
二、实时操作系统的特点1.提供任务调度和管理:实时操作系统能够根据任务的优先级和时间要求进行任务的调度和管理,确保高优先级任务能够及时得到处理。
2.保证任务的及时响应:实时操作系统能够在严格的时间约束下响应任务,确保任务按时完成,并能够实时处理外部事件。
3.可靠性和稳定性:实时操作系统需要具备高度的可靠性和稳定性,以确保嵌入式系统的正常运行。
4.低内存占用和低功耗:嵌入式系统通常具有资源有限的特点,实时操作系统需要占用较少的内存,并尽量降低功耗,以提高系统的效率和续航时间。
三、实时操作系统在嵌入式开发中的应用实时操作系统在嵌入式开发中有广泛的应用,以下是一些常见的应用场景:1.工业控制:实时操作系统可以用于工业自动化系统中,例如控制生产线上的机器人进行精确的动作控制,保证生产线的高效运行。
2.汽车电子:实时操作系统在汽车电子系统中发挥着重要作用。
例如,车载信息娱乐系统需要及时响应驾驶员的指令,并能够处理导航和娱乐功能。
3.医疗设备:医疗设备通常对时间要求非常严格,实时操作系统可以保证医疗设备准确地进行数据采集和处理,并及时响应医生的指令。
几种嵌入式实时操作系统的分析与比较

⼏种嵌⼊式实时操作系统的分析与⽐较VxWorks、µClinux、µC/OS-II和eCos是4种性能优良并被⼴泛应⽤的实时操作系统。
本⽂通过对这4种操作系统的主要性能进⾏分析与⽐较,归纳出它们的选型依据和适⽤领域。
1 4种操作系统的介绍(1)VxWorksVxWorks是美国WindRiver公司的产品,是⽬前嵌⼊式系统领域中应⽤很⼴泛,市场占有率⽐较⾼的嵌⼊式操作系统。
VxWorks实时操作系统由400多个相对独⽴、短⼩精悍的⽬标模块组成,⽤户可根据需要选择适当的模块来裁剪和配置系统;提供基于优先级的任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,内建符合POSIX(可移植操作系统接⼝)规范的内存管理,以及多处理器控制程序;并且具有简明易懂的⽤户接⼝,在核⼼⽅⾯甚⾄町以微缩到8 KB。
(2) µC/OS-IIµC/OS-II是在µC-OS的基础上发展起来的,是美国嵌⼊式系统专家Jean J.Labrosse⽤C语⾔编写的⼀个结构⼩巧、抢占式的多任务实时内核。
µC/OS-II 能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执⾏效率⾼、占⽤空间⼩、实时性能优良和可扩展性强等特点。
(3)µClinuxµClinux是⼀种优秀的嵌⼊式Linux版本,其全称为micro-control Linux,从字⾯意思看是指微控制Linux。
同标准的Linux相⽐,µClinux的内核⾮常⼩,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强⼤的⽹络功能、出⾊的⽂件系统⽀持、标准丰富的API,以及TCP/IP⽹络协议等。
因为没有MMU内存管理单元,所以其多任务的实现需要⼀定技巧。
(4)eCoseCos(embedded Configurable operating system),即嵌⼊式可配置操作系统。
操作系统的实时系统与嵌入式系统

操作系统的实时系统与嵌入式系统操作系统(Operating System)是计算机系统中的一个重要组成部分,它负责管理和控制计算机硬件和软件资源,为应用程序提供良好的运行环境。
在众多的操作系统类型中,实时系统和嵌入式系统是两个特殊的领域,它们具有独特的特点和应用场景。
本文将详细介绍操作系统中的实时系统和嵌入式系统,并探讨它们的区别以及各自的特点。
一、实时系统实时系统是一种对时间要求非常严格的系统。
它需要在规定的时间内完成某种任务,并能够保证任务的响应时间不超过预定的时间限制。
实时系统广泛应用于航空航天、交通控制、医疗设备、工业自动化等领域,其中最典型的实时系统是飞行控制系统。
实时系统分为硬实时系统和软实时系统。
硬实时系统要求任务必须在严格的时间限制内完成,一旦超过了规定的时间限制,系统将会出现严重的后果。
例如飞行控制系统,如果任务在规定的时间内无法完成,可能会导致飞机失控或者发生事故。
相比之下,软实时系统对时间限制要求相对较宽松,可以适当地容忍一些时间延迟,但仍需保证任务能在约定的时间范围内完成。
实时系统的核心问题是任务调度。
为了保证任务的及时响应和完成,实时系统采用了各种任务调度算法,例如周期性调度算法、优先级调度算法等。
这些调度算法能够根据任务的重要性和时间限制,合理地安排任务的执行次序,从而提高了实时系统的可靠性和效率。
二、嵌入式系统嵌入式系统是一种特殊的计算机系统,它被嵌入到其他设备或系统内部,与之密切结合。
嵌入式系统广泛应用于智能手机、家电、汽车电子、工业控制等领域。
与通用计算机系统相比,嵌入式系统通常具有体积小、功耗低、实时性强等特点。
嵌入式系统的特点决定了它需要特定的操作系统来管理和控制。
嵌入式操作系统通常具有快速启动、高效运行、低功耗等特性。
同时,嵌入式操作系统通常会针对特定设备和需求进行定制化开发,以适应不同嵌入式系统的要求。
常见的嵌入式操作系统包括嵌入式Linux、嵌入式Windows、FreeRTOS等。
嵌入式实时多任务操作系统的特征介绍

嵌入式实时多任务操作系统的特征介绍引言:适逢公司进行通用计算平台的硬件基础研究,在此硬件平台之上,必要引入通用的软件平台。
为此,操作系统无疑是最佳的选择。
在德国十二套软启动项目中,远程IO控制机的软件设计成功引入了实时多任务操作系统μC/OS—II, 本文结合作者的工作成果,针对μC/OS—II将嵌入式操作系统的基本特征和原理进行简单的描述,并对大家所熟知的实时特性概念进行简要的抛析。
嵌入式实时操作系统在国外在上世纪60年代便已发展,至今已有不下百种产品。
从在商业领域取得巨大成功的两个突出代表VxWorks和QNX;到开源并广泛传播的Linux;以及由知名公司所推出的WINCE等;再到由个人之力发展至今的μC/OS,每种操作系统皆有其自身的特点及所专长的应用领域,但同时作为嵌入式的实时多任务操作系统又有其共同的特征,以下将结合实际工作中所用到的μC/OS—II为大家进行简单的介绍。
首先,操作系统作为用户应用程序同系统硬件之间的接口,承担着系统全部软、硬件资源的分配、工作调度、控制协调并发活动的重任。
如图1所示为包含操作系统的软硬件体系结构。
图1比较于传统的PC机操作系统,除具有任务调度、同步机制、中断处理、文件功能外,嵌入式实时操作系统还具有如下几个主要特点:◆可裁减性,嵌入式系统开发所特有的一点便是具有有限的存储空间。
面向不同硬件资源的情况下,操作系统具有自身可裁减的特性,以适应系统的存储容量,以μC/OS—II为例,最小可将代码量裁减到2K+。
◆实时性,于军事及高端工业领域发展起来的嵌入式操作系统,系统所处运行环境极为复杂,要求极为苛刻。
对于外部的激励,操作系统能够及时的做出响应,来保证系统的可靠运行。
◆可移植性,操作系统作为通用型的软件平台,必要面对不同厂家、不同硬件架构的处理器平台。
因此为保证自身的可重用特性及兼容性的特点,操作系统多可进行移植,来适应不同处理器的硬件架构。
以μC/OS—II为例,在四款主流IP核PowerPC、ARM、MIPS和X86上皆可进行移植。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机系统中的多任务多线程机制的实现文章作者:冉全章涤峰文章类型:设计应用文章加入时间:2003年9月9日0:47文章出处:单片机与嵌入式系统应用摘要:单片机系统的开发多情况下不是在嵌入式操作系统平台上进行的,而是直接基于处理器编写。
在多任务并行执行的要求下,可以借鉴操作系统中的任务和线程机制,对资源和处理器合理进行调度。
本文以实例对此进行讨论。
关键词:单片机任务线程并行处理引言首先要指出的是一点是,我们不是讨论嵌入式实时多任务操作系统(RTOS)的设计。
我们讨论的是,在不使用RTOS的控制系统中,如何体现多任务多线程机制的程序设计思想。
一些嵌入式设备可以需要操作系统,例如掌上电脑、PDA、网络控制器等高性能的手持设备和移动设备。
它们往往和无线通信、互联网访问和多媒体处理等复杂而强大的功能联系在一起;对CPU要求也很高,往往是以通用CPU为原型的各种高端嵌入式处理器。
作为一个完整的操作系统,RTOS有一个可靠性很高的实时内核,将CPU时间、中断、I/O、定时器等资源都包括起来,留给用户一个标准的应用程序接口(API);根据各个任务的优先级,合理地在不同任务之间分配CPU的时间,保证程序执行的实时性、可靠性。
内核一般都能提供任务调度和中断服务等功能,部分高档商业化产品,如Windows XP Embedded,甚至支持32位地址空间、虚拟存储管理、多进程以及嵌入式操作系统中不多见的动态链接库(DLL)。
对于这些RTOS来说,多任务实时处理不是件困难的事情。
但更多的情况下,用户使用的是另一类CPU——微控制器,即单片机,往往是按照某一流程执行单一任务。
出于成本和技术上的原因,这类软件开发多数还是基于处理器直接编写,没有选配实时多任务操作系统作为开发平台,也不需要将系统软件和应用软件分开处理。
但是在实际应用中,有时也会面临同时处理多个并行任务的要求,这就需要安排一种运行机制,来模拟RTOS中的处理方法。
1 RTOS中的设计思想单处理机多道程序系统具有如下特征:①从宏观上看,几种程序“同时运行”。
即它们先后开始了各自的运行,且均未结束。
②从微机上看,几道程序“交替执行”。
对于单处理机系统而言,它们只能轮流地占用CPU。
其实质是指几道程序在处理机中“交替执行”。
我们按照现在常用的方法,把一道程序和一个任务对应,把任务中的每个分开的、独立执行的部分称之为线程。
具体到RTOS来说,一方面,实时操作中的多任务引起的并发性和实时性,要求操作系统对资源分配具有更强的控制能力。
通常的办法是采取设立前台与后台两个作业的分配办法。
前台作业中包含实时采集、控制、处理有关的任务,任务优先级较高;后台作业一般是对数据进行分析、输出数据、响应操作员请求等任务,优先级较低。
后台作业中与后台作业并非完全孤立的;后台作业所需数据由前台作业存储共享内存区内,作业之间通过共享存储区进行数据交换。
另一方面,实时任务总是由某个事件发生或时间条件满足来激活。
事件有两种:内部事件和外部事件。
时间驱动也有两种:按绝对时间驱动和按相对时间驱动。
内部事件驱动是指某一程序运行的结果导致另一任务的启动,这个结果可能是数据满足一定条件,也可能是释放了某一资源;而最典型的实时任务是由外部事件驱动的。
在实时系统中,外部事件发生有时是不可预测的,由外部事件驱动的任务一般是需要立即执行的任务,它的优先级最高。
绝对时间驱动是指在某指定时刻执行的任务,也就是在自然时钟的绝对时间执行。
相对时间驱动是指周期性执行的任务,总是相对上一次执行时间计时,执行时间间隔一定。
除了周期性任务外,还有一些同步任务也可能由相对时间驱动,如等待某种条件到来。
等待时间是编程设定的。
相对时间可用计算机内部时钟或软件计时。
图2 独立并行任务我们在实时设计当中,这两方面的问题都有所体现,所有的事件驱动和时间驱动都体现在设置相应的任务标识和线程标识。
从后面的讨论中可以看出,当硬件环境一定时,依据这些标识,通过安排系统内中断响应方式和调整任务调度算法,可以有效解决多任务并行问题,因为系统的实时性主要取决于这两点。
2 多任务多线程机制的实现我们设计的对象是双通道和四通道测试的某型医用检验设备。
每个通道可以置入样本,设置不同的测试项目,完成测试后输出不同的测试结果和附加的计算结果。
常规的处理方法是这样的:和通道只能测试同一个项目,按统一步骤同步执行各任务的相同阶段,其处理示意如图1。
为简化起见,我们用双通道进行说明。
显然,这样做不仅会失去测试的灵活性,例如不能同时测量不项目,不过随意在不同通道中测试不同版本,即使有空余通道也不能在上一样本测试过程中启动下一样本的测试;而且还牺牲效率,浪费时间,因为要等每个阶段最慢的一个处理完才能进入下一阶段。
这其实是单任务的多次简单重复,设计也容易。
国内很多类似产品采用了这种方案,但我们放弃了。
我们选择了安全并行的设计,即要求所有通道可以完全独立工作;任意启动和停止;彼此没有约速;时间上可以任意重叠;是几个独立的任务,如图2。
这里我们把每一个启动通道进行测试的程序叫做一个任务,把各自任务下的每一个单独的、分开处理的程序段叫做一个线程,每个线程依靠自己的标识来识别。
一个通道的测试任务可分为启动、设置、加样品、预温计时、加试剂与搅拌、通道轮流采样、数据处理和作图打印等多个线程。
另外,有一个温度的实时监控独立线程,它的优先级要次于通道的测试采样。
图3 前台控制流程1----void Xlnt0() interrupt0这些线程可分属于前台和后台两类:前台主要是一些中断的处理,例如两路温度的实时监控、每100ms内的各通道循环检测一遍、采用中断方式的键盘干预等;后台主要是扫描方式下响应操作员的按键请求、数据处理、图形显示、打印报告等内容。
整个实现机制可以简单地概括如下:前台通过合理安排中断的响应和服务方式来对多个任务的实时线程进行处理;后台操作主要以循环方式扫描各个任务的线程标识,满足条件的线程被激活予以处理。
限于篇幅,不可能详细介绍整个设计方案,在此只能给出各测试通道工作任务的前台和后台线程划分及流程,供参考。
然后,给出一个中断退出后返回到任意地址的函数,它比C51自己的setjmp和longjmp全程跳转函数的使用要方便很多。
实时任务中,中断服务结束后不是返回到断点地址执行原有程序,而是强制返回到某一地址执行新程序的情况非常普遍。
我们采用设置环境变量的方法,使中断退出后可以任意返回到多个设置入口中的某一个去执行,有效地解决了前台和后台任务线程的灵活切换这一关键问题。
我们使用的CPU是97C52,编程语言为Keil C51 6.0版。
图3是主定时器中断服务,12C887提供中断请求信号至int0。
12C887的三个中断触发服务中,温度扫描是独立线程,四次500ms“周期中断”(即每2s)后执行一遍;需要屏幕显示预温侄计时的时候使用“更新中断”,每秒一次,各测试任务,其倒计时线程依靠各自的标识启动和停止;“报警中断”需要时设置为每分钟1次,用于主菜单界面显示当前时间和长定时的返回。
图4是CPU内部定时器0的中断服务,用于A/D转换。
每个测试任务的A/D 分为两个线程:检测试剂加入和测试剂样品的反应曲线,虽然都是通过对光学传感器和输出进行检测的,但处理方法完全不同,数据量也很不一样。
定时器0设定为每100ms中断1次,因为要用高精度∑-Δ转换器件,CPU必须直接控制器件的整个转换过程,所以,要注意所有通道轮扫一遍A/D的时间不能超过100ms。
图5为后台流程。
后台程序依靠通道按键启动一个测试任务,然后进行该任务预处理,类似初始化的一些功能。
如果这期间又启动别的任务,则未初始化完的先前任务中止。
图4 前台控制流程2----void time0() interrupt 1初始化完成后进入多任务所属线程的循环处理阶段,其间可以随时由通道按键引起的中断来加入新的任务,每个线程的调度标识可以由相关的前台线程给出,也可来自相关的后台线程。
配合Getadd()和Putadd()从中断强制返回某地此后,使用跳转语句到真正的目标地址。
最后给出强制返回程序代码(供参考):/*保存当前地址信息到环境变量JMPEnv[env1][]中,每个变量由三项组成,env1是二维下标参数*/void getadd(unsigned char env1){unsigned char temp;temp=SP;JMPEnv[env1][0]=(*((unsigned char idata*)SP));temp--;JMPEnv[env1][1]=(*((unsigned char idata*)temp));JMPEnv[env1][2]=SP-2;}/*置中断返回的任意跳转地址*/void putadd(unsigned char env1)reentrant{ unsigned char temp[15];char i;/*下面保存进入中断程序时的压栈值*/for(i=0,i<15;i++){temp[i]=(*((unsigned char idata*)SP));SP--;}/*放置新地址*/SP=JMPEnv[env1][2];SP++;(*((unsigned char idata*)SP)=JMPEnv[env1][1];SP++;(*((unsigned char idata*)SP))=JMPEnv[env1][0];/*恢复中断开始时的那些压栈值*/for(i=14;i>=0;i--){SP++;(*((unsigned char idata*)SP))=temp[i];}}结语限于篇幅,不可能详述任务、线程和标识的细节,仅提出一种单片机等嵌入式控制系统对多任务进行实时处理的一种思想;借鉴于主流操作系统中的多任务和多线程机制。
实践证明,这种想法是行之有效的,并且取得了很好的效果。
虽然我们研制的系统是对多个相同的任务进行并行处理,但该种设计方法应该可以推广到多种不同性质的实时任务的并行处理当中去。