当前位置:文档之家› 嵌入式操作系统教程-第四章

嵌入式操作系统教程-第四章

#if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN || OS_Sem_EN OS_EVENT *OSTCBEventPtr; //指向事件控制块的指针 #endif 15
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 实 时 操 作 系 统
(1)
(2)
8
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 实 时 操 作 系 统
9
2.嵌入式实时操作系统对任务的响应
异步事件; 周期性事件; 同时具有异步和周期特性的时间;
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
§4.3 uC/OS-II任务的存储结构
#endif } OS_TCB;
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
17
2.空闲任务块链表
系统初始化时建立,数量由os_cfg.h (空)任务块数量 :系统初始化时建立,数量由os_cfg.h 中参数OS_MAX_TASKS+OS_N_SYS_TASKS决定. 中参数OS_MAX_TASKS+OS_N_SYS_TASKS决定. OS_MAX_TASKS+OS_N_SYS_TASKS决定 任务数:文件UCOS_II.H中的常数OS_N_SYS_TASKS它指明 任务数:文件UCOS_II.H中的常数OS_N_SYS_TASKS它指明 UCOS_II.H中的常数OS_N_SYS_TASKS 了系统任务的数目。 了系统任务的数目。
4
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
Typedef unsigned Typedef unsigned int OS_STK;
5
2.几个系统硬件相关头文件
(1)os_cpu.h Typedef unsigned Typedef unsigned Typedef signed Typedef unsigned Typedef signed Typedef unsigned Typedef signed Typedef float Typedef double char BOOLEAN; char INT8U; char INT8S; int int INT16U; INT16S; #define UWORD #define LONG #define ULONG INT16U INT32S INT32U #define UBYTE #define WORD INT8U INT16S #define BYTE INT8S
入运行,它总是启动拥有最高优先级的任务
等待态:正在运行的任务需要延迟一段时间或等待某事件 的发生,它将放弃让出处理器进入等待状态。 中断态:正在运行的任务是可以被中断的,除非该任务将 中断关了,或者μC/OS-Ⅱ将中断关了。被中断的任务就进 入了中断服务态(ISR)。
13
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
于等待信号量状态OS_STAT_MBOX表示任务处于等待消息邮箱状态 于等待信号量状态OS_STAT_MBOX表示任务处于等待消息邮箱状态 OS_STAT_MBOX OS_STAT_Q表示任务处于等待消息队列状态OS_STAT_SUSPEND表示任务处 表示任务处于等待消息队列状态OS_STAT_SUSPEND OS_STAT_Q表示任务处于等待消息队列状态OS_STAT_SUSPEND表示任务处 #if OS_TASK_DEL_EN 于被挂起状态OS_STAT_MUTEX OS_STAT_MUTEX表示任务处于等待互斥型信号量状态 BOOLEAN 于被挂起状态OS_STAT_MUTEX表示任务处于等待互斥型信号量状态 OSTCBDelReq; //请求删除任务时用到的标志
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
2
第四章 嵌入式实时操作系统 uC/OS-II及其任务
§4.1 uC/OS-II概述
一、uC/OS-II的特点
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
二、uC/OS-II的文件结构
1.几个应用程序相关头文件
long INT32U; long INT32U; FP32; FP64;
short OS_CPU_SR;
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 实 时 操 作 系 统
与系统处理器相关的宏定义: 与系统处理器相关的宏定义:
#define #if #define #define #endif #if #define #define #endif #if #define #define #endif OS_CRITICAL_METHOD ==3 OS_ENTER_CRITICAL() OS_EXIT_CRITICAL() (cpu_sr=OSCPUSaveSR()) (OSCPURestoreSR(cpu_sr))
……
2 5 5 2 50 52 512
//事件总数 //信号量集总数 //内存块数量 //消息队列数量 //任务数量 //用户任务数量 // //空闲任务堆栈长度 //优先级修改功能可用 //任务创建功能可用
1
系统裁剪性的实现:
#if OS_TASK_CREATE_EXE_EN …… #endif //用户可代码
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
3. 内核相关文件 三、uC/OS-II的裁剪性
typedef struct os_tcb { OS_STK *OSTCBStkPtr; #if OS_TASK_CREATE_EXT_EN void *OSTCBExtPtr; OS_STK *OSTCBStkBottom; INT32U INT16U INT16U #endif OSTCBStkSize; OSTCBOpt; OSTCBId;
由cfg.h设定编 译与否(值为1)
…… #if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN || OS_SEM_EN OS_EVENT *OSTCBEventPtr; 由cfg.h设定编译 #endif 与否(值为0) #if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN void *OSTCBMsg; #endif …… #if OS_TASK_DEL_EN BOOLEAN OSTCBDelReq; #endif } OS_TCB;
7
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
} }
§4.2 uC/OS-II任务
ห้องสมุดไป่ตู้1.任务的统一性与独立性——总任务与分任务
任务就是一个无限循环的C函数 任务就是一个无限循环的 函数
void YourTask (void *pdata) { for (;;) { /* 用户代码 */ 调用uC/OS-II的某种系统服务: OSMboxPend(); OSQPend(); OSSemPend(); OSTaskDel(OS_PRIO_SELF); OSTaskSuspend(OS_PRIO_SELF); OSTimeDly(); OSTimeDlyHMSM(); /* 用户代码 */
12
§4.4 uC/OS-II任务状态
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 实 时 操 作 系 统
睡眠态(DORMANT):指任务驻留在程序空间之中,还没有 交给μC/OS-Ⅱ管理 。 就绪态 :通过调用两个函数之一:OSTaskCreate()或 OSTaskCreateExt()来建立任务,一旦建立任务就进入就绪 态准备运行。 运行态:调用OSStart()函数可以启动任务 ,即任务投
(1)includes.h
#include <stdio.h> #include <string.h> #include <ctype.h> #include <stdl.h> #include <conio.h> #include <dos.h> #include <setjmp.h> /*与应用程序相关*/ #include “\software\ucosii\ix86\bc31\os_cpu.h” #include “os_cfg.h” #include “software\uscos-ii\source\ucos_ii.h” #include “software\blocks\pc\bc31\pc.h”
6
OS_CRITICAL_METHOD 2 OS_CRITICAL_METHOD ==1 OS_ENTER_CRITICAL() OS_EXIT_CRITICAL() asm CLI asm STI
OS_CRITICAL_METHOD ==2 OS_ENTER_CRITICAL() OS_EXIT_CRITICAL() asm (PUSHF; CLI) asm POPF
任务控制块:保存任务属性信息。 任务堆栈:保存任务的工作环境。 任务程序代码:任务执行的实体。
10
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 实 时 操 作 系 统
11
为了便于管理,相应的任务控制块彼此通 过自己的指针彼此连接形成一个链表。
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
嵌 入 式 操 作 系 统 基 础 第 四 章 嵌 入 式 操 作 系 统
1
第四章 嵌入式实时操作系统 uC/OS-II及其任务
uC/OS-II概述 概述 uC/OS-II的任务 的任务 uC/OS-II任务的存储结构 任务的存储结构 uC/OS-II任务的状态 任务的状态 任务的优先级别 任务控制块 任务堆栈 系统任务 临界区
相关主题