嵌入式操作系统UC-OSII的内核结构及介绍

合集下载

20 嵌入式系统内核

20 嵌入式系统内核
– 可剪裁: 能根据嵌入式系统的功能的要求选择所需的协 议,对完整的TCP/IP协议簇进行剪裁,以满足 用户的需要。 – 采用“零拷贝”(Zero Copy)技术,提高实 时性 所谓“零拷贝”技术,是指TCP/IP协议栈没 有用于各层间数据传递的缓冲区,协议栈各层 间传递的都是数据指针,只有当数据最终要被 驱动程序发送出去或是被应用程序取走时,才 进行真正的数据搬移。
R14_irq(LR)
R14_irq PC+4
– 中断发生时,对中断现场进行保存,并且转到相应的 服务程序上执行 – 中断退出前,对中断现场进行恢复 – 中断栈切换
– 中断退出时的任务调度
嵌入式内核

时间管理
– 提供高精度、应用可设置的系统时钟,该时钟 是嵌入式系统的时基,可设置为十毫秒以下。
– 提供日历时间,负责与时间相关的任务管理工 作如任务对资源有限等待的计时、时间片轮转 调度等,提供软定时器的管理功能等。 – 通用操作系统的系统时钟的精度由操作系统确 定,应用不可调,且一般是几十个毫秒。
C/OS的性能特点
• • •

• • • •
占先式(Preemptive) 多任务 C/OS-II可以管理64个任务,然而,目前这一版本保留8个给 系统。应用程序最多可以有56个任务。 可确定性 全部 C/OS-II的函数调用与服务的执行时间具有可确定性。 任务栈 每个任务有自己单独的栈, C/OS-II允许每个任务有不同的 栈空间,以便压低应用程序对RAM的需求。 系统服务 C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、 块大小固定的内存的申请与释放、时间相关函数等。 中断管理 中断可以使正在执行的任务暂时挂起,如果优先级更高的任务 被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执 行,中断嵌套层数可达255层。 稳定性与可靠性

《嵌入式操作系统UCOSII原理及应用》任哲—学习笔记

《嵌入式操作系统UCOSII原理及应用》任哲—学习笔记

第一章嵌入式实时操作系统的概念1. 计算机操作系统:对计算机系统资源进行管理,并向计算机用户提供若干服务。

OR:计算机操作系统是计算机硬件的一个软件包装,它为应用程序设计人员提供了一个更便于使用的虚拟计算机。

2. 操作系统功能:1)处理器的管理:(1) 中断管理;(2)对处理器工作进行调度;2)存储的管理:3)设备的管理:4)文件的管理:5)网络和通信的管理:6)提供用户接口:3. 嵌入式系统:对对象进行自动化控制而使其具有智能化并可嵌入对象体系中的专用计算机系统。

4. 嵌入式操作系统:运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和控制的系统软件。

5. 实时操作系统:(1)多任务系统;(2)任务切换时间与系统中的任务数无关;(3)中断延时的时间可预知并尽可能短。

第二章uC/OS-II中的任务1. uC/OS-II操作系统内核的主要工作就是对任务进行管理和调度。

2. UC/OS-II的任务组成部分:(1)任务程序代码:任务的执行部分;(2)任务堆栈:保存任务工作环境;(3)任务控制块:保存任务属性。

3. uC/OS-II的两种任务:用户任务:由应用程序设计者编写的任务。

系统任务:系统提供的任务。

4. 任务的状态:(1)睡眠状态:是否配置或剥夺任务控制块的配置情况;(2)就绪状态:任务就绪表进行就绪登记,等待优先级,具备运行充分条件;(3)运行状态:获得CPU使用权限,任何时候只有一个任务处于运行状态。

(4)等待状态:正在运行的任务,需要等待一段时间或一件事件发生在运行,暂时交出CPU使用权。

5. 用户任务代码结构:任务的执行代码通常是一个无限循环结构,并且在这个循环中可以响应中断,这种结构叫做超循环结构。

6. OSTaskCreate()用来创建任务的函数;OSStart()用来启动各项任务的函数,启动后,任务就交由操作系统来管理和调度了。

