ucosii实时操作系统分析-任务管理及调度精讲

合集下载

第九讲 uCOS-II嵌入式实时操作系统

第九讲 uCOS-II嵌入式实时操作系统

第九讲 第九讲 系统函数 uC/OS-II 嵌入式实时操作系统
1、uC/OS-II简介 2、系统函数 3、任务组成 4、任务管理 5、时钟和中断 6、内存管理 7、移植方法 8、移植实例
9.2 9.2.1 总体组成 uC/OS-II的系统函数
1)uC/OS-II的组成: 与处理器无关的代码; 与
9.1 uC/OS-II 简介 9.1.3 应用范围
3)uC/OS-II的应用范围 • uC/OS已经移植到了很多CPU上,例如:
AnalogDevices的AD21xx; ARM的ARM7/ ARM9等; Hitachi的64180、H8/3xx和SH系列; Intel的80x86、Pentium、PentiumII、 8051、8052、MCS-251、80196等; Motorola的PowerPC、68K、CPU32、 ColdFire、M.Core、68HC系列; Siemens的80C166和TriCore; TexasInstruments的TMS320等;
9.3 9.3.1 任务组成 uC/OS-II的任务组成
1) 任务组成
9.3 9.3.2 任务状态 uC/OS-II的任务组成
2) 任务的状态:睡眠、就绪、运行、等 待和中断服务5种状态。
9.3 uC/OS-II的任务组成 9.3.3 任务优先级
3)任务的优先级 uC/OS-II 按硬件实时任务的可剥夺型 内核来设计的,因此每个任务必须要有一 个唯一的优先级,用于表明该任务在抢夺 微处理器时所具有的优先权。 uC/OS-II规定应用程序最多包含64个 任务,即最多64个优先级。
9.2 9.2.1 应用相关 uC/OS-II的系统函数
2)应用程序有关的部分 • OS_CFG.H: 配置文件

μC/OS-Ⅱ的多任务系统实时性分析与优先级分配

μC/OS-Ⅱ的多任务系统实时性分析与优先级分配


j ^L盖 入 j 毒 刍厢 —毒 :
… … … … r A 些喜田、
维普资讯
专 题 论 述
动 条 和状 态 标 志 块 , L D界 面 上 获 得 明确 的 操 作 指 示 , 在 C ② Fah除 了用 作 程 序 存 储 器 外 , 下 的部 分 作 为 非 ls 剩 易 失性 数 据 存储 器 。每个 Fl h块 为 1K 故 需要 1KB的 a s B,
显 示 状 态 标志 l
I会 大 大 加 重 系 统 负 担 , 应 用 程 序 的 运 行 受 到 影 响 , I 使 特 别 在 快 速 A/ 转 换 等 实 时 性 较 强 的场 合 , 法 得 到 及 时 D 无
的响 应 , 是才 有 了更 轻 量 级 的 S l RTOS等 操 作 系统 于 mal
的 出现 。
显 示 状 态 标志2
但 目前更 强 劲 的 5 1内 核 版 本 微 处 理 器 的 大 量 出 现 , 从 根 本 上 改 变 了 这种 情 况 。4 O MHz以 上 的主 频 , 周 期 单 指 令 的微 处 理器 , 上 6 加 4KB的程 序 空 间 和 8KB 以 上 的
确 保 每个 通 道 的正 确 操作 。 要求 在 通 道启 动 后 , 精 确 地 每 隔 0 1S 成 一 次 采 能 . 完
样 并处 理 数据 , 以每个 通 道 的最 长处 理 时 间 不 能 超 过 2 所 5
R AM 作 为 Fah的读写 缓 冲 区 ; 1 s
③ GUI自身 约 占去 了 1KB内存 ;
维普资讯
//  ̄ OS—I的多任务 系统 C l 实 时性分 析与优先 级分 配 *
■ 武汉 工 程 大 学 冉 全 钟 时 明 钱 环 环

_C_OS_II的实时性任务调度分析

_C_OS_II的实时性任务调度分析

