简要说明UC概念 嵌入式
UC编程与嵌入式系统将UC应用于嵌入式设备开发

UC编程与嵌入式系统将UC应用于嵌入式设备开发嵌入式系统是一种专门用于控制特定设备或系统的计算机系统。
传统的嵌入式系统开发通常使用C语言进行编程,然而UC编程(Unified C Programming)作为一种集成了多种编程语言特性的开发方式,为嵌入式设备开发带来了许多优势。
本文将探讨UC编程在嵌入式设备开发中的应用,介绍UC编程的特点和优势,并结合实际案例进行分析。
一、UC编程概述UC编程是一种与嵌入式系统开发紧密相关的开发方式,它将多种编程语言特性集成在一起,提供了更高的开发效率和更强的代码重用性。
相比传统的嵌入式开发方式,UC编程具有以下几个特点:1. 多语言支持:UC编程支持多种编程语言,例如C、C++、Python 等,开发者可以根据需求选择合适的语言进行开发,提高开发的灵活性和效率。
2. 统一接口:UC编程提供了统一的接口和框架,方便开发者进行代码复用和模块化开发,减少了重复性工作,提高了开发效率。
3. 硬件抽象:UC编程将操作系统与硬件之间的交互进行了抽象,使开发者可以更方便地使用硬件资源,提高了开发的便利性和可移植性。
4. 高效调试:UC编程提供了强大的调试工具和环境,可以方便地进行代码调试和性能优化,提高了开发效率和软件质量。
二、UC编程在嵌入式设备开发中的应用UC编程广泛应用于各个领域的嵌入式设备开发中,下面将结合实际案例介绍UC编程在嵌入式设备开发中的应用。
1. 智能家居系统智能家居系统是一种通过网络和传感器技术实现对家居设备集中控制的系统,涵盖了照明、安防、智能家电等多个方面。
以某智能家居系统为例,通过使用UC编程,可以方便地实现对各种智能设备的控制和管理。
开发者可以使用C语言编写底层驱动程序,利用C++进行系统框架设计,同时可以使用Python进行智能算法开发,将多种语言特性灵活结合,实现高效的智能家居系统开发。
2. 医疗设备在医疗设备领域,安全性和可靠性是至关重要的。
嵌入式操作系统UC-OSII的内核结构及介绍