7. uC/OS-II预定义了两个为应用程序服务的系统任务:空闲任务:每个应用程都必须使用的,是CPU处于空闲时有事可做,也可在其中添加用户工作代码;统计任务:根据实际需要进行选择使用。

uCOS-II一些入门资料(内核架构解析等)

uCOS-II一些入门资料(内核架构解析等)

嵌入式系统——基础知识操作系统OS控制和管理计算机软硬件资源,合理组织计算机工作流程,方便用户使用计算机的系统软件。

可将OS看成是应用程序与硬件间的接口或虚拟机。

OS功能:进程管理、存储管理、文件管理、设备管理、网络和通信管理等。

嵌入式操作系统EOS运行在嵌入式硬件平台上,对整个系统及其所操作的部件装置等资源进行统一协调、指挥和控制的系统软件。

EOS特点:微型化、可裁剪性、实时性、高可靠性、易移植性重点关注:高实时性、硬件相关依赖性、软件固化、应用专用性、网络功能。

实时操作系统TROS能使计算机及时响应外部事件请求,并能及时控制所有实时设备与实时任务协调运行,且能在规定时间内完成事件处理的OS。

RTOS基本要求:1、逻辑功能正确:RTOS的计算必须产生正确的结果;2、时间正确:RTOS的计算必须在预定的周期内完成。

RTOS应满足条件:1、多任务系统;2、任务的切换时间应与系统中的任务书无关;3、中断延时的时间可预知并尽可能短。

无论在什么情况下,OS完成任务所需的时间应该是在程序设计时就可预知的。

嵌入式实时操作系统ERTOS用于嵌入式系统,对系统资源和多个任务进行管理,且具有高可靠性、良好可裁剪性等优良性能的,为应用程序提供运行平台和实时服务的微型系统软件。

ERTOS最重要的三项服务:1、多任务管理2、内存管理3、外围资源管理嵌入式微处理器(特点)1、对实时多任务OS有很强的支持能力;2、具有功能很强的存储区域保护功能;3、处理器结构可扩展;4、低功耗;微处理器主要发展方向:小体积、高性能、低功耗微处理器分类:MCU、MPU、DSP、SOC嵌入式系统发展方向1、嵌入式开发是一项系统工程,嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,还需要提供强大的硬件开发工具与软件支持包;2、网络化、信息化的要求随着因特网技术的成熟、宽带的提高而日益提高,使得以往单一功能的设备功能不再单一,结构更加复杂;3、网络互连成为必然趋势(IEEE1394、USB、CAN、Bluetooth等网络接口);4、精简系统内核、算法、降低功耗和软硬件成本;5、提供友好的多媒体人机界面。

嵌入式操作系统概述

嵌入式操作系统概述

1.1嵌入式操作系统概述传统的嵌入式系统以前后台方式工作,一般主程序是一个无限循环,在后台按照一定的执行顺序调用不同的子程序模块来实现应用需求;中断服务子程序则在前台处理响应时间要求高的突发事件。

随着系统功能的增强和用户需求的增加,给任务调度和共享资源的管理带来了很高的复杂性,使得开发和排错的难度越来越大,甚至在某些情况下难以满足应用需求。

嵌入式操作系统可以将负杂的应用分解成多个任务,这些任务在系统内部分时运行,任务之间以优先级作为切换的依据,由操作系统按照一定的机制进行调度,大大降低了用户功能实现的复杂度。

其优势主要体现在如下几方面:1.便于应用系统的设计、维护和扩展,提高了代码的课重用性和可读性。

多任务分解了复杂的应用,可以把系统分解成一个个相对独立的子功能模块,这些子功能模块组合在一起形成了一个写作良好的有机整体。

模块化的设计方法可以让整个系统变得简单直观,各模块功能单一,模块之间关系清晰、明确,模块可重复使用,开发、维护周期大大缩短。

由于整个系统有多个模块组成,所以增加新功能也只是为系统再增加几个新模块而已,对整个系统没有太大影响,系统易于扩展。

2.可裁剪,适合于资源紧张的嵌入式系统。

嵌入式系统与通用系统的一个主要区别就是其需求的明确并且个性化。

嵌入式操作系统可裁剪的特性,使得当系统不需要某些功能时,可将其裁减掉,以节省硬件资源,降低系统成本。

3.实时性,使对时间要求苛刻的事件能够得到及时处理。