操作系统的实时性主要体现在: 当优先级高的任 务要求工作时, 操作系统要以尽快的时间将此任务调 度到 CPU 执行。这里所花费的时间主要包括两部分: 查找最高优先级任务和任务切换[ 1 ]。 其中, 任务切换 ( 即 CPU 寄存器内容切换) 时间是和处理器相关的, 因此本文只分析 Λ C O S 2II 的任务调度算法是如何查 找最高优先级任务的。
3 2009208209 收到, 2009209230 改回 3 3 郑恭明, 男, 1980 年生, 讲师, 研究方向: 信号处理、 嵌入式及 EDA 技术与应用的教学和研究。
图 1 Λ C O S 2II 的任务就绪表
当 O SR dyT b l [ 0 ] 中 的 任 何 一 位 是 1 时, O SR dyG rp 的第 0 位置 1; 当 O SR dyT b l[ 1 ] 中的任何 一位是 1 时, O SR dyG rp 的第 1 位置 1; 当 O SR dyT b l [2 ] 中的任何一位是 1 时, O SR dyG rp 的第 2 位置 1; 当 O SR dyT b l[ 3 ] 中的任何一位是 1 时, O SR dyG rp 的
・6・ ( 总 854)
文章编号: 100325850 ( 2009) 1120006202
Λ C O S 2II 的实时性任务调度分析
2009 年
Ana lys is of Rea l- T i m e Ta sk Schedul ing of Λ C O S- II
郑恭明
( 长江大学电子信息学院 湖北荆州 434023)
I N T 8U con stO SU nM ap T b l[ 256 ]= { 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x00to 0x0F 3 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x10to 0x1F 3 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x20to 0x2F 3 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x30to 0x3F 3 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x40to 0x4F 3 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x50to 0x5F 3 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x60to 0x6F 3

uCOS-II的任务切换机理及中断调度优化

uCOS-II的任务切换机理及中断调度优化

摘要:μC/OS-II是一种适用于嵌入式系统的抢占式实时多任务操作系统,开放源代码,便于学习和使用。

介绍μC/OS-II在任务级和中断级的任务切换原理,以及这一操作系统基于嵌入式系统的对于中断的处理;相对于内存资源较少的单片机,着重讨论一种优化的实用堆栈格式和切换形式,以提高资源的利用率;结合MSP430单片机,做具体的分析。

关键词:实时多任务操作系统μC/OS MSP430 中断堆栈引言在嵌入式操作系统领域,由Jean J. Labrosse开发的μC/OS,由于开放源代码和强大而稳定的功能,曾经一度在嵌入式系统领域引起强烈反响。

而其本人也早已成为了嵌入式系统会议(美国)的顾问委员会的成员。

不管是对于初学者,还是有经验的工程师,μC/OS开放源代码的方式使其不但知其然,还知其所以然。

通过对于系统内部结构的深入了解,能更加方便地进行开发和调试;并且在这种条件下,完全可以按照设计要求进行合理的裁减、扩充、配置和移植。

通常,购买RTOS往往需要一大笔资金,使得一般的学习者望而却步;而μC/OS对于学校研究完全免费,只有在应用于盈利项目时才需要支付少量的版权费,特别适合一般使用者的学习、研究和开发。

自1992 第1版问世以来,已有成千上万的开发者把它成功地应用于各种系统,安全性和稳定性已经得到认证,现已经通过美国FAA认证。

1 μC/OS-II的几大组成部分μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。

核心部分(OSCore.c) 是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。

能够维持系统基本工作的部分都在这里。

任务处理部分(OSTask.c)任务处理部分中的内容都是与任务的操作密切相关的。

包括任务的建立、删除、挂起、恢复等等。

因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。

基于μCOS-II操作系统的任务调度机制

基于μCOS-II操作系统的任务调度机制

基于μC/OS-II操作系统的任务调度机制论文关键词:μC/OS-II;多任务;任务调度论文摘要:μC/OS-II操作系统之所以在10多年的时间里作为一个嵌入式实时的多任务操作系统得到了广泛的应用,原因之一是它的任务管理机制存在许多的优点。

多任务运行的最大难点就在于多任务的调度。

WANG Yu-rong,ZHU Jian-bin(Computer Science College Wuhan University of Science and Engineering,Wuhan 430073,China)Abstract:As a multi-task embedded real time operation system, μC/OS-II Operating Systems has been widely used in more ten years.One of the reason is that the Operating Systems has many advantages.The hardest point is the schedul of tasks when we run multi-task Operating Systems.Key words:μC/OS-II;Multi-task;task-scheduling1 引言嵌入式系统是一种应用范围非常广泛的系统。

可以这样理解,除了桌面计算机和服务器外所有计算设备都属于嵌入式系统。

在短短十多年的时间里,伴随着微电子技术、软件技术的发展,嵌入式系统被广泛的用于如生物医学仪器、智能汽车、通信设备、网络设备、仪器仪表、手持设备等诸多领域。

[1] 它是以应用为中心的,而嵌入式操作系统则是嵌入式系统应用中的核心。

嵌入式系统是计算机硬件和软件的结合体,或许还加上机械等其他部分,被设计来完成专门的功能。

在一些情况下,嵌入式系统是一个大的系统或产品的一部分,就象汽车上的防抱死装置,与通用计算机相对。

ucos-II操作系统概述及任务管理

ucos-II操作系统概述及任务管理
μC/OS-II操作系统概述及其任务管理
演讲人:伍莹莹
背景
目前,嵌入式系统在家电、 移动电话、 PDA等 各种领域的应用日益广泛,程序设计也越来越复杂, 这就需要采用一个通用的嵌入式操作系统来对其 进行管理和控制。移植了操作系统的嵌入式系统 开发,可大大减轻程序员的负担,操作系统提供了多 任务的管理功能,只需专注于每个任务的管理。对 于不同的应用,可以按照相同的步骤完成系统设计。 如果更换硬件平台,则只需要对操作系统进行少量 的移植工作, 与硬件无关的应用代码完全无需修改。
任务划分原则


以CPU为核心,将与各种输入输出设备相关的功能划分为独立的 任务。 发现关键功能,用一个独立的任务或者ISR完成。 紧迫任务,用一个优先级较高的任务完成。 将耗时较多的数据处理功能划分出来,使用低优先级的任务。 将有相同事件触发的若干功能合并为一个任务。 将运行周期相同的若干功能合并为一个任务。 将关系密切的若干功能组合为同一个任务,达到功能聚合的效果。
uC/OS-II移植(与处理器相关的代码) OS_CPU.HOS_CPU_A.ASMOS_CPU_C.C
软件 硬件
CPU
时钟
μC/OS-II移植
移植, 就是使一个实时内核能在某个微处理器或微控制器上运行。


要使 μ C/OS- II 能够正常运行,处理器必须满足以下几 个条件 (1)处理器的 C编译器能产生可重入代码; (2)在程序中可以打开或者关闭中断; (3) 处理器支持中断, 并且能产生定时中断 (通常在 l0~l000Hz之间); (4)处理器支持能够容纳一定量数据的硬件堆栈; (5)处理器有将堆栈指针和其他CPU寄存器存储和读出
μC/OS-II任务管理

μCOS-II的多任务系统实时性分析与优先级分配

μCOS-II的多任务系统实时性分析与优先级分配

从产品研发的角度,针对小资源系统中使用μC/OS-II的实时性和优先级关系进行了分析。

提出了可删除任务的灵活应用和可变大小任务栈的实现方法,对于并行任务使用共享资源的几种情况给出了实用解决方案。

这些措施获得了良好的任务并行性和实时响应,节约了代码存储空间。

引言μC/OS-II作为一种轻量级的嵌入式实时操作系统,正随着嵌入式微处理器性能的不断提高和外围资源(主要是存储器资源)的不断增加,得到越来越多的应用。

例如,原来的51系列单片机,限于6~12 MHz 的主频、12个Clock的机器周期以及有限的存储器资源,使用μC/OS-II会大大加重系统负担,使应用程序的运行受到影响,特别在快速A/D转换等实时性较强的场合,无法得到及时的响应,于是才有了更轻量级的Small RTOS等操作系统的出现。

但目前更强劲的51内核版本微处理器的大量出现,从根本上改变了这种情况。

40 MHz以上的主频,单周期指令的微处理器,加上64 KB的程序空间和8 KB以上的数据空间,这样的系统已经可以流畅地运行μC/OS-II[1]。

μC/OS-II的移植版本很多,选择一个适合系统CPU的版本,然后进行正确的配置和优化是非常重要的。

1 系统实时性分析本系统工作原理是在恒定温度条件下,任意启动4个测试通道来进行多个项目的并行分析,每个测试通道的工作流程完全相同,如图1所示。

C8051F120集成了8路12位高速A/D转换器(ADC0)和8路8位高速A/D转换器(ADC2)。

系统要求对4个光学传感器输出进行采样,ADC0可以构成4个差分测试通道以满足需求。

系统还要求能对2路温度实现实时控制,用于监控2个外部温度传感器的输出电压:一个保证测试部分的温度恒定在37±0.2 ℃,通过对加热组件的PWM控制来完成;另一个用于监测机箱温度,在32 ℃以上时启动风扇散热,30 ℃以下关闭风扇。

图1 通道工作流程从图1中可以看出,完整的流程包括信息输入、样本预温、通道启动、试剂添加、微分测量、结果处理6个阶段。

ucosii实时操作系统分析-任务管理及调度精品PPT课件

ucosii实时操作系统分析-任务管理及调度精品PPT课件
(48页例2-8) 10、用信号量实现任务间同步和互斥示例程序演示--0.9(可选)
(119页例4-4,122页例4-5) 11、用消息邮箱实现任务间通信示例程序演示--0.9(可选)(136页例4-8) 3
实时操作系统C/OБайду номын сангаас-II
1 C/OS-II概述 2 任务概念 3 任务调度核心问题分析
4
C/OS简介
美国人Jean Labrosse 1992年完成 应用面覆盖了诸多领域,如照相机、医疗器械、音
响设备、发动机控制、高速公路电话系统、自动提 款机等 1998年C/OS-II,目前的版本C/OS -II V2.61 ,2.72 2000年,得到美国航空管理局(FAA)的认证, 可以用于飞行器中 网站()
( 31页2.4.2) 5、任务调度器实现流程图表述--1 (43页2.4.3) 6、任务调度器实现及源代码分析--1 (43页2.4.3 ) 7、任务切换的过程描述--0.8(可选) (43页2.4.3 ) 8、用户任务的实现(编写一个示例程序验证调度算法)--1 (43页例2-7) 9、任务状态切换(挂起和恢复任务)示例程序演示--0.9(可选)
任务控制块是一个数据结构,保存该任务的相关参数,包括任务 堆栈指针,任务的当前状态,任务的优先级等。
任务CPU使用权被剥夺时,TCB保存该时刻任务状态;任务重新得 到CPU控制权时,TCB确保任务从当时被中断的那一点丝毫不差地 继续执行。
OS_TCB全部驻留在RAM中。
任务控制块就相当于一个任务的身份证,没 有任务控制块的任务是不能被系统承认和管 理的。
µC/OS-II操作系统中进程调 度模块分析
1
1、课程任务:
背景
分析µC/OS-II操作系统中的进程调度模块的源代码
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
实时操作系统C/OS-II
1
C/OS-II概述
2
任务概念
3
任务调度核心问题分析
4
C/OS简介

美国人Jean Labrosse 1992年完成 应用面覆盖了诸多领域,如照相机、医疗器械、音 响设备、发动机控制、高速公路电话系统、自动提 款机等 1998年C/OS-II,目前的版本C/OS -II V2.61, 2.72


2000年,得到美国航空管理局(FAA)的认证,可 以用于飞行器中
网站()
5

数 据 类 型
typedef unsigned char INT8U;
typedef signed char INT8S;
typedef unsigned int INT16U; typedef signed int INT16S; typedef unsigned long INT32U; typedef signed long INT32S; typedef float FP32; typedef double FP64;
struct os_tcb *OSTCBPrev; //指向前一个任务控制块的指针 ……
INT16U
INT8U INT8U
OSTCBDly;
OSTCBStat; OSTCBPrio;
//任务等待的时限(节拍数)
//任务的当前状态标志 //任务的优先级别
……
} OS_TCB;
10
任务控制块链表
系统在调用函数OSInit()对uC/OS-II系统进行初始化时,先在RAM中 建立一个OS_TCB结构类型的数组OSTCBTbl[ ],每个数组元素就是一 个任务控制块,然后把这些控制块链接成一个如图所示的链表。由 于链表中的这些控制块还没有与具体任务相关联,因此这个链表叫 做空任务块链表。 每当应用程序调用系统函数OSTaskCreate()创建一个任务时,系统 就会将任务控制块链表头指针OSTCBFreeList指向的任务控制块分配 给该任务。在给任务控制块中的各成员赋值后,就按任务控制块链 表的头指针OSTCBList将其加入到任务控制块链表中。
12
空闲任务和统计任务

