Created with SmartPrinter trail version www.i-enet.com
嵌入式实时操作系统
μC/OS-II讲座
北 华 大 学
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
为什么要学习μC/OS-II
一.凡从事嵌入式系统开发工作的人,必须
对嵌入式操作系统有足够的了解。
二.对于初学者,从μC/OS-II开始是个明智的选择。
1. μC/OS-II麻雀虽小,却五脏基本全(它是个微
内核)。
2.可以学习实时系统的一些编程技巧。
3.可以把在学校中学到的操作系统抽象概念具体
化。
4.具有很强的实用性。
5.学习数据结构应用的好例子。
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
讲座的主要内容
一.计算机操作系统的基本概念
二.操作系统中常用的数据结构
三.并发操作系统的概念
四.任务的要素
五. μC/OS-II的任务管理(任务调度)
六. μC/OS-II的中断和时钟
七. μC/OS-II的任务的同步与通信
八. μC/OS-II的存储管理
九.硬件抽象层和测试台
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
•操作系统是一种为应用
程序提供服务的系统软
件,是一个完整计算机
系统的有机组成部分。
•从层次来看,操作系统
位于计算机硬件之上,
应用软件之下。所以也
把它叫做应用软件的运
行平台。
什么是计算机操作系统
(Operating System,OS)
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
•它在计算机应用程序与计算
机硬件系统之间,屏蔽了计
算机硬件工作的一些细节,
并对系统中的资源进行有效
的管理。
•通过提供函数(应用程序接
口(API)),从而使应用程
序的
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
人员得以在一个友
好的平台上进行应用程序的
设计和开发,大大地提高了
应用程序的开发效率。
计算机操作系统的作用
从用户的角度来
看,它就是一大堆
函数(API和系统函
数),用户可以调
用(普通调用或系
统调用)它们来对
系统资源进行操作。
计算机硬件
用汇编语言编写
的
硬件抽象层
高级语言的接口
应用软件
操
作
系
统
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
操作系统
计算机操作系统的功能
处理器的管理
存储管理
网络和通信
的管理
I/O设备管理
文件管理
任务管理
任务
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
存储
分配表
文件
目录
设备表
总之,需要一大堆表
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
操作系统中经常使用
的数据结构(数组)
数组
1。同一数据类型数据
的集合;
2。占用连续内存空
间;
3。其中的所有元素名
称都相同,但每个元
素都有一个编号;
4。元素名去掉编号
(下标),得到的是
数组名,数组名是个
指针。
int a[10]
a[0]
a[1]
a[2]
a[3]
a[9]
a
a+1
使用上的特点:
1。分类存放;
2。检索速度快
且恒定;
3。缺点:占用
连续空间大
…
…
a+2
a+3
a+9
应用:
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
同类事物的表
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
操作系统中经常使用
的数据结构(位图)
位图是数组的一种
特殊应用
a[10]
(可以记录80个事物的状态)
a[0]
a[1]
a[2]
a[3]
a[9]
a
a+1
…
…
a+2
a+3
a+9应用:登记表
1/0
D7 D6 D5 D4 D3 D2 D1 D0
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
操作系统中经常使用
的数据结构(结构)
1。不同
数据类型
数据的集
合;
2。占用
连续内存
空间;
struct Student{
int age;
char*name;
char sex;
};
使用上的特
点:
1。不分类存
放,但用来
描述同一事
物;
2。检索速度
快且恒定;应用:通讯录中的一条记录、
工具箱、厨房等等
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
next next
两个元素的链表
操作系统中经常使用
的数据结构(链表)
struct Student{
Student*next
int age;
char*name;
char sex;
};
1。同数据类型数据的集合;
2。不占用连续内存空间。
使用上的特点:
1。分类存放,但空间上不连续(不
需要大量的连续存储空间);
2。检索速度慢,且耗费的时间不固
定;
应用:存放大量的较大
的表,类似档案柜
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
操作系统中经常使用
的数据结构(队列)
按照先进先出
的规则组织的数据结构
可以用数组也可以用链
表来实现
主要用于对象的排队
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
操作系统中经常使用
的数据结构(堆栈)
按照先进后出
规则组织的数据结构
主要用数组来实现
主要用于
程序模块的嵌套运行
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
什么是多任务系统
简单地说,就是能用一个处理器
并发(注意,不是同时! )
地运行多个程序的计算机管理系统。
并发:由同一个处理器轮换地
运行多个程序。或者说是由多个
程序轮班地占用处理器这个资源。
且在占用这个资源期间,并不一
定能够把程序运行完毕。
并发过程
示意图
处理器如何进行程序的
切换?
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
程序的切换(两句话)
处理器是个傻瓜,PC让
它干啥,它就干啥。
PC是个指路器,它指向哪
儿,处理器就去哪儿。
从此可以知道,哪个程
序占有了PC,哪个程
序就占有了处理器。
= PC深刻地理解PC是理解系统进行程序切换动作的关键。
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
所谓切换就是:
PC 目标地址
如何操作PC
指令:
不同的计算机类型的指
令是不同的。
•数据传送指令
•子程序返回指令(由堆
栈弹出)
•中断服务程序返回指令
(由堆栈弹出)
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
小结
系统是通过把待运行程
序的地址赋予程序计数
器PC来实现程序的切
换的。
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
任务代码
任务堆栈
内存
处理器
PC
SP
任务运行时与
处理器之间的关系
处理器通过两个指针寄
存器(PC和SP)来与任
务代码和任务堆栈建立
联系并运行它
寄存器组
程序运行环境
运行环境包括了两部分:
处理器中的运行环境和
内存中的运行环境
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
任务代码
任务堆栈
内存
处理器
PC
SP
多任务时的问题
任务代码
任务堆栈
内存
任务代码
任务堆栈
内存
?
当有多个任务时,处理
器中的运行环境应该怎
么办?
寄存器组
程序运行环境
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
程序
虚拟
处理器
PC
SP
虚拟
处理器
PC
SP
虚拟
处理器
PC
SP
虚拟
处理器
PC
SP
调度器
多任务时任务与处理器
之间关系的处理
程序
处理器
PC
SP
在内存中为每个任
务创建一个虚拟的
处理器(处理器部
分的运行环境
由操作系统的调度
器按某种规则来进
行这两个复制工作
复制
当需要运行某个任务时
就把该任务的虚拟处理
器复制到实际处理器中
复制
当需要中止当前任
务时,则把任务对
应的虚拟处理器复
制到内存
复制
再把另一个需要运行的任
务的虚拟处理器复制到实
际处理器中
寄存器组
寄存器组
也就是说,任务的切换是
任务运行环境的切换
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
虚拟处理器
虚拟处理器应该存储的主要信息:
1。程序的断点地址(PC)
2。任务堆栈指针(SP)
3。程序状态字寄存器(PSW)
4。通用寄存器内容
5。函数调用信息(已存在于堆栈)
另外再用一个数据结构保存任务堆栈
指针(SP),这个数据结构叫做任务
控制块,它除了保存任务堆栈指针之
外还要负责保存任务其他信息。
这些内容通常保
存在任务堆栈
中,这些内容也
常叫做任务的上
下文。
任务控制块是由操
作系统另行构造的
一个数据结构,每
个任务都有一个。
任务控制块结构的主要成员
typedef struct os_tcb {
OS_STK *OSTCBStkPtr; //指向任务堆栈栈顶的指针
……
INT8U OSTCBStat; //任务的当前状态标志
INT8U OSTCBPrio; //任务的优先级别
……
} OS_TCB;
任务代码
任务堆栈
内存任务控制块
其实,程序切换的关键是
把程序的私有堆栈指针赋
予处理器的堆栈指针SP
实质上系统是通过SP的切换
来实现程序的切换的。
要建立一个概念:具有
控制块的程序才是一个
可以被系统所运行的任务。
程序代码、私有堆栈、任
务控制块是任务的三要件。
任务控制块提供了运行环
境的存储位置。
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
任务的基本概念
把一个大型任务分解成多个小任
务,然后在计算机中通过运行这
些小任务,最终达到完成大任务
的目的。
在μC/OS-II中,与上述那些小任
务对应的程序实体就叫做“任务”
(实质上是一个线程),μC/OS-
II就是一个能对这些小任务的运
行进行管理和调度的多任务操作
系统。
从应用程序设计的角度来
看,μC/OS-II的任务就是一
个用户编写的C函数和与之
相关联的一些数据结构而构
成的一个实体。
任务代码
任务堆栈
内存
在内存中应该
存有任务的代
码和与该任务
配套的堆栈
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
任务切换过程获得待运行任务的任务控制块
恢复待运行任务
的运行环境
处理器的PC=任
务堆栈中的断点
地址
处理器的SP=任
务块中保存的SP
如何获得待运行
任务的任务控制
块?
Created with SmartPrinter trail version www.i-enet.com
Created with SmartPrinter trail version www.i-enet.com
小结
一个完整的任务应该有如下三部分:
•任务代码(程序)
•任务的私有堆栈(用以保护运行环境)
•任务控制块(提供私有堆栈也是虚拟处
理器的位置)
这些都是任务方应该提供的基本信息。
Created with SmartPrinter trail version www.i-enet.com