大多数嵌入式操作系统都提供任务的实时调度保证,使得对时间敏感的任务在确定的时间内能够得到及时响应,这对工业控制等应用领域非常重要。

4.有利于设计出稳定可靠的应用系统。

嵌入式操作系统提供了大量的系统功能,而且一般都经过了严格的测试,使得在此基础上开发应用系统更简便且易于排错。

有些嵌入式操作系统还具有足够的开放性,允许用户深入了解和掌握其内部结构原理,并根据自己的需求特点编写应用系统,更好地发挥操作系统的效率和可靠性。

嵌入式操作系统uCOS(精)

嵌入式操作系统uCOS(精)
13
嵌入式操作系统—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)。如果中断服 务程序使一个更高优先级的任务准备就绪,则中断服务程序结束 后,更高优先级的任务开始运行程序。

《嵌入式操作系统UCOSII原理及应用》任哲—学习笔记

《嵌入式操作系统UCOSII原理及应用》任哲—学习笔记

《嵌入式操作系统UCOSII原理及应用》任哲—学习笔记第一章嵌入式实时操作系统的概念1.计算机操作系统:对计算机系统资源进行管理,并向计算机用户提供若干服务。

OR:计算机操作系统是计算机硬件的一个软件包装,它为应用程序设计人员提供了一个更便于使用的虚拟计算机。

2.操作系统功能:1)处理器的管理:(1)中断管理;(2)对处理器工作进行调度;2)存储的管理:3)设备的管理:4)文件的管理:5)网络和通信的管理:6)提供用户接口:3.嵌入式系统:对对象进行自动化控制而使其具有智能化并可嵌入对象体系中的专用计算机系统。

4.嵌入式操作系统:运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和控制的系统软件。

5.实时操作系统:(1)多任务系统;(2)任务切换时间与系统中的任务数无关;(3)中断延时的时间可预知并尽可能短。

第二章uC/OS-II中的任务1.uC/OS-II操作系统内核的主要工作就是对任务进行管理和调度。

2.UC/OS-II的任务组成部分:(1)任务程序代码:任务的执行部分;(2)任务堆栈:保存任务工作环境;(3)任务控制块:保存任务属性。

3.uC/OS-II的两种任务:用户任务:由应用程序设计者编写的任务。

系统任务:系统提供的任务。

4.任务的状态:(1)睡眠状态:是否配置或剥夺任务控制块的配置情况;(2)就绪状态:任务就绪表进行就绪登记,等待优先级,具备运行充分条件;(3)运行状态:获得CPU使用权限,任何时候只有一个任务处于运行状态。

(4)等待状态:正在运行的任务,需要等待一段时间或一件事件发生在运行,暂时交出CPU使用权。

5.用户任务代码结构:任务的执行代码通常是一个无限循环结构,并且在这个循环中可以响应中断,这种结构叫做超循环结构。

6.OSTakCreate()用来创建任务的函数;OSStart()用来启动各项任务的函数,启动后,任务就交由操作系统来管理和调度了。

uCOS-II嵌入式实时操作系统原理与移植

uCOS-II嵌入式实时操作系统原理与移植
任务调度前上下文切换
1,决定是否进行上下文切换 2,保存当前执行进程的上下文
包括程序计数器PC、通用寄存器、 与任务有关的数组、表格、链等。
uC/OS-II采用可
剥夺实时内核,
含义是最高优先
0
级任务一旦就绪,
总能得到CPU使
1
用权。
系统保留4个
2
最高优先级
3
4
5
执行该任务
6
7
……
uC/OS-II 的中断(ISR)
任务2—TCB--就绪—任务堆栈
任务3--TCB--等待—任务堆栈
任务4--TCB --睡眠—任务堆栈
uC/OS-II的任务之间通信
任务之间共享的信息成为事件,同一时刻只能有一个任务使 用共享信息,因此为每个事件构建一个事件控制块ECB来保 证任务之间安全共享信息。事件控制块总数由OS_CFG.H中的 OS_MAX_EVENTS定义。事件包括信号量、邮箱、消息队列。
内存组配置文件 储存器映射MMU初始化与操作 Nand flash控制器初始化与操作
与CPU相关的配置选项 开机画面BMP文件 开机画面BMP文件 开机画面BMP文件 初始化mini2440目标板 定义任务优先级、堆栈大小及函数原型声明 初始化操作系统定时器0 开机画面BMP文件
关于信号量和等待的API功能函数
//任务循环
{
OSPrintf("\nEnter Main Task\n");
OSTimeDly(OS_TICKS_PER_SEC); //将任务延迟一段时间,进入等待态
}
}
uC/OS-II的任务都运行在无限循环中。
欢迎访问机电技术博客:/spurtltl@126/