内核总是创建一个空闲任务OSTaskIdle(); 总是设置为最低优先级,OS_LOWEST_PRIOR; 当所有其他任务都未在执行时,空闲任务开始 执行; 应用程序不能删除该任务; 空闲任务的工作就是把32位计数器OSIdleCtr 加1,该计数器被统计任务所使用;
6
实时操作系统C/OS-II
1
C/OS-II概述
2
任务概念
3
任务调度核心问题分析
7
任务调度概念
任务控制块 任务代码结构 任务优先级 一个任务的实现
8
任务控制块TCB

PCB:标识符、父进程标识符、
程序计数器、栈指针、 进程状态、优先级
一旦任务建立,一个任务控制块OS_TCB就被赋值。 任务控制块是一个数据结构,保存该任务的相关参数,包括任务 堆栈指针,任务的当前状态,任务的优先级等。 任务CPU使用权被剥夺时,TCB保存该时刻任务状态;任务重新得 到CPU控制权时,TCB确保任务从当时被中断的那一点丝毫不差地 继续执行。
µC/OS-II操作系统中进程调 度模块分析
1

1、课程任务:

分析µC/OS-II操作系统中的进程调度模块的源代码
2、任务说明:结合课堂上讲授的进程的定义、进程控制块、进 程的创建以及处理机调度算法等知识点,分析µC/OS-II操作 系统中的进程调度模块的源码实现。进而理解进程控制块的 结构,理解进程运行的并发性,掌握进程调度的方法。