嵌入式操作系统UC/OSII的内核结构及介绍1 引言以前在我们一般所使用的系统中,任务没有优先级之分。
应用程序是一个无限的循环,任务函数按在代码中的顺序运行,处理相应的事务。
时间相关性强的任务处理使用中断机制,但是当系统比较复杂、中断资源有限时,中断程序只能将处理该任务的信息条件准备好后返回。
当程序按顺序没有执行到该任务时,该任务的执行必须等待,所以将会造成任务每次的执行时间间隔不定,不能及时处理紧急事务,影响系统的运行。
这种情况在要求限定时间内周期性处理事务的系统中是不允许发生的,而且只由应用者编写的复杂程序很可能会出现Bug。
嵌入式操作系统是实时操作系统,运行于特定的硬件平台上,一般包括处理器、存储器及外设器件和I/O 端口,包括操作系统软件,要求实时和多任务操作,用户可以在其基础上添加应用程序。
使用嵌入式操作系统的用户只需添加所需的任务到操作系统中即可,既节省开发时间,又提高程序的可靠性。
2 UC/OSII 及其任务介绍UC/OSII(Micro Control Operation System Two)是一种源代码公开的嵌入式操作系统,程序绝大部分是用C 语言写的,带有少量的汇编程序,并且有详细的说明和示例,可移植性好、易调试,稳定性与可靠性高,功能也比较完善。
UC/OSII 和其他大部分的嵌入式操作系统的内核都是占先式内核,被分为最高优先级的任务一旦准备就绪,立刻就能得到CPU 的控制权,可以剥夺低优先级任务的CPU 使用权,处理系统最紧急的事务。
UC/OSII 的任务实际是一段程序,执行特定的功能,拥有自己的代码和堆栈空间(保存该任务的寄存器、返回地址和临时参数),一般都是空函数,不会返回任何值。
任务执行一次后,设置延时参数OSTCBDly, 表明在经过OSTCBDly 个时钟周期后再次运行,然后任务进行切换,使其他任务运行。
例如:void Task(void){ 参数定义for(;;) {任务。
什么是嵌入式技术

3.4 嵌入式技术一、定义嵌入式技术执行专用功能并被内部计算机控制的设备或者系统。
嵌入式系统不能使用通用型计算机,而且运行的是固化的软件,用术语表示就是固件(fir mware),终端用户很难或者不可能改变固件。
二、简介尽管绝大多数嵌入式系统是用户针对特定任务而定制的,但它们一般都是由下面几个模块组成的:一台计算机或者微控制器,字长可能是可怜的4位或者8位、16位、32位甚至是64位。
用以保存固件的ROM(非挥发性只读存储器)。
用以保存程序数据的RAM(挥发性的随机访问存储器)。
连接微控制器和开关、按钮、传感器、模数转化器、控制器、LED(发光二极管)和显示器的I/O端口。
一个轻量级的嵌入式操作系统,一般是自行编写的。
专门的单片微控制器是大多数嵌入式系统的核心。
通过把若干个关键的系统组成部分集成到单个芯片上,系统设计者就可以得到小而便宜、可以操作较少外围电子设备的计算机。
嵌入式系统的一般模型并不足以定义嵌入式系统本身。
例如,某些嵌入式系统常常比标准PC机箱小不了多少。
这类设备有:信息查询以及销售点终端。
某些工业控制系统。
游戏控制台(例如基于x86和Windows的Xbox)。
现在嵌入式开发主要是指用某种语言(如汇编、C、C++、Java、C#等)在嵌入式软硬件开发环境中进行开发。
三、技术应用嵌入式是一种专用的计算机系统,作为装置或设备的一部分。
通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。
事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。
嵌入式技术近年来得到了飞速的发展,但是嵌入式产业涉及的领域非常广泛,彼此之间的特点也相当明显。
例如很多行业:手机、PDA、车载导航、工控、军工、多媒体终端、网关、数字电视……手机领域以手机为代表的移动设备可谓是近年来发展最为迅猛的嵌入式行业。
嵌入式计算机简介

嵌入式计算机简介一、嵌入式系统的概念着重理解“嵌入”的概念通俗的说,嵌入式技术就是"专用"计算机技术,这个专用,是指针对某个特定的应用,如针对网络、针对通信、针对音频、针对视频,针对工业控制等,从学术的角度,嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统,它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。
主要从三个方面上来理解。
1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。
比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU 内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。
IXP系列最高主频可以达到1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。
IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale 内核的最高的处理器了。
2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM 中。
而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE 在内核定制时,会有相应选择,其中就是Wordpad,PDF,MediaPlay等等选择,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。
嵌入式实时操作系统UC教案范文

嵌入式实时操作系统UC/OS-II原理及应用第1章嵌入式实时操作系统的基本概念1.1 计算机操作系统1.1.1 什么是计算机操作系统1、计算机体系构架2、操作系统的作用:1)对计算机系统的主要资源进行管理;2)向计算机用户提供相关服务;3)隐藏计算机硬件,为应用程序提供透明的操作环境。
1.1.2 操作系统的作用和功能1、操作系统的作用为应用程序提供一个界面友好,性能稳定、安全,效率高,操作方便的虚拟计算机2、操作系统的功能1)处理器管理2)存储管理3)设备管理4)文件管理5)网络和通信管理6)提供用户接口1.2 嵌入式系统和嵌入式操作系统1.2.1 嵌入式系统的基本概念1、什么是嵌入式系统2、嵌入式系统的发展历程微型计算机→单板机→单片机→单片系统3、嵌入式系统的特点1)专用性强2)可裁剪性好3)实时性与可靠性好4)功耗低1.2.2 嵌入式操作系统1、什么是嵌入式操作系统运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和控制的系统软件2、嵌入式操作系统的特点1)微型化2)可裁剪性3)实时性4)高可靠性5)易移植性3、实时操作系统能及时响应外部事件的请求,并能及时控制所有实时设备与实时任务协调运行,且能在一个规定的时间内完成对事件的处理,这种操作系统称为实时操作系统。
4、实时操作系统的基本要求1)实时系统的计算必须产生正确的结果。
(逻辑或功能正确)Logical or Function Correctness)2)实时系统的计算必须在预定的时间内完成。
(时间正确)Timing Correctness5、实时操作系统的分类1)硬实时操作系统(极严格的时间内完成实时任务)2)软实时操作系统(系统完成实时任务的截止时间要求不十分严格)1.2.3 实时操作系统需要满足的条件1、实时操作系统应满足的条件1)必须是多任务操作系统2)任务的切换时间与系统中的任务数无关3)中断延迟的时间可预知并尽可能短1.2.4 嵌入式系统的任务及嵌入实时操作系统1、嵌入式系统的任务由于嵌入式系统所完成的是对一个装置或设备的控制任务,任务的功能相对固定,因此在一般情况下嵌入式实时操作系统所支持的典型任务应该是一个无限循环结构。
嵌入式认识