关于uc-osii的基本简介

关于uc-osii的基本简介

---实时操作系统的使用,能够简化嵌入式系统的应用开发,有效地确保稳定性和可靠性,便于维护和二次开发。

μC/OS-II是一个基于抢占式的实时多任务内核,可固化、可剪裁、具有高稳定性和可靠性,除此以外,μC/OS-II的鲜明特点就是源码公开,便于移植和维护。

在μC/OS-II官方的主页上可以查找到一个比较全面的移植范例列表。

但是,在实际的开发项目中,仍然没有针对项目所采用芯片或开发工具的合适版本。

那么,不妨自己根据需要进行移植。

本文则以在TMS320C6711 DSP上的移植过程为例,分析了μC/OS-II在嵌入式开发平台上进行移植的一般方法和技巧。

μC/OS-II移植的基本步骤在选定了系统平台和开发工具之后,进行μC/OS-II的移植工作,一般需要遵循以下的几个步骤:●深入了解所采用的系统核心●分析所采用的C语言开发工具的特点●编写移植代码●进行移植的测试●针对项目的开发平台,封装服务函数(类似80x86版本的PC.C和PC.H)系统核心无论项目所采用的系统核心是MCU、DSP、MPU,进行μC/OS-II的移植时,所需要关注的细节都是相近的。

首先,是芯片的中断处理机制,如何开启、屏蔽中断,可否保存前一次中断状态等。

还有,芯片是否有软中断或是陷阱指令,又是如何触发的。

此外,还需关注系统对于存储器的使用机制,诸如内存的地址空间,堆栈的增长方向,有无批量压栈的指令等。

在本例中,使用的是TMS320C6711 DSP。

这是TI公司6000系列中的一款浮点型号,由于其时钟频率非常高,且采用了超常指令字(VLIW)结构、类RISC指令集、多级流水等技术,所以运算性能相当强大,在通信设备、图像处理、医疗仪器等方面都有着广泛的应用。

在C6711中,中断有3种类型,即复位、不可屏蔽中断(NMI)和可屏蔽中断(INT4-INT15)。

可屏蔽中断由CSR寄存器控制全局使能,此外也可用IER寄存器分别置位使能。

而在C6711中并没有软中断机制,所以μC/OS-II的任务切换需要编写一个专门的函数实现。

嵌入式实时操作系统ucosii

嵌入式实时操作系统ucosii

医疗电子
ucosii在医疗电子领域 中应用于医疗设备、监
护仪、分析仪等。
物联网
ucosii在物联网领域中 应用于传感器节点、网
关、路由器等设备。
02
ucosii的体系结构与内核
任务管理
任务创建
ucosii提供了创建新任务的函数,如 OSTaskCreate(),用于创建新任务。
任务删除
ucosii提供了删除任务的函数,如 OSTaskDelete(),用于删除不再需要的任 务。
时间管理
01
02
03
时间节拍
ucosii通过定时器产生固 定时间间隔的节拍信号, 用于任务调度和时间管理 。
超时处理
ucosii支持超时机制,当 某个任务等待时间超过预 定阈值时触发相应的处理 函数。
时间函数
ucosii提供了一系列时间 函数,如OSTimeDly()、 OSTimeTick()等,用于时 间相关的操作和控制。
智能家居
ucosii适用于智能家居领域,可应用于 智能家电控制、家庭安全监控等场景。
02
03
医疗电子
ucosii适用于医疗电子领域,如医疗设 备控制、病人监控等,其可靠性和实 时性为医疗系统提供了有力保障。
THANKS。
应用软件的开发
任务管理
在UCOSII中,任务是用来实现应用程序功能的。在进行应用软件的开发时,需要创建和管理任务。这包括任务的创 建、删除、挂起和恢复等操作。
任务间通信
为了实现任务间的协同工作,需要进行任务间通信。UCOSII提供了信号量、消息队列、互斥量等机制来实现任务间 通信。在进行应用软件的开发时,需要利用这些机制来实现任务间的同步和数据交换。