OS_TCB全部驻留在RAM中。
任务控制块就相当于一个任务的身份证,没 有任务控制块的任务是不能被系统承认和管 理的。

typedef
……
struct
os_tcb {
//指向任务堆栈栈顶的指针
OS_STK *OSTCBStkPtr;
struct os_tcb *OSTCBNext; //指向后一个任务控制块的指针
8、用户任务的实现(编写一个示例程序验证调度算法)--1 (43页例2-7)
9、任务状态切换(挂起和恢复任务)示例程序演示--0.9(可选) (48页例2-8)
10、用信号量实现任务间同步和互斥示例程序演示--0.9(可选)
(119页例4-4,122页例4-5) 11、用消息邮箱实现任务间通信示例程序演示--0.9(可选)(136页例4-8)
OSTCBTbl[OS_MAX_TASKS+OS_N_SYS_TASK_-1] OSTCBFreeList OSTCBTbl[0]
OSTCBTbl[OS_MAX_TASKS+OS_N_SYS_TASK_-2]
OSTCBTbl[1]
…… OSTCBNext OSTCBPrev OSTCBPrio OSTCBNext
3、任务要求: (1)熟悉相关的理论知识;
(2)分析µC/OS-II操作系统中的进程调度模块的代码实现,并 辅以图表的形式描述实现流程;
(3)对核心代码作注释说明。 (4)按照模板撰写分析报告,以小组为单位参加答辩。
2

2、任务就绪表的结构---0.9 (29页2.4.1)

1、uC/OS的任务控制块---0.8 ( 25页2.3 ) 3、对任务就绪表的操作(将就绪任务状态填入就绪表)--0.9 (31页2.4.2) 4、根据就绪表确定最高优先级(采用查表法确定高优先级任务)--1 ( 31页2.4.2) 5、任务调度器实现流程图表述--1 (43页2.4.3) 6、任务调度器实现及源代码分析--1 (43页2.4.3 ) 7、任务切换的过程描述--0.8(可选) (43页2.4.3 )
OSTCBNext
OSTCBPrev OSTCBPrio
OSTCBNext
OSTCBPrev OSTCBPrio
空任务块链表
OSTCBPrev
OSTCBPrio
11
uC/OS的任务
uC/OS-II的任务有两种:用户任务和系统任务。由应用程序设 计者编写的任务叫做用户任务,由系统提供的任务叫做系统任 务。用户任务是为解决应用问题而编写的,系统任务是为应用 程序来提供某种服务的。 •目前,uC/OS-II最多可以对64个任务(包括用户任务和系统任 务)进行管理。
相关文档
最新文档