第七章 操作系统概要_第1页
第七章 操作系统概要_第2页
第七章 操作系统概要_第3页
第七章 操作系统概要_第4页
第七章 操作系统概要_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

操作系统RTX51实时操作系统应用示例μC-OS/II其它Rtx51-tiny环境下的编程RTX51是支持MCS-51系列处理器的多任务实时操作系统。RTX51简化了复杂、对执行时点敏感的任务的编程。RTX51与中断并行工作。任务之间通过邮箱传递信号或消息。标准的C51只作极少的扩展,以指定任务ID和优先级。#include<rtx51tny.h>#include<W77C32.h>voidMainJob(void)_task_0{ os_create_task(1); //task1: os_create_task(2); //task2: os_create_task(3); //task3: os_delete_task(0);}程序示例voidm_Trax(void)_task_2{ EA=0; Ini_COM1(); //3RS-485 EA=1; while(1) { //Yourcode }}一个任务的示例#include<rtx51tny.h>intcounter0;intcounter1;voidjob0(void)_task_0{

os_create(1); //marktask1asready while(1) { //loopforever counter0++;//updatethecounter }}voidjob1(void)_task_1{ while(1) { //loopforever counter1++;//updatethecounter }}框架程序#include<rtx51tny.h>intcounter0;intcounter1;voidjob0(void)_task_0{ os_create(1); //marktask1asready while(1) { //loopforever counter0++; //updatethecounter

os_wait(K_TMO,3); //pausefor3clockticks } }voidjob1(void)_task_1{ while(1) { //loopforever counter1++; //updatethecounter

os_wait(K_TMO,5); //pausefor5clockticks } }#include<rtx51tny.h>intcounter0;intcounter1;voidjob0(void)_task_0{ os_create(1); //marktask1asready while(1) { if(++counter0==0) //updatethecounter os_send_signal(1); //signaltask1 }}voidjob1(void)_task_1{ while(1) {

os_wait(K_SIG,0,0); //waitforasignal counter1++; //updatethecounter }}voidjob1(void)_task_1_priority_1{ while(1) { os_wait(K_SIG,0,0); //waitforasignal counter1++; //updatethecounter }}Theprioritylevelcanbe0through3.0isthelowest(bydefault)3isthehighestPriority优先级(rtx51-full)RTX51的WAIT函数支持以下事件:·Timeout:越时,正在运行的任务被挂起一定的时间片。·Interval:正在运行的任务被挂起一个时间片。

·Signal:任务间传递的信号。EventsofRtx51-tiny函数功能周期数os_create_task将一个任务加入执行队列302os_delete_task将一个任务移出执行队列172os_send_signal从任务中发送信号408withtaskswitch.316withfasttaskswitch71withouttaskswitchos_clear_signal删除已发送信号57isr_send_signal从中断发送向任务发送信号46os_wait等待一个时间68forpendingsignal160forpendingmessageos_create_taskos_delete_taskcharos_create_task

(unsignedchartask_id);ReturnValue:0 ifthetaskwassuccessfullystarted.-1 ifthetaskcouldnotbestarted#include<rtx51tny.h>charos_delete_task

(unsignedchartask_id);ReturnValue:

0ifthetaskwassuccessfullystoppedanddeleted.-1indicatesthespecifiedtaskdoesnotexistorhadnotbeenstarted.os_send_signalos_clear_signalcharos_send_signal

(unsignedchartask_id);如果指定任务已在等待一个信号,该函数调用使任务进入执行队列。否则,信号被存储为该任务的标志。ReturnValue:

0ifsuccessfuland-1ifthespecifiedtaskdoesnotexist.charos_clear_signal

(unsignedchartask_id);清除任务task_id的信号标志.ReturnValue:

0ifthesignalflagwassuccessfullycleared.-1isreturnedifthespecifiedtaskdoesnotexist.#include<rtx51tny.h>charisr_send_signal

(unsignedchartask_id);从中断向任务task_id发信号,若指定任务已经在等改信号,该系统调用将使对应任务进入就绪状态.否则,信号被存储到对应任务的标志中.ReturnValue:

0ifsuccessful-1ifthespecifiedtaskdoesnotexist.isr_send_signal#include<rtx51tny.h>os_wait#include<rtx51tny.h>charos_wait