以UCOSIII为例-嵌入式实时操作系统概述

以UCOSIII为例-嵌入式实时操作系统概述

单向同步例子
单向同步例子
多值信号量计数值
多值信号量计数值中保存了它还能被分配多少次 。换句话说,当ISR 提交该信号量n 次,那么该信 号量计数值就会增加n。
多个任务等待一个信号量
多个任务可以同时等待同样的信号量,假设每个 任务都被设置了定时期限。
事件标志组
当任务要与多个事件同步时可以使用事件标志。 若其中的任意一个事件发生时任务被就绪,叫做 逻辑或(OR)。 若所有的事件都发生时任务被就绪,叫做逻辑与 (AND)。 用户可以创建任意个事件标志组(限制于RAM) 。
恢复处于延时状态的任务
获得当前的时基计数值 设置当前的时基计数值
系统时基
uC/OS-III 需要一个能提供周期性时间的时基源 ,叫做系统时基。硬件定时器可以被设置为每秒产 生10 到1000Hz 的中断提供系统时基。 时基可以看做是系统的心跳。它的速率决定于时 基源。然而,时基速率越快,系统的额外支出就越 大。
实时内核
一.任务及其状态
什么是任务
任务(也叫做线程)是简单的程序。单CPU 中 ,在任何时刻只能是一个任务被执行。 任务看起来像C 函数。在大多数嵌入式系统中, 任务通常是无限循环的。任务不能像C 函数那样, 它是不能return 的。
任务的基本样子
任务的创建
一个简单的任务例子
任务状态
五.中断管理
什么是中断
中断是硬件机制,用于通知CPU 有异步事件发 生。当中断被响应时,CPU 保存部分(或全部)寄 存器值并跳转到中断服务程序(ISR)。ISR 响应 这个事件,当ISR 处理完成后,程序会返回中断前 的任务或更高优先级的任务。 在实时系统中,关中断的时间越短越好。长时间 关中断可能会导致中断来不及响应而重叠。

第二章uc-os概述__嵌入式操作系统

第二章uc-os概述__嵌入式操作系统

任务调度
调度工作
最高优先级任务 的寻找
通过建立就绪列表实现 u C / O S 中的每一个任 务都有独立的堆栈空间 ,并有一个称为任务控 制块TCB(Task Control Block)的数据结构,其 中第一个成员变量就是 保存的任务堆栈指针。
任务切换
任务调度模块首先用 变量 OSTCBHighRdy 记 录当前最高级就绪任 务的TCB 地址,然 后调用 OS_TASK_SW()函 数来进行任务切换
uC/OS-II 体系结构
用户应用程序 uC/OS-II与应用程序相关 uC/OS-II与处理器无关的代码 OS_CORE.C OS_Q.C 的代码 OS_FLAG.C OS_SEM.C OS_MBOX.C OS_TASK.C OS_CFG.H OS_MEM.C OS_TIME.C OS_MUTEX.C uC/OS-II.C INCLUDES.H uC/OS-II.H
任务间通信与同步
同步对象
信号量
事件
邮箱
消息队列
任务调度



uC/OS-II 采用的是可剥夺型实时多任务 内核。可剥夺型的实时内核在任何时候都 运行就绪了的最高优先级的任务。 uC/os-II的任务调度是完全基于任务优先 级的抢占式调度,也就是最高优先级的任 务一旦处于就绪状态,则立即抢占正在运 行的低优先级任务的处理器资源。 为了简化系统设计,uC/OS-II规定所有 任务的优先级不同,因为任务的优先级也 同时唯一标志了该任务本身
嵌入式操作系统uc/os概述
2.1 uc/os简介
2.2 uC/OS-II工作原理
2.3 uC/OS-II基本系统服务
2.4 uC/OS-II体系结构 2.5 uC/OS-II移植 2.6 uC/OS-II开发

嵌入式操作系统osII

嵌入式操作系统osII