嵌入式系统的认识以前以为嵌入式只是一门简单应用的课程,跨度比较小,随着老师的讲解慢慢的迈入嵌入式系统的大门。
嵌入式系统的应用日益广泛,可以说无所不在、无处不在,嵌入式系统的快速发展也极大地丰富、延伸了嵌入式系统的概念。
一、嵌入式定义:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。
二、嵌入式系统组成嵌入式系统一般指非 PC 系统,它包括硬件和软件两部分。
硬件包括处理器/微处理器、存储器及外设器件和 I/O 端口、图形控制器等。
软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。
有时设计人员把这两种软件组合在一起。
应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
嵌入式系统的核心是嵌入式微处理器。
任何嵌入式系统都包括硬件和软件两个方面。
硬件包括微处理器、存储器、I/O 端口和图形控制器等。
在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。
其中操作系统和应用程序都可以固化在 ROM 中。
软件包括操作系统软件和应用软件:应用软件控制着嵌入式系统的运作和行为;而操作系统软件则为应用程序提供必要的底层支持,它一般是通过提供应用编程接口(API)来实现的。
一般来说,嵌入式的软硬件都有一下的特点:硬件特点:·体积小,集成效率高。
嵌入式系统总是去除冗余,力争最小的系统完成目标功能,特别在一些手持设备中更是这样。
·面向特定应用的特点。
具体嵌入式系统只能适合某一特定应用,针对另外应用就需要重新设计硬件系统。
·低功耗,电磁兼容性好,能在恶劣环境下工作,几时死机也要求能够快速重启。
软件特点:·嵌入式软件的研发与硬件相关。
·软件代码要求高效率和高可靠性。
·软件一般固化在 Flash 或 ROM 中。
在嵌入式领域中,实施是一个很重要的概念。
嵌入式操作系统uCOS(精)

嵌入式操作系统—uC/OS
OSTCBStkPtr是指向当前任务栈顶的指针。μC/OS-Ⅱ 允许每个任务有自己的栈,尤为重要的是,每个任务 的栈的容量可以是任意的。有些商业内核要求所有任 务栈的容量都一样,除非用户写一个复杂的接口函数 来改变之。这种限制浪费了RAM,当各任务需要的栈 空间不同时,也得按任务中预期栈容量需求最多的来 分配栈空间。OSTCBStkPtr是OS_TCB数据结构中唯一 的一个能用汇编语言来处置的变量(在任务切换段的 代码Context-switching code之中),把OSTCBStkPtr放 在数据结构的最前面,使得从汇编语言中处理这个变 量时较为容易。
14
嵌入式操作系统—uC/OS
.OSTCBNext和.OSTCBPrev用于任务控 制块OS_TCBs的双重链接,该链表在时 钟节拍函数OSTimeTick()中使用,用于 刷新各个任务的任务延迟变 量.OSTCBDly,每个任务的任务控制块 OS_TCB在任务建立的时候被链接到链表 中,在任务删除的时候从链表中被删除。 双重连接的链表使得任一成员都能被快 速插入或删除。
17
嵌入式操作系统—uC/OS
任务的调度--OSSched
uC/OS是占先式实时多任务内核,优先级 最高的任务一旦准备就绪,则拥有CPU 的所有权开始投入运行。 uC/OS中不支持时间片轮转法,每个任务 的优先级要求不一样且是唯一的,所以 任务调度的工作就是:查找准备就绪的 最高优先级的任务并进行上下文切换。
8
嵌入式操作系统—uC/OS
运行(Running):准备就绪的最高优先级的任务获得CPU的控制 权,从而处于运行态。指针OSTCBCur指向正在运行的任务。 等待或挂起(Pending):正在运行的任务由于调用延时函数 OSTimeDly( )或等待事件信号量的来临而将自身挂起,因而处于 等待或挂起态。因为等待某事件而被挂起的任务注册在该事件的 等待列表中。 中断态(Interrupt):正在运行的任务可以被中断,除非是该任务 将中断关闭。被中断的任务进入中断服务程序(ISR)。如果中断服 务程序使一个更高优先级的任务准备就绪,则中断服务程序结束 后,更高优先级的任务开始运行程序。
嵌入式ucos综述