(unsignedcharevent_sel,/*eventstowaitfor*/unsignedcharticks,/*timertickstowait*/unsignedintdummy);/*unusedargument*/MaybeORedos_wait1charos_wait1

(unsignedcharevent_sel);Theos_wait1functionisasubsetoftheos_waitfunction.Theevent_selargumentcanhaveonlythevalueK_SIGwhichwillwaitforasignal.#include<rtx51tny.h>os_wait2Summary:#include<rtx51tny.h>charos_wait2

(unsignedcharevent_sel,//eventstowaitforunsignedcharticks);//timertickstowaitCompareos_wait2withos_wait,onlythatthirdarguement“unsignedintdummy”

ofthelaterfunctionisommitted!嵌入式操作系统体系结构嵌入式实时操作系统内存管理外围设备管理多任务管理微内核、三项功能进程的概念进程具有独立功能的程序关于某个数据集合的一次运行活动。第一,进程是一个实体,有自己的地址空间,可以申请和拥有系统资源;第二,进程是一个“执行中的程序”,是一个动态的概念,是一个活动的实体。当前活动通过程序计数器的值和一组寄存器的当前内容来表示。程序是包含代码和初始化数据,是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体。进程的特征动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。并发性:任何进程都可以同其他进程一起并发执行独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进结构特征:进程由程序、数据和进程控制块三部分组成。进程与线程的关系在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。因而近年来推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视为现代操作系统的一个重要指标。μC/OS-II操作系统1、C/OS—MicroControllerOS,微控制器操作系统2、C/OS简介美国人JeanLabrosse1992年完成应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等1998年C/OS-II2000年,得到美国航空管理局(FAA)的认证,可以用于飞行器中目前的版本C/OS-IIV2.82C/OS–III(带MPU)网站www.ucos-II.com()6公开源代码可移植性(Portable)

源码可移植性很强。微处理器硬件相关的汇编语言部分已经压到最低限度。可以在绝大多数8/16/32/64位微处理器、微控制器、数字信号处理器(DSP)上运行。可固化(ROMable)

C/OS-II是为嵌入式应用而设计的,可固化(C编译、连接、下载和固化),C/OS-II可以嵌入到产品中成为产品的一部分。可裁剪(Scalable)

可以只使用很少的系统服务,也可以使用几乎所有的功能;

这种可剪裁性是靠条件编译实现的。减少产品中的

C/OS-II所需的存储器空间(RAM和ROM)。C/OS的性能特点(一)占先式(Preemptive)多任务64/256任务,保留8个给系统。应用程序最多56个可确定性函数调用与服务的执行时间具有可确定性任务栈每个任务有单独的栈,可大可小,压低对RAM的需求。系统服务

C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间相关函数等。中断管理

中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。稳定性与可靠性C/OS的性能特点(二)μC/OS-II操作系统任务和任务状态任务控制块任务就绪表任务的同步与通信事件事件控制块任务切换任务解决复杂问题的“分而治之”的方法大的复杂任务划分为一个个简单的任务解决上述一个个简单问题的程序实体,称为任务对小的任务的运行进行管理,就是操作系统的工作。uC/OS-II的任务相当于Windows中的线程任务状态的转换等待状态睡眠状态中断服务状态就绪状态运行状态

多任务共享同一个CPU。所以在具体的时段,根据任务是否占有CPU,以及是否处于等待、被中断等情况,任务处于下列5种状态之一。任务状态的转换等待状态睡眠状态中断服务状态就绪状态运行状态任务只是以代码的形式驻留在程序空间(ROM中RAM),任务没有被任务控制块,或被剥夺了任务控制块任务状态的转换等待状态睡眠状态中断服务状态就绪状态运行状态系统为任务配备了任务控制块,且在任务就绪表进行了就绪登记,任务具备运行的充分条件。任务的CPU使用权被剥夺任务被创建获得任务控制块等待的条件满足任务状态的转换等待状态睡眠状态中断服务状态就绪状态运行状态处于就绪状态的任务,经调度器判断获得了CPU的使用权。任何时候只能有一个任务处于运行状态。任务状态的转换等待状态睡眠状态中断服务状态就绪状态运行状态正在运行的任务需要等待一段时间,或等待一个事件发生(条件),该任务会把CPU的使用权让出;调度器再从就绪队列中选优先级最高的任务,并使其进入运行状态。如果找不到一个就绪的任务,就运行空闲任务。任务状态的转换等待状态睡眠状态中断服务状态就绪状态运行状态睡眠状态:任务只是以代码的形式驻留在程序空间(ROM中RAM)任务没有被任务控制块,或被剥夺了任务控制块任务状态的转换等待状态睡眠状态中断服务状态就绪状态运行状态任务的组成任务控制块任务的代码任务堆栈任务控制块的其它信息是一个数据结构,包含值OS_STAT_RDY 就绪状态OS_STAT_SEM 等待信号量状态OS_STAT_MBOX 消息邮箱状态OS_STAT_Q 等待消息队列状态OS_STAT_SUSPEND 被挂起的状态OS_STAT_MUTEX 等待互斥型信号量状态全部任务控制块构成任务控制链表,可以增删任务链表链表结构维护,即创建或删除一个任务。任务的切换被中止任务的断点指针保存到任务堆栈①CPU寄存器内容保存到任务堆栈①被中止的任务的堆栈指针的当前值保存到对应的控制块中②获得待运行任务的控制块获得待运行任务的堆栈指针③获得待运行任务通用寄存器的值④CPU获得待运行任务的断点指针④任务就绪表OSRdyTbl[],最多8个字节任务优先级(任务标识)任务的同步与通信必要性进程的各个任务必须有效合作;必须无冲突地访问共享资源;相互依赖、或制约内容事件控制块信号量及其使用消息队列及其使用事件信号量消息邮箱消息队列事件控制块任务1任务2共享资源01请求和发送信号量事件信号量消息邮箱消息队列事件控制块任务1任务2消息缓冲区消息邮箱传递数据指针传递一个数据的方法。事件信号量消息邮箱消息队列事件控制块任务1任务2消息缓冲区1消息队列利用消息队列通信指针。。。消息缓冲区2消息缓冲区n事件的等待任务表对于每个事件,都建立了一个表。从表中可以获悉所有等待该事件的任务。事件控制块ECB结构μC/OS-II将描述事件的结构统一起来:typedefstruct{ INT8U OSEventType; //事件类型 INT16UOSEventCnt; //信号量计数 void*OSEvetPrt; //消息或消息队列指针 INT8UOSEventGrp; //等待事件的任务组 INT8UOSEventTbl[8]; //任务等待表}OS_EVENT;任务等待表可以小于8字节,具体可根据任务数确定事件控制块ECB结构事件类型的值及其含义OS_EVENT_TYPE_SEM 表明事件是信号量OS_EVENT_TYPE_MUTEX表明事件是互斥信号量OS_EVENT_TYPE_MBOX 表明事件是消息邮箱OS_EVENT_TYPE_Q 表明事件是消息队列OS_EVENT_TYPE_UNUSED 空事件控制块C/OS-II的文件结构定义任务堆栈#defineTASK_STK_SIZE 64

OS_STKTaskTimStk[TASK_STK_SIZE];OS_STKTaskLcdStk[TASK_STK_SIZE];OS_STKTaskKeyStk[TASK_STK_SIZE];OS_STKTaskUARTStk[TASK_STK_SIZE];定义任务函数voidTask_Tim(void*pdata);voidTask_uart(void*pdata);externvoidTask_KeyIn(void*pdata);externvoidTask_LCD(void*pdata);程序任务的创建intmain(void){OSInit();

SecTick=OSSemCreate(0);SendMessLCD=OSSemCreate(0);

OSTaskCreate(Task_Tim,(void*)0,&TaskTimStk[TASK_STK_SIZE-1],0);OSTaskCreate(Task_LCD,(void*)0,&TaskLcdStk[TASK_STK_SIZE-1],10);OSTaskCreate(Task_KeyIn,(void*)0,&TaskKeyStk[TASK_STK_SIZE-1],2);OSTaskCreate(Task_uart,(void*)0,&TaskUARTStk[TASK_STK_SIZE-1],4);OSStart();

return0;}关于消息OS_EVENT*SecTick;OS_EVENT*SendMessLCD;SecTick=OSSemCreate(0);SendMessLCD=OSSemCreate(0);OSSemPost(SecTick);//PostaMessageOSSemPost(SendMessLCD);//PostaMessageOSSemPend(SecTick,500,&err);OSSemPend(SendMessLCD,400,&err);RTOS追求的是调度的实时性、响应时间的可确定性、系统的高度可靠性。评价一个实时操作系统一般可从任务调度、内存管理、任务通讯、内存开销、任务切换时间、最大中断禁止时间等几个方面来衡量。实时操作系统中的几个重要的评价指标1)任务调度机制:RTOS的实时性和多任务能力在很大程度上取决于它的任务调度机制。从调度策略上来讲,分优先级调度策略和时间片轮转调度策略;从调度方式上来讲,分可抢占、不可抢占、选择可抢占调度方式;从时间片来看,分固定与可变时间片轮转。在大多数商用的实时系统中,为了让操作系统能够在有突发事件时,迅速取得系统控制权以便对事件作出反应,所以大都提供了“抢占式任务调度”的功能,也就是操作系统有权主动终止应用程序的执行,并且将执行权交给拥有最高优先级的任务。以下是两种可以作出精确描述实时应用的时间测定正确性的著名算法:速度单调:在工作量有一组定期任务组成的应用中,每个任务的执行时间定长,这种速度单调调度算法能够保证其可调度性。在系统中,最高频的任务具有最高的优先级。时限驱动:对于一个由定期和不定期任务混合或者任务的执行时长随着时间变化的应用,可以使用时限驱动算法。这个算法的准则是下一个要安排执行的任务是一个时限最早的任务,该任务完成之后,下一个时限最早的任务被选择调度和执行。2)内存管理:实时操作系统内存管理模式可以分为实模式与保护模式。目前主流的实时操作系统一般都可以提供两种模式,让用户根据应用自举选择。3)最小内存开销:由于在多数嵌入式系统中内存配置一般都不大,在这有限的内存空间里不仅要装载实时操作系统,还要装载用户程序。因此,在RTOS的设计中,其占用内存大小是一个很重要的指标,这是RTOS设计与其它操作系统设计的明显区别之一。4)中断禁止时间与中断延迟事件:当RTOS运行在核心态或执行某些系统调用的时候,是不会因为外部中断的到来而中断执行的。只有当RTOS重新回到用户态时才响应外部中断请求,这一过程所需的最大时间就是中断禁止时间。中断延时时间是指系统确认中断开始直到执行中断服务程序的第一条指令为止整个处理过程所需要的时间。实时操作系统的中断延时时间由下列三个因素决定:----处理器硬件电路的延迟时间,通常这个时间可以忽略。----实时操作系统处理中断并将控制权转移给相关处理程序所需要的时间。----实时操作系统的中断禁止时间。为了缩短系统对于中断请求的响应时间----中断延迟时间,大多数商用实时操作系统都采用了“可中断式”的核心程序,当然也有相当多的实时操作系统,例如实时Linux,采用非抢占式的核心程序。5)任务切换时间:当由于某种原因使一个任务退出运行时,RTOS保存它的运行现场信息、插入相应队列、并依据一定的调度算法重新选择一个新任务使之投入运行,这一过程所需时间称为任务切换时间。任务切换时间是实时操作系统将控制权从一个任务的执行中取回,然后交给另外一个任务所需要的时间。它包括保存目前正在执行任务的现场信息所需要的时间、RTOS决定下一个调度任务所需的调度时间以及RTOS把另外一个任务调入系统执行所需要的时间。最大中断禁止时间和任务切换时间是评价一个RTOS实时性最重要的两个技术指标。RTOS市场和技术发展的变化易于移植的RTOS结构支持更多种的处理器支持Unix/POSIX兼容的趋势明显内核可以裁剪以支持RTOS适应小系统和大系统的各种应用RTOS与工具的IDE紧密结合出现越来越多的销售源代码和一次性版税的RTOS厂家RTOS厂家除提供的文件,图形和TCP/IP外,与特定应用的结合更多,如互连网络,通信一、WindRiver-ISI的结合形成RTOS市场的‘航母’,但他的竞争对手纷纷声称他们有了更多的机会(因为WindRiver放弃PSOS)50%(北美)的用户依然在使用自己编写的RTOS,他们将走到那里?后PC时代更多的数字化产品将使用RTOS或嵌人OS,这里就产生了WinCE,PalmOS,JavaOS,Epoc等‘软’实时的嵌人OS二、电讯和控制系统核心设备要求RTOS的高可靠性半导体厂商对RTOS和工具的需求强烈,商业性的合作方式以由外包,到今天收购工具公司和软件协议公司如Motorola收购Metrowerks并投资Lineo,ARC收购Metaware,ARM收购Allant,Intel投资Montvista嵌人式Linux已经在消费电子等非强实时领域进入RTOS的市场并得到了相当广泛的半导体厂商如Intel三、RTOS市场将可能划分为三段系统级,板极,SOC级嵌人式Linux依靠POSIX兼容,高可靠源码开放资源丰富的优势将进入传统Unix和NT占据的系统级市场(如CPCI,HA/HotSwap)板级依然是传统RTOS的天下主要将集中在航空航天,军事应用和传统电讯市场SOC级是新生代较逐的领域,嵌人处理器,消费电子产品,互连网络通信设备都将是市场变化最快之处§4.12RTOS---未来?一、是否会出现标准RTOS?是否会出现某种行业标准RTOS?在某段时间内可能,如目前VxWork在数据通信和WinCE在掌上电脑和高档PDA(亚洲),手机RTOS的EPOC是否所有的RTOS将都可以出售源码?是否RTOS将向Linux一样‘免费’但服务收费?OS市场的总体趋势是这样的,但依然需要一个过程二、目前绝大多数是国外产品如VxWork,PSOS,VRTX,Nucleus,WinCE,QNX,CMX..其中前5位占据国内绝大多数的市场以业界传统的推测(中国占全球1-2%分额)中国RTOS市场规模还很小很少有人愿意冒风险尝试一种新的RTOS国内目前RTOS的版税意识较低限制了RTOS的发展(国外某RTOS厂家收入的30%来自版税)§4.14中国的RTOS市场选择协议堆栈协议堆栈的内存要求。所需硬件资源。协议堆栈施加在CPU上的开销。RTOS集成的协议堆栈嵌入式系统Internet接入选择网络技术ClientServerPort使用标准的应用协议网络应用层的标准协议可以使你借助一些现成的且容易获得的标准工具软件。例如,通过使用HTML和HTTP这类标准的应用数据格式和协议,就没有必要在每个系统上安装一个专门用于访问嵌入系统的浏览器。网络体系结构网络体系结构是指一个计算机网络的模块格式和设计结构。最重要的部分就是设计不同网络层使用的协议,因此网络体系结构常常被称为协议堆栈或协议集。NetBIOS,IPX/SPX,AppleTalk,TCP/IP,OSITCP/IP协议的优点:免费标准坚实稳定异构兼容基础设施堆栈小巧DS80C400是51系列,集成了TCP/IP,有一个类似于uC/OS-II的操作系统(Rtx51-tiny?)带Demo板,并且可以下载它的开发环境PIC系列也有各种类似的芯片,可用于开发具有联接Internet功能的嵌入式系统bind()Well-knownportlisten()accept()read()write()close()eof()?write()read()connect()socket()socket()close()ClientServer基于socket的编程:与Web连接Web的基本思想是将计算机网络与超文本媒体联合起来创造一个强有力的且容易使用的全球信息系统。HTTP:超文本传输协议,作为Web浏览器和服务器请求和传送资源或网页的协议。HTML:超文本链接标示语言,是Web的交流语言。URL:统一的资源定位表示法,将节点名、单个资源名以及用于提取此资源的协议名合成一个唯一的名字。嵌入应用的HTTPHTTP提供了一个双向传输文件的简单、标准的方法。你可以下载文件和程序到嵌入设备中,也可以从嵌入系统中上传数据,在这两个方向上传送的文件都可以包括任何种类的数据。能安排和传送嵌入网络服务器中的HTML文档的功能会给嵌入应用极大的好处。如Web浏览器和标准的HTML格式界面就为嵌入式设备方便地实现网络用户界面提供了很好的手段。用Web浏览器可以从嵌入系统收集数据;下载新数据或新软件给嵌入系统;重新配置嵌入系统等。嵌入程序中的HTMLHTML是一个实现交互式网络应用程序的全球化规范语言,使其成为迅速、简单并可靠地为嵌入系统配备按form方式驱动的设备接口的一个自然选择。在嵌入系统界面设计中使用

温馨提示

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

评论

0/150

提交评论