嵌入式实时操作系统(uCOS)分析

发布时间:2021-06-06

嵌入式系统设计与实例开发—— C/OS-Ⅱ

实时操作系统 C/OS-Ⅱ分析

本节提要1 C/OS-Ⅱ简介 2 C/OS-Ⅱ内核结构 3 4 5 6 C/OS-Ⅱ任务管理

C/OS-Ⅱ时间管理 C/OS-Ⅱ任务通信与同步

C/OS-Ⅱ移植2

RTOS是32位的嵌入式CPU的软件基础

RTOS内核 提供CPU的管理

硬件初时化,MMU,定时器,中断

RTOS 内核提供任务,内存管理RTOS提供设备管理,文件和网络的支持 RTOS提供C/C++,JAVA,图形模块等编程接口

C/OS简介1、 C/OS——Micro Controller O S,微控制器操作系统 2、 C/OS简介

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

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

C/OS的性能特点(一)

公开源代码 可移植性(Portable)绝大部分 C/OS-II的源码是用移植性很强的ANSI C写的。和微处理器 硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最 低限度,使得 C/OS-II便于移植到其他微处理器上。 C/OS-II可以在 绝大多数8位、16位、32位以至64位微处理器、微控制器 、数字信号处 理器(DSP)上运行。

可固化(ROMable) C/OS-II是为嵌入式应用而设计的,这就意味着,只要读者有固化手 段(C编译、连接、下载和固化), C/OS-II可以嵌入到读者的产品 中成为产品的一部分。

可裁剪(Scalable)可以只使用 C/OS-II中应用程序需要的那些系统服务。也就是说某产 品可以只使用很少几个 C/OS-II调用,而另一个产品则使用了几乎所 有 C/OS-II的功能,这样可以减少产品中的 C/OS-II所需的存储器空 间(RAM和ROM)。这种可剪裁性是靠条件编译实现的。

C/OS的性能特点(二)

占先式(Preemptive) 多任务 C/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最多 可以有56个任务

可确定性全部 C/OS-II的函数调用与服务的执行时间具有可确定性。

任务栈每个任务有自己单独的栈, C/OS-II允许每个任务有不同的栈空间,以便压低应 用程序对RAM的需求。

系统服务 C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存 的申请与释放、时间相关函数等。

中断管理中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则 高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。

稳定性与可靠性6

µC/OS-II图书

描述了µC/OS-II内部的工作原理随书的CD中包含了源代码

工业界最清晰的源代码

除英文版外,有中文和韩文版

EnglishISBN 1-57820-103-9 美国CMP BOOK

ChineseISBN 7-81077-290-2 北京航空航天大学出版社

KoreanISBN 89-951540-5-5

µC/OS-II的各种商业应用

全世界有数百种产品在应用:

Avionics Medical Cell phones

Routers and switchesHigh-end audio equipment Washing machines and dryers UPS (Uninterruptible Power Supplies)

Industrial controllersGPS Navigation Systems Microwave Radios Instrumentation

Point-of-sale terminals更多

µC/OS-II提供的系统服务信号量 带互斥机制的信号量

减少优先级倒臵的问题

事件标志 消息信箱

消息队列内存管理 时钟管理

任务管理

µC/GUI and µC/FS

µC/GUI

嵌入式的用户界面 用ANSI C书写

支持任何8, 16, 32-bits CPU彩色,灰、度,等级或黑白显示 代码尺寸小

µC/FS

嵌入式的文件系统Written in ANSI C

用ANSI C书写支持任何8, 16, 32-bits CPU 支持SMC, MMC, SD, CF, IDE, Flash, RAM其他介质10

本节提要1 C/OS-Ⅱ简介 2 C/OS-Ⅱ内核结构 3 4 5 6 C/OS-Ⅱ任务管理

C/OS-Ⅱ时间管理 C/OS-Ⅱ任务通信与同步

C/OS-Ⅱ移植11

C/OS-II的文件结构

C/OS-II的内核结构

内核结构

任务管理时间管理 任务之间通信与同步 C/OS的移植

任务task典型的任务一个无限循环。 void mytask(void *pdata) {

for (;;) {do something; waiting; do something; } }

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

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

任务状态

任务控制块(TCB)

任务控制块 OS_TCB是一个数据结构,保存该任务的相关 参数,包括任务堆栈指针,状态,优先级,任务表位臵, 任务链表指针等。

所有的任务控制块分为两条链表,空闲链表和使用链表。

µ C/OS-II任务控制块.typedef struct os_tcb { OS_STK void OS_STK INT32U INT16U INT16U #endif *OSTCBStkPtr; *OSTCBExtPtr; *OSTCBStkBottom; OSTCBStkSize; OSTCBOpt; OSTCBId; #if OS_TASK_CREATE_EXT_EN>0

struct os_tcb *OSTCBNext;struct os_tcb *OSTCBPrev; #if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN || OS_SEM_EN

OS_EVENT#endif

*OSTCBEventPtr;

#if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN void #endif INT16U OSTCBDly; *OSTCBMsg;

INT8UINT8U INT8U INT8U INT8U INT8U #if OS_TASK_DEL_EN BOOLEAN #endif } OS_TCB;

OSTCBStat;OSTCBPrio; OSTCBX; OSTCBY; OSTCBBitX; OSTCBBitY; OSTCBDelReq;

任务控制块OS_TCB中几个成员的算

法OSTCBY OSTCBBitY OSTCBX OSTCBBitX = priority >> 3; = OSMapTbl[priority >> 3]; = priority & 0x07; = OSMapTbl[priority & 0x07];

空任务列表所有的任务控制块都被放臵在任务控制块列表数组OSTCBTbl[]中, 系统初始化时,所有任务控制块被链接成空任务控制块的单向链表, 任务建立后,空任务控制块指针OSTCBFreeList指向的任务控制块 就赋给了该任务,然后OSTCBFreeList的值调整为指向链表中的下 一个空任务控制块。

任务控制块初始化函数INT8U OS_TCBInit ( INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U stk_size, void *pext, INT16U opt ) {……

}

嵌入式实时操作系统(uCOS)分析.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

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

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