ucOSII实时操作系统.docVIP

  • 19
  • 0
  • 约1.02万字
  • 约 70页
  • 2019-02-27 发布于湖北
  • 举报
面向二十一世纪的嵌入式系统设计技术 第五讲: ucOS/II 实时操作系统 RTOS( 一 ) : ucOS/II 2002 年 1 月 任课教员:徐欣 主讲教员:习勇 国 防 科 大 电 子 科 学 与 工 程 学 院 嵌 入 式 系 统 开 放 研 究 小 组  博士 博士  1 嵌入式操作系统  —uC/OS What is uC/OS? u: Micro C:control uC/OS : 适合于小的、控制器的操作系统 ? ? ? ? ? ?  小巧 公开源代码,详细的注解 可剥夺实时内核 可移植性强 多任务 确定性 2002/11  2 嵌入式操作系统  —uC/OS ?  美国人  The Story of uC/OS Jean Labrosse 1992 年编写的 ? ? ? ?  商业软件的昂贵 应用面覆盖了诸多领域,如照相机、医疗器 械、音响设备、发动机控制、高速公路电话 系统、自动提款机等 1998 年 uC/OS-II ,目前的版本 HYPERLINK /www.uCOS-II.com 2002/11  uC/OS-II V2.51  3 概要  嵌入式操作系统  —uC/OS ? ?  内核结构 任务间通信  - 任务以及调度机制 ? ? uC/OS 的移植 在 PC 机上运行  uC/OS 2002/11  4 任务  task  嵌入式操作系统  —uC/OS ?  典型的一个无限循环。 void mytask(void *pdata) { for (;;) { do something; waiting; do something; } } ? 支持 64 个任务,每个任务一个特定的优先级。优先级 ? 越高,数字越小 系统占用了两个任务,空闲任务和统计任务。 2002/11  5 嵌入式操作系统  —uC/OS 任务的数据结构  — 任务控制块 ?  任务控制块  OS_tcb ,包括 ?  任务堆栈指针,状态,优先级,任务表 位置,任务链表指针等。 所有的任务控制块分为两条链表,空闲 链表和使用链表。 新任务 TCB (1) TCB0 TCB1 next pre (2) (3) OSTCBFreeList 图 4.3 TCB的双向链表结构  TCBn  空 2002/11  6 任务控制块结构  嵌入式操作系统  —uC/OS ?  Struct os_tcb { OS_STK *OSTCBStkPtr; struct os_tcb *OSTCBNext; struct os_tcb *OSTCBprev; OS_EVENT *OSTCBEventPtr; void *OSTCBMsg; INT16U OSTCBDly; INT8U OSTCBStat; INT8U OSTCBPrio; INT8U OSTCBX, OSTCBY, OSTCBBitX, OSTCBBitY; } OS_TCB 2002/11  7 嵌入式操作系统  —uC/OS 任务的状态  OSTCBStat ?  运行,就绪,等待,挂起 OSTCBStat  低四位 挂起 队列邮箱信号量  … ?  可以有多个准备就绪的任务,但一个时 刻只有一个任务可以运行,  OSHighRdy 2002/11  8 嵌入式操作系统  —uC/OS 任务的调度  --OSSched ? ?  uC/OS 是占先式实时多任务内核,优先级 最高的任务一旦准备就绪,则拥有 所有权开始投入运行。 uC/OS 中不支持时间片轮转法,每个任务 的优先级要求不一样且是唯一的,所以 任务调度的工作就是:查找准备就绪的 最高优先级的任务并进行  上下文切换。  CPU 的 2002/11  9 嵌入式操作系统 根据优先级找到任务在就绪任务表中的位置 OSRdyGrp 7 6 5 4 3 2 1 0  —uC/OS OSRdyTbl[7] X  优先级最高任务 任务优先级 [0] [1] [2] [3] [4] [5] [6] [7] 7 6 5 4 3 15 14 13 12 11 23 22 21 20 19 31 30 29 28 27 39 38 37 36 35 47 46 45 44 43 55 54 53 52 51 63 62 61 60 59 优先级最低任务 (空闲任务) 2 10 18 26 34 42 50 58 1 0 9 8 17 16 25 24 33 32 41 40 49 48 57 56  Y 0 0 2002/11 Y Y Y X X X 任务

文档评论(0)

1亿VIP精品文档

相关文档