把“选择项”传给OSTaskCreateExt() 任务的识别码,保留未用 任务控制块OS_TCBs的双向链接
/* 指向事件控制块*/
16/90
#if ((OS_Q_EN>0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN >0) void #endif INT16U INT8U INT8U INT8U INT8U INT8U INT8U #if OS_TASK_DEL_EN BOOLEAN #endif } OS_TCB;
主任 务
任 务 1
任 务 n
LCD 初 始 化 LCD_Init()
用户 程序
……
装 载 字 库 LoadFont()
调用系统配置文件 LoadConfigSys
消息 处理
事件驱动:非轮询
llxx@ 7/90
任务(如何把问题分割成多个任务?)
llxx@
8/90
llxx@ (TCB)
• OS_TCB保存任务的相关参数
– 包括任务堆栈指针,状态,优 先级,任务表位置,任务链表 指针等。 TCB结构
链表指针 任务ID 任务状态 任务优先级 任务上下文
• 所有的任务控制块分别属于 两条链表
– 空闲TCB表:单向链表,与系 统最大任务数有关 – 就绪链表:双向链表
中断响应 外部事件2
任务调度
任务执行 响应输出2
• 可移植性(Portable) • 可裁剪(Scalable)
– 通过条件编译(#define)实现
可固化(ROMable) 稳定性与可靠性
llxx@ 4/90
C/OS-II的文件结构
llxx@
双向链表链表指针任务id任务状态任务优先级任务上下文tcb结构llxxustceducn1590空任务列表?所有的任务控制块都被放置在任务控制块列表数所有的任务控制块都被放置在任务控制块列表数组组ostcbtbl中中系统初始化时所有任务控制块被链接成空任务控制系统初始化时所有任务控制块被链接成空任务控制块的单向链表块的单向链表任务建立后空任务控制块指针任务建立后空任务控制块指针ostcbfreelist指向的任务控制块就赋给了该任务然后的任务控制块就赋给了该任务然后ostcbfreelist的值调整为指向链表中的下一个空任务控制块

μC、OSII程序设计基础知识

μC、OSII程序设计基础知识
– 美国人Jean Labrosse 1992年完成 – 应用面覆盖了诸多领域,如照相机、医疗器械、
音响设备、发动机控制、高速公路电话系统、自 动提款机等
– 1998年C/OS-II,目前的版本C/OS -II V2.61, 2.72
– 2000年,得到美国航空管理局(FAA)的认证, 可以用于飞行器中
10.中断管理,中断可使正在执行的任务暂时挂起,如果优先级更 高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后 立即执行。中断嵌套层数可达255层。
11.稳定性与可靠性,2000年7月,µC/OS-Ⅱ在一个航空项目 中得到了美国联邦航空管理局对商用飞机的符合RTCA DO-178B标准的认证。可以说,µC/OS-Ⅱ的每一种功能、每一个 函数及每一行代码都经过了考验与测试。
6.1 C/OS-II系统的特点及结构
• µC/OS-Ⅱ是一个免费的、源代码公开的实时嵌入式内核,其内 核提供了实时系统所需要的一些基本功能。其中包含全部功能的 核心部分代码占用8.3 KB,全部的源代码约5500行,结构合理、 清晰易懂,且注解详尽,非常适合初学者进行学习分析。µC/ OS-Ⅱ不仅使用户得到廉价的解决方案,而且由于µC/OS-Ⅱ的 开放源代码特性,还使用户可针对自己的硬件优化代码,获得更 好的性能。
– 网站:
• μC/OS-II意为“微控制器操作系统版本2”。 世界上已有数千人在各个领域使用μC/OS, 例如,照相机行业、医疗器械、音响设施、 发动机控制、网络设备、高速公路电话系统、 自动提款机、工业机器人等等。很多高等院 校将μC/OS用于实时系统教学。
µC/OS-II图籍
µC/OS-II的各种商业应用
• 全世界有数百种产品在应用: – Avionics(航空电子设备) – Medical – Cell phones – Routers and switches – High-end audio equipment – Washing machines and dryers – UPS (uninterruptible Power Supplies) – Industrial controllers – GPS Navigation Systems – Microwave Radios – Instrumentation – Point-of-sale terminals – 更多
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式操作系统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(;;) {任务。

相关文档
最新文档