uC/OS综述开发板介绍:主控芯片全称STM32F103VET6,属于增强型系列,100管脚,512K字节闪存存储器,LQFP封装,工业温度范围:-40°C~85°C,目前在市场上应用于较高端场合。
以下为STM32内部结构图:ARM®的STM32微控制器内部构造Cortex-M属于工业控制系列,STM32芯片就属于这个系列,内设丰富,两个ADC,一个DAC,5个定时器两个DMA等,完全能胜任一般应用。
该芯片主要应用于工业级别的电机控制,工业控制等,已经是目前工控领域市场的主流。
平时我们写的程序由一个main函数开始,之后再在main函数里面添加一个死循环,让死循环里面的代码和单片机本身一直处于互相协调的工作状态,但当程序变得庞大,处理事件比较多,对外界的条件也不能完全掌握的时候这样组织程序的写法就变得效率不高,实时性不高,但STM32没有MMU内存管理机制,也没有ARM9、ARM11那样高的主频可以运行一个系统在内核里面以实现对不同任务的调度,所以我们在合适的时候可以选择用uC/OS的方式书写程序,让整个系统能有较好的实时性和可控性,虽然不能像Linux或者wince那样系统性的控制整个系统,但相比裸机已近有了很大的提高。
并且uC/OS属于开源的可裁剪代码。
uC/OS介绍:uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。
为了提供最好的移植性能,uC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。
uC/OS II可以简单的视为一个多任务调度器,在这个任务调度器之上完善并添加了和多任务操作系统相关的系统服务,如信号量、邮箱等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
概述特点:如果逻辑和时序出现偏差将会引起严重后果 分类:软实时系统和硬实时系统 软实时系统的宗旨是使各个任务运行的越快越好 硬实时系统各个任务不仅要执行无误而且要做到准时 大多数实时系统是两者的结合,且多数实时系统又是嵌入式的实时系统概念宛城布衣mcu8031@2003.0921前后台系统后台 ISR 前台代码的临界段代码的临界段也称为临界区,指处理时不可 分割的代码。
一旦这部分代码开始执行,则 不允许任何中断打入。
为确保临界段代码的 执行,在进入临界段之前要关中断,而临界 段代码执行完以后要立即开中断。
时 间ISRISRISR这种系统可称为前后台系统或超循环系统.应用程序是一个 无限的循环,循环中调用相应的函数完成相应的操作,这部分 可称为后台(Background),或叫任务级.中断服务程序处理异 步事件,这部分可称为前台(Foreground),或叫中断级.3 4资源与共享任何为任务所占用的实体都可称为资源。
资 源可以是输入输出设备,例如打印机、键 盘、显示器,资源也可以是一个变量,一个 结构或一个数组等。
可以被一个以上任务使用的资源叫做共享资 源。
为了防止数据被破坏,每个任务在与共 享资源打交道时,必须独占该资源。
多任务多任务运行的实现实际上是靠CPU(中央处理 单元)在许多任务之间转换、调度。
CPU只有 一个,轮番服务于一系列任务中的某一个。
多任务运行很像前后台系统,但后台任务有 多个。
多任务运行使CPU的利用率得到最大 的发挥,并使应用程序模块化。
在实时应用 中,多任务化的最大特点是,开发人员可以 将很复杂的应用程序层次化。
使用多任务, 应用程序将更容易设计与维护。
5 6任务TASK 1 TASK 2 TASK n任务的状态一个任务,也称作一个线 程,是一个简单的程序,该 程序可以认为CPU完全只 属该程序自己。
实时应用程 序的设计过程,包括如何把 问题分割成多个任务,每个 任务都是整个应用的某一部 分,每个任务被赋予一定的 优先级,有它自己的一套 CPU寄存器和自己的栈空 间。
Stack StackStack Stack Stack Stack ……等待Status Status SP SP Priority PriorityStatus Status SP SP Priority PriorityStatus Status SP SP Priority PriorityMemory CPU休眠运行就绪中断CPU RegistersSP SP休眠态相当于该任务驻留在内存中,但 休眠态相当于该任务驻留在内存中,但 并不被多任务内核所调度。
就绪意味着该任务已经准备好,可以运 就绪意味着该任务已经准备好,可以运 行了,但由于该任务的优先级比正在运 行的任务的优先级低,还暂时不能运 行。
运行态的任务是指该任务掌握了CPU的 运行态的任务是指该任务掌握了CPU的 控制权,正在运行中。
挂起状态也可以叫做等待(WAITING) 挂起状态也可以叫做等待(WAITING) 事件态,指该任务在等待,等待某一事 件的发生,(例如等待某外设的I/O操 件的发生,(例如等待某外设的I/O操 作,等待某共享资源由暂不能使用变成 能使用,等待定时脉冲的到来或等待超 时信号的到来以结束目前的等待,等 等)。
发生中断时,CPU 提供相应的中断服 发生中断时,CPU 务,原来正在运行的任务暂不能运行, 就进入了中断状态。
就进入了中断状态。
8多任务7任务切换(Context Switch or Task Switch)当多任务内核决定运行另外的任务时,它保存正在 运行任务的当前状态(Context),即CPU寄存器 中的全部内容。
这些内容保存在任务的当前状况保 存区(Task’s Context Storage area),也就是任 务自己的栈区之中。
入栈工作完成以后,就是把下 一个将要运行的任务的当前状况从该任务的栈中重 新装入CPU的寄存器,并开始下一个任务的运行。
这 个过程叫做任务切换。
任务切换过程增加了应用程 序的额外负荷。
CPU的内部寄存器越多,额外负荷就 越重。
做任务切换所需要的时间取决于CPU有多少寄 存器要入栈。
实时内核的性能不应该以每秒钟能做 多少次任务切换来评价。
9内核(Kernel)多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时 间,并且负责任务之间的通讯。
内核提供的基本服务是任务切换。
之所以使用实时内核可以大大简化应 用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内 核来管理它们。
内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核 本身的数据结构增加了RAM的用量。
但更主要的是,每个任务要有自己的 栈空间,这一块吃起内存来是相当厉害的。
内核本身对CPU的占用时间一般在2到5个百分点之间。
单片机一般不能运行实时内核,因为单片机的RAM很有限。
通过提供必 不可缺少 的系统服务,诸如信号量管理,邮箱、消息队列、延时等,实 时内核使得CPU的利用更为有效。
10调度(Scheduler)调度就是要决定该轮到哪个任务运行了。
多数实时内核是基于优先级调度法的。
每个任务根 据其重要程度的不同被赋予一定的优先级。
基于优先级的调度法,指CPU总是让处在就绪态的优 先级最高的任务先运行。
究竟何时让高优先级任务掌握CPU的使用权,有两 种不同的情况,这要看用的是什么类型的内核,是 不可剥夺型的还是可剥夺型内核。
11不可剥夺型内核(Non-Preemptive Kernel)不可剥夺型内核要求每个任务自我放弃CPU的所有权。
不可 剥夺型调度法也称作合作型多任务,各个任务彼此合作共享 一个CPU。
异步事件还是由中断服务来处理。
中断服务可以 使一个高优先级的任务由挂起状态变为就绪状态。
但中断服 务以后控制权还是回到原来被中断了的那个任务,直到该任 务主动放弃CPU的使用权时,那个高优先级的任务才能获得 CPU的使用权。
不可剥夺型内核的一个优点是响应中断快。
在任务级,不可 剥夺型内核允许使用不可重入函数。
每个任务都可以调用非 可重入性函数,而不必担心其它任务可能正在使用该函数, 从而造成数据的破坏。
因为每个任务要运行到完成时才释放 CPU的控制权。
当然该不可重入型函数本身不得有放弃CPU 控制权的企图。
不可剥夺型内核的另一个优点是,几乎不需要使用信号量保 护共享数据。
运行着的任务占有CPU,而不必担心被别的任 务抢占。
但这也不是绝对的,在某种情况下,信号量还是用 得着的。
处理共享I/O设备时仍需要使用互斥型信号量。
例 12 如,在打印机的使用上,仍需要满足互斥条件。
不可剥夺型内核运行原理任务正在运行 低优先级任务 ISR 中断到来,中断原来任务 执行中断服务子程序,使一个 高优先级任务进入就绪状态 由于是不可剥夺型内核,低优 先级任务未执行完毕,高优 先级任务不能立即执行 中断返回 继续执行原来任务 任务执行完毕,控制权交给 高优先级、已就绪任务 高优先级任务 高优先级任务开始执行13不可剥夺型内核不可剥夺型内核的最大缺陷在于其响应时间。
高优先级的任 务已经进入就绪态,但还不能运行,要等,也许要等很长时 间,直到当前运行着的任务释放CPU。
与前后系统一样,不 可剥夺型内核的任务级响应时间是不确定的,不知道什么时 候最高优先级的任务才能拿到CPU的控制权,完全取决于应 用程序什么时候释放CPU。
不可剥夺型内核允许每个任务运行,直到该任务自愿放弃 CPU的控制权。
中断可以打入运行着的任务。
中断服务完成 以后将CPU控制权还给被中断了的任务。
任务级响应时间要 大大好于前后系统,但仍是不可知的,商业软件几乎没有不 可剥夺型内核。
低优先级任务14可剥夺型内核低优先级任务可剥夺型内核运行原理低优先级任务正在运行 ISR 中断到来,中断当前任务 执行中断服务,把另一个任务 置为高优先级、就绪状态高优先级任务当系统响应时间很重要时,要使用可剥夺型内核。
最高优先级的任务一旦就绪,总能得到CPU的控制 权。
当一个运行着的任务使一个比它优先级高的任务进 入了就绪态,当前任务的CPU使用权就被剥夺了, 或者说被挂起了,那个高优先级的任务立刻得到了 CPU的控制权。
如果是中断服务子程序使一个高优先级的任务进入 就绪态,中断完成时,中断了的任务被挂起,优先 级高的那个任务开始运行。
15中断服务完成,退出中断 进入新的优先级更高的任务 新任务执行 新任务执行完毕, 控制权还给原来的任务低优先级任务继续执行原来的任务16可剥夺型内核使用可剥夺型内核,最高优先级的任务什么时候可以执行, 可以得到CPU的控制权是可知的。
使用可剥夺型内核使得任务级响应时间得以最优化。
使用可剥夺型内核时,应用程序不应直接使用不可重入型函 数。
调用不可重入型函数时,要满足互斥条件,这一点可以 用互斥型信号量来实现。
如果调用不可重入型函数时,低优 先级的任务CPU的使用权被高优先级任务剥夺,不可重入型 函数中的数据有可能被破坏。
可剥夺型内核总是让就绪态的高优先级的任务先运行,中断 服务程序可以抢占CPU,到中断服务完成时,内核让此时优 先级最高的任务运行(不一定是那个被中断了的任务)。
任 务级系统响应时间得到了最优化,且是可知的。
17可重入性(Reentrancy) 可重入型函数可以被一个以上的任务调 用而不必担心数据的破坏。
可重入型函数任何时候都可以被中断, 一段时间以后又可以运行,而相应数据 不会丢失。
可重入型函数只使用局部变量,即变量 保存在CPU寄存器中或堆栈中。
如使用全 局变量,则要对全局变量予以保护。
18可重入型函数void strcpy(char *dest, char *src) { while (*dest++ = *src++) { ; } *dest = NUL; }19 函数strcpy()做字符串的复制。
因 为参数保存在堆栈中,故函数可以被 多个任务调用,不必担心各任务调用 函数期间会破坏对方的指针。
不可重入型函数Task 11 Taskint Temp; void swap(int *x, int *y) { Temp = *x;} While (1) { X = 1; Y = 2; Swap (&x, &y); { Temp = *x; *x = *y; *y = Temp; }Task 22 Task*x = *y; *y = Temp; }20。