实时操作系统--复习资料

2026/4/24 12:29:11

为什么需要操作系统

应用程序功能层

图形用户 文件系统任务管理接口 软件层 实时操作系统(RTOS)

中间层BSP/HAL 硬件抽象层/板极支持包

D/A通用接口

嵌入式A/DROM 微处理器硬件层

I/OSDRAM 人机交互接口 嵌入式计算机系统

? 通用操作系统:Windows/NT/XP、Linux、UNIX等,用于PC机、服务器, ? 嵌入式(实时)操作系统:用于嵌入式设备的操作系统,具有通用操作系

统的基本特点,又具有系统实时性、硬件的相关依赖性、软件固态化以及应用的专用性等特点; ? 嵌入式(实时)操作系统通常包括与硬件相关的底层驱动软件、系统内核、

设备驱动接口、通信协议、图形界面、标准化浏览器Browser等;

? 嵌入式(实时)操作系统的重要指标:实时性(中断响应时间、任务切换

时间等)、尺寸(可裁剪性 )、可扩展性(内核、中间件)

?C/OS的性能特点(一)

1 公开源代码2 可移植性(Portable)3可固化(ROMable)4可裁剪(Scalable) ?C/OS的性能特点(二)

1占先式(Preemptive)2多任务:?C/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最多可以有56个任务。3可确定性 4任务栈5系统服务6中断管理:中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。7稳定性与可靠性 典型的任务:一个无限循环的函数 ?C/OS –II中的任务

? ?C/OS –II 2.5版本支持64个任务,每个任务一个特定的优先级。数字越

小,优先级越高

? 系统总是运行进入就绪态优先级最高的任务 ? 任务优先级号就是任务编号(ID).

? 系统占用了8个任务,保留优先级为0、1、2、3、OS_LOWEST_PRIO-3、

OS_LOWEST_PRIO-2、 OS_LOWEST_PRIO-1、 OS_LOWEST_PRIO-0 ? 即:建议不使用上述最高4个和最低4个优先级,用户任务仍可达56个 任务状态:睡眠态(task dormant),就绪态(task ready),运行态(task running),等待状态(task waiting),中断服务态(ISR running) ?C/OS-II的文件结构

?C/OS-II开关中断的方法:

1,?C/OS-II定义了两个宏调用来开关中断: OS_ENTER_CRITICAL( ) (禁止中断的宏) OS_EXIT_CRITICAL( ) (启用中断的宏) 通常成对出现

2,上述宏定义取决于使用的微处理器。在文件OS_CPU.H有相应的宏定义;在?C/OS-II中,每种微处理器都有自己的OS_CPU.H文件

?C/OS-II中采用了3种开关中断的方法: 1 OS_CRITICAL_METHOD==1 用最简单的方式来实现2个宏调用

用处理器指令关中断,完成OS_ENTER_CRITICAL() 用开中断指令完成OS_EXIT_CRITICAL() 问题:

如果调用?C/OS-II功能函数时,中断是关掉的,则从?C/OS-II函数返回时,中断就打开了

若调用?C/OS-II功能函数之前已将中断关掉,那么用户往往希望从?C/OS-II函数返回时,中断仍然是关着的。这时,这种方法就不妥当。 对特定的处理器,这种办法是唯一的选择 2 OS_CRITICAL_METHOD==2

a) 在堆栈中保存中断的开/关状态,然后再关中断 i. 实现OS_ENTER_CRITICAL()时,先在堆栈中保存中断的开/关状态,

然后再关中断

ii. 实现OS_EXIT_CRITICAL()时,从堆栈中弹出原来中断的开/关状态 b) 利用这种机制,不论用户在调用?C/OS-II功能函数之前中断是开或关,

函数的进入和返回状态都得到了保护。即:调用前中断的开/关状态,在调用之后保持不变

3 OS_CRITICAL_METHOD==3

a) 把当前处理器的状态字(PSW)保存在C函数的局部变量中(如

OS_CPU_SR)

b) 关中断时保存,开中断时恢复 Void Some_ uCOS_II_Service(arguments) {

OS_CPU_SR cpu_sr;

cpu_sr=get_processor_psw(); disable_interrupts(); /*临界段代码*/

set_processor_psw(cpu_sr); }

任务控制块 OS_TCB是一个数据结构,保存该任务的相关参数,包括任务堆栈指针、状态、优先级、任务表位置、任务链表指针等 分为:空闲链表,使用链表 μC/OS-II任务控制块: typedef struct os_tcb { OS_STK *OSTCBStkPtr(当前任务堆栈栈顶指针); #if OS_TASK_CREATE_EXT_EN>0 void *OSTCBExtPtr; (指向用户定义的任务控制块扩展) OS_STK *OSTCBStkBottom;(指向任务堆栈栈底指针) INT32U OSTCBStkSize;(存有栈中可容纳的指针元数目) INT16U OSTCBOpt; INT16U OSTCBId; (存储任务的识别码ID,备用)


实时操作系统--复习资料.doc 将本文的Word文档下载到电脑
搜索更多关于: 实时操作系统--复习资料 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219