嵌入式实时操作系统课件
合集下载
第九讲 uCOSII嵌入式实时操作系统PPT课件
章连载在美国1992年《嵌入式系统编程》杂志
的5月和6月刊上。uC/OS的源码发布在该杂志
的BBS上。1993年,美国的R&D出版社出版了
《uC/OS the Real Time Kernel》,在后来几年
中该书的销量超过了15000册。
3
9.19.2.1 uuCC/O/OSS-III的简介译者
2)uC/OS-II的译者
13
9.29u.2C./3OS硬-II件的系相统关函数
3)与硬件有关的部分 • OS_CPU.H
数据类型定义部分不需要修改, #typedef unsigned char BOOLEAN #typedef float FP32 #define BYTE INT8S #define UBYTE INT8U .......
4)uC/OS-II的特点 • 体积小、实时性强、易学易用。 • 源代码开放:购书即可获得,注释详细。 • 可移植性:大部分用ANSI C编写,以移
植到多种微处理器上。 • 可固化:通过一定的工具,可将其嵌入
到用户的产品中。 • 可裁剪:使用条件编译实现裁剪。
7
9.91..14 uCC//OOSS-I-II简I特介点
4
99.1.1.u3C应/O用S-I范I 简围介
3)uC/OS-II的应用范围 • 世界上数以千计的工程技术人员将
uC/OS 应用到了各个领域,如照像机 业、医疗仪器、音响设备、发动机控制、 网络接人设备、高速公路电话系统、 AT M机和工业机器人等。 • 许多大学用uC/OS作教材,用于实时系 统教学。
与硬件相关的部分如下: #include <os_cpu.h> #include <os_cfg.h> #include <ucos-ii.h> #include <pc.h>
嵌入式实时系统FreeRTOS ppt课件
务由于优先级相同,而且在一个处理器上运行, 其实是在交替运行。 真实的执行流程所图3所示
PPT课件
18
2.1任务函数
图二
PPT课件
19
2.1任务函数
上例中main()函数在启动调度器之前先完成两个任务 的创建。当然也可以从一个任务中创建另一个任务。
我们可以先在main()中创建任务1,然后在任务1中创 建任务2.这样需要在任务一中添加以下语句:
10
参数:
pvParameters 任务函数接受一个指向void的指针(void*)。 pvParameters的值即是传递到任务中的值。
uxPriority 指定任务执行的优先级。优先级的取值范围可以从最低优先级0 到最高优先级(configMAX_PRIORITIES – 1)。
configMAX_PRIORITIES 是一个由用户定义的常量。
pxCreatedTask 用于传出任务的句柄。这个句柄将在API调用中对该创建 出来的任务进行引用,比如改变任务优先级,或者删除任务。如果应用程序 中不会用到这个任务的句柄,则pxCreatedTask可以
被设为NULL
PPT课件
11
返回值 有两个可能的返回值:
1.pdTRUE 表明任务创建成功。
这时任务参数就可以用来传递各自打印输 出的字符串。
PPT课件
21
我们仍然调用两次xTaskCreate(),但其pvParameters(第四个) 参数变 为了两个不同的指针,两个指针分别指向各自需要打印输出的文本。
PPT课件
PPT课件
5
1、FreeRTOS简介
●通讯:大约40%的FreeRTOS核心代码是用来处 理通讯的。任务和中断使用队列互相发送数据, 并且使用信号灯和互斥来发送临界资源的使用情 况。
PPT课件
18
2.1任务函数
图二
PPT课件
19
2.1任务函数
上例中main()函数在启动调度器之前先完成两个任务 的创建。当然也可以从一个任务中创建另一个任务。
我们可以先在main()中创建任务1,然后在任务1中创 建任务2.这样需要在任务一中添加以下语句:
10
参数:
pvParameters 任务函数接受一个指向void的指针(void*)。 pvParameters的值即是传递到任务中的值。
uxPriority 指定任务执行的优先级。优先级的取值范围可以从最低优先级0 到最高优先级(configMAX_PRIORITIES – 1)。
configMAX_PRIORITIES 是一个由用户定义的常量。
pxCreatedTask 用于传出任务的句柄。这个句柄将在API调用中对该创建 出来的任务进行引用,比如改变任务优先级,或者删除任务。如果应用程序 中不会用到这个任务的句柄,则pxCreatedTask可以
被设为NULL
PPT课件
11
返回值 有两个可能的返回值:
1.pdTRUE 表明任务创建成功。
这时任务参数就可以用来传递各自打印输 出的字符串。
PPT课件
21
我们仍然调用两次xTaskCreate(),但其pvParameters(第四个) 参数变 为了两个不同的指针,两个指针分别指向各自需要打印输出的文本。
PPT课件
PPT课件
5
1、FreeRTOS简介
●通讯:大约40%的FreeRTOS核心代码是用来处 理通讯的。任务和中断使用队列互相发送数据, 并且使用信号灯和互斥来发送临界资源的使用情 况。
嵌入式实时操作系统VXWORKS6.6集成环境使用指导(PPT 58张)
四、工程和工程结构
• 所有独立的工程内部都包含和其他任一工 程无关的模块,在系统开始是都是单个的 和没有经过组织的。所以使用者可以在 workbench下通过工程之间的依赖关系和编 译命令整体组织各个工程。 • 通过workbench可以很方便的组织各工程, 但是有的工程不能作为某个工程的子工程 或者是同种类型的工程,这样的关联是不 允许的。
一、创建一个例子工程并运行程序
1.创建一个例子工程 a.选择 File > New > Wind River Workbench Project。会出 现 New Wind River Workbench Project 对话框。 b.从Target operating system 下拉选择菜单选择 Wind River VxWorks 6.x ,点击 Next。 c.从 Build type 下拉选择菜单选择 Downloadable Kernel Module 点击Click Next 。 d.在Project Name区域,输入ball 。在本指导说明中都保持 Create project in workspace 选项,点击 Finish 。一个名 称为“ ball ” 的工程出现在workbench的工程窗口。
三、创建一个新工程(Projects)
• 点击工具按钮或者选择 File>New>Wind River Workbench Project 创建一个之前配置好的工程,或者是创建一个特殊 类型的工程;也可以选择File > New > Example 打开一个 例子工程。 1.工程创建之后的修改 在相应工程的" project properties"界面进行修改。 2.工程的结构设置 选中Project References > Add as Project Reference,在弹 出的菜单里就可以设定个工程之间的结构关系。 3.工程与应用程序(Application Code) 工程以一种或几种类型管理应用程序文件。可以将一个与 Workbench兼容的工程整个加入,也可以添加新的或者已 经存在的源程序文件。选择 File > Import 打开“Import File ”。
chapter4嵌入式实时操作系统.ppt
美国人Jean Labrosse 1992年完成 应用领域:照相机、医疗器械、音响设备、发动机控
制、高速公路电话系统、自动提款机等 1998年C/OS-II,目前的版本C/OS -II V2.61,
2.72 2000年,得到美国航空管理局(FAA)的认证,可以用
于飞行器中 网站()
OS_LOWEST_PRIO-3、 OS_LOWEST_PRIO-2、 OS_LOWEST_PRIO1、 OS_LOWEST_PRIO-0 建议不使用上述最高4个和最低4个优先级,用户任务有56个
20
任务状态
在任一给定的时刻,任务的状态一定是以 下五种状态之一:
睡眠态(task dormant) 就绪态(task ready) 运行态(task running) 等待状态(task waiting) 中断服务态(ISR running)
24
等待状态(task waiting)
正在运行的任务可以通过下面的调用进入等待状态:延迟 时间到,立即强制执行任务切换,让下一个优先级最高、 并进入就绪态的任务执行。
OSTimeDly() OSTimeDlyHMSM()
等待时间过去后,系统服务(内部)函数OSTimeTick() 使延迟了的任务进入就绪态
C/OS-II定义了两个宏调用来开关中断:
OS_ENTER_CRITICAL( ) (禁止中断的宏) OS_EXIT_CRITICAL( ) (启用中断的宏) 通常成对出现
上述宏定义取决于使用的微处理器。在文 件OS_CPU.H有相应的宏定义
在C/OS-II中,每种微处理器都有自己的 OS_CPU.H文件
} }
(1) (2)
18
制、高速公路电话系统、自动提款机等 1998年C/OS-II,目前的版本C/OS -II V2.61,
2.72 2000年,得到美国航空管理局(FAA)的认证,可以用
于飞行器中 网站()
OS_LOWEST_PRIO-3、 OS_LOWEST_PRIO-2、 OS_LOWEST_PRIO1、 OS_LOWEST_PRIO-0 建议不使用上述最高4个和最低4个优先级,用户任务有56个
20
任务状态
在任一给定的时刻,任务的状态一定是以 下五种状态之一:
睡眠态(task dormant) 就绪态(task ready) 运行态(task running) 等待状态(task waiting) 中断服务态(ISR running)
24
等待状态(task waiting)
正在运行的任务可以通过下面的调用进入等待状态:延迟 时间到,立即强制执行任务切换,让下一个优先级最高、 并进入就绪态的任务执行。
OSTimeDly() OSTimeDlyHMSM()
等待时间过去后,系统服务(内部)函数OSTimeTick() 使延迟了的任务进入就绪态
C/OS-II定义了两个宏调用来开关中断:
OS_ENTER_CRITICAL( ) (禁止中断的宏) OS_EXIT_CRITICAL( ) (启用中断的宏) 通常成对出现
上述宏定义取决于使用的微处理器。在文 件OS_CPU.H有相应的宏定义
在C/OS-II中,每种微处理器都有自己的 OS_CPU.H文件
} }
(1) (2)
18
西安电子科技大学嵌入式实时操作系统课件 第1章
第1章 嵌入式系统导论
出于兼容性和灵活性的考虑,系列化、模块化的单板机
也问世了,其典型代表是Intel公司的iSBC系列单板机、 Zilog公司的MCB单板机等。从此人们可以不必从选择芯片 开始,而是只要选择各功能模块,就能够组建一台专用计算 机系统。用户和开发者都希望从不同的厂家选购最适合的 OEM产品,插入外购或自制的机箱中就能形成新的系统, 这就要求插件是互相兼容的,从而导致了工业控制微机系统 总线的诞生。1976年Intel公司推出了Multibus,1983年扩展 为带宽达40 Mb/s的MultibusⅡ。1978年,由Prolog设计出了 简单STD总线并被广泛应用。
第1章 嵌入式系统导论
直到1971年Intel公司推出了第一颗商用集成电路微处理器
Intel 4004以后,许多厂商纷纷推出8位、16位微处理器。以 微处理器为核心的微型计算机以其体积小、价格低、性能可 靠等特点,迅速走出机房,广泛地应用于仪器仪表、家用电 器、医疗设备等领域。这个时期也被人们称为PC时代。
第1章 嵌入式系统导论
计算机被嵌入到应用系统中后,原来通用计算机的标准
形态便不再复现了,人机交互应用的计算机与通用计算机系 统区别开来,就把这种以嵌入为手段、以控制为目的的专用 计算机称做嵌入式计算机系统。因此,嵌入式系统起源于微 型机时代,嵌入式系统的嵌入性是它的一个根本特点,其本 质是将计算机嵌入到应用系统中去。
第1章 嵌入式系统导论
1.1.3 嵌入式系统的特点
嵌入式系统的本质是专用的计算机系统,与通用计算机 系统相比,不同的嵌入式系统的特点会有所差异,但基本特 点是一样的,其主要表现如下: (1) 系统内核小、实时高效。嵌入式系统大多应用于小 型电子设备,系统资源有限。例如,一般MCS-51系列单片 机只有几KB的内部RAM、几十KB的ROM,经扩展后也不 过64 KB,要在这样有限的资源上运行实时内核,就对内核 的尺寸提出了严格的限制,大的通用操作系统肯定是无法运 行起来的,一般只能运行嵌入式操作系统,如μC/OS-Ⅱ的 内核最小可裁剪到2 KB。
【第4章】嵌入式操作系统原理精品PPT课件
实际调度模型
先来先服务 FCFS 最短任务优先调度 基于优先级的非抢占式调度
18
非抢占式调度
低优先级任务
(1)
(2)
(4)
高优先级任务
t0
ISR
t1
(3)
t2
等待态 运行态
时间
(5)
(6) 低优先级任务释 放CPU使用权
t3 t4
(7)
就绪态 被中断态
19
非抢占式调度
低优先级任务
(1)
(2)
(4)
suspended -> pended
taskResume() [shell] tr
suspended -> delayed
taskResume() [shell] tr
4.2.2 任务调度和管理
操作系统内核负责为对任务进行调度和管理;
为每个任务分配CPU时间; 负责任务切换工作; 按照一定的策略,在就绪态任务列表中选择一个任 务执行; 负责任务间的同步和通信。
43
优先级反转的解决方法
Thigh
t0
t1
t2 t3 时间 t4
t5 运行态
Tmedium
就绪态
Tlow
等待态
空闲
T3拥有
T1拥有
空闲
t0: Tlow获得资源 t1: Thigh抢占Tlow,Tlow进入就绪态 t2: Thigh试图获得资源锁,Thigh进入等 待态,Tlow优先级升高,Tlow运行
(5)
高优先级任务
t0
ISR
t1
(3)
t2
中断服务程序 使高优先级任
务就绪
时间
(6)
低优先级任务释 放CPU使用权
先来先服务 FCFS 最短任务优先调度 基于优先级的非抢占式调度
18
非抢占式调度
低优先级任务
(1)
(2)
(4)
高优先级任务
t0
ISR
t1
(3)
t2
等待态 运行态
时间
(5)
(6) 低优先级任务释 放CPU使用权
t3 t4
(7)
就绪态 被中断态
19
非抢占式调度
低优先级任务
(1)
(2)
(4)
suspended -> pended
taskResume() [shell] tr
suspended -> delayed
taskResume() [shell] tr
4.2.2 任务调度和管理
操作系统内核负责为对任务进行调度和管理;
为每个任务分配CPU时间; 负责任务切换工作; 按照一定的策略,在就绪态任务列表中选择一个任 务执行; 负责任务间的同步和通信。
43
优先级反转的解决方法
Thigh
t0
t1
t2 t3 时间 t4
t5 运行态
Tmedium
就绪态
Tlow
等待态
空闲
T3拥有
T1拥有
空闲
t0: Tlow获得资源 t1: Thigh抢占Tlow,Tlow进入就绪态 t2: Thigh试图获得资源锁,Thigh进入等 待态,Tlow优先级升高,Tlow运行
(5)
高优先级任务
t0
ISR
t1
(3)
t2
中断服务程序 使高优先级任
务就绪
时间
(6)
低优先级任务释 放CPU使用权
最新整理嵌入式实时操作系统VxWorks.ppt
• VxWorks只占用很小的存储空间,并可高 度剪裁,保证了系统能以较高的效率运行
VxWorks体系结构框图
板级支持包:Board Support Package
板级支持包对各种板子的硬件功能提供了统一的
软件接口,包括
硬件初始化
TCP/IP协议栈和
IVI//OOxW系 系UP文V这能oIV统统ONr/xOk件些够xSWI,sWX系Idrr将t提X系设灵a网管RS键显磁并otao标包o1pwr统C标A整s供1rk统备活e络道盘示盘口FkFS准括FsFM准ss个提支中了sIs:都的s驱驱驱驱驱驱包:驱::的盘、的盘供持,一使在动动动动动动每括与动原一缓驱T实V异作适的普个r用设: : , : , ,个以M,生u种冲动x用步为用 文 通e快W中 硬 局 内一 备S用 用 用 用 用 用B下用文F与I:高 包中 看 消 内 字 线 链 和-/库IoS一于 件 数F速断 件 域 存DO个 驱/于 于 于 于 于 于驱于件rRPO用性 括S断 门 息 存 符 缓 表 AkO个实 系 据灵包的 时 和 分T、标 动网 任xxIPs动采 任 进 中 看 内NS系S于能 :D处 狗 登 分 扫 冲 管提188CC文时 统 文活括产 钟 总 配S兼C1准 程络 务66程E用 务 程 断 门 存统风常的S理 计 录 配 描 和 理I供操V键d/件系 包 件的一生 和 线 等容I接序AC通 间序R基 间 间 处 狗 管格G设驻实、 时 、 、 、 环了作盘T标o,统 括 、、个和 计 内 等的口上A信 通:于 同 通 理 理Am备的内时器 缓一系,准文允应 : 外与R处 时 存设文,移F, 信优 步 信 机目存操、 冲个统Os仅本许用 部A备理 器 的件从植支先 机 机 制M标的作管实兼N存显根的 设,管 地系而持启级 制 制S机文系理用容在示据快 备I仅理 址统使多动的件统C、例的于,偏速 都存映得兼种或、核程文x仅移文 统在射文容8网其可心扩件6存读件一于件的卡B他抢:展系S在写系作x系启占PW8集统于磁统为6统动的iB,n网x盘文dS机多8包P络6的件制任B括驱一处S务P动部理调分度
VxWorks体系结构框图
板级支持包:Board Support Package
板级支持包对各种板子的硬件功能提供了统一的
软件接口,包括
硬件初始化
TCP/IP协议栈和
IVI//OOxW系 系UP文V这能oIV统统ONr/xOk件些够xSWI,sWX系Idrr将t提X系设灵a网管RS键显磁并otao标包o1pwr统C标A整s供1rk统备活e络道盘示盘口FkFS准括FsFM准ss个提支中了sIs:都的s驱驱驱驱驱驱包:驱::的盘、的盘供持,一使在动动动动动动每括与动原一缓驱T实V异作适的普个r用设: : , : , ,个以M,生u种冲动x用步为用 文 通e快W中 硬 局 内一 备S用 用 用 用 用 用B下用文F与I:高 包中 看 消 内 字 线 链 和-/库IoS一于 件 数F速断 件 域 存DO个 驱/于 于 于 于 于 于驱于件rRPO用性 括S断 门 息 存 符 缓 表 AkO个实 系 据灵包的 时 和 分T、标 动网 任xxIPs动采 任 进 中 看 内NS系S于能 :D处 狗 登 分 扫 冲 管提188CC文时 统 文活括产 钟 总 配S兼C1准 程络 务66程E用 务 程 断 门 存统风常的S理 计 录 配 描 和 理I供操V键d/件系 包 件的一生 和 线 等容I接序AC通 间序R基 间 间 处 狗 管格G设驻实、 时 、 、 、 环了作盘T标o,统 括 、、个和 计 内 等的口上A信 通:于 同 通 理 理Am备的内时器 缓一系,准文允应 : 外与R处 时 存设文,移F, 信优 步 信 机目存操、 冲个统Os仅本许用 部A备理 器 的件从植支先 机 机 制M标的作管实兼N存显根的 设,管 地系而持启级 制 制S机文系理用容在示据快 备I仅理 址统使多动的件统C、例的于,偏速 都存映得兼种或、核程文x仅移文 统在射文容8网其可心扩件6存读件一于件的卡B他抢:展系S在写系作x系启占PW8集统于磁统为6统动的iB,n网x盘文dS机多8包P络6的件制任B括驱一处S务P动部理调分度
西安电子科技大学嵌入式实时操作系统第1章PPT课件
0世纪90年代,在分布控制、柔性制造、数字化通信和 信息家电等巨大需求的牵引下,嵌入式应用进一步加速发展。 面向实时信号处理算法的DSP产品向着高速、高精度、低功 耗发展。Texas推出的第三代DSP芯片TMS320C30,引导着 微控制器向32位高速智能化发展。在应用方面,掌上电脑、 手持PC机、机顶盒技术相对成熟,发展也较为迅速。特别 是掌上电脑,1997年在美国市场上不过四五个品牌,而1998 年底,各式各样的掌上电脑如雨后春笋般纷纷涌现出来。随 着人类进入网络时代,将嵌入式计算机系统应用到各类网络 中已成为嵌入式系统发展的重要方向。在发展潜力巨大的信 息家电中,人们非常关注的网络电话设备,即IP电话,就是 一个代表。
第1章 嵌入式系统导论
在早期,由于嵌入式应用范围比较狭窄,大多用于工业 控制领域,人们还可以勉强将通用计算机通过改装、加固、 定制专业软件等方法,嵌入到大型系统中去实现嵌入式应用。 但随着经济、技术的高速发展,嵌入式应用越来越广泛,已 经深入到我们生活中的方方面面,小到彩电、空调、洗衣机、 手机,大到飞机、导弹、汽车等,嵌入式应用对计算机的功 能、体积、功耗、价格、重量、可靠性等方面的要求也越来 越苛刻,通过改造通用计算机的传统方法已远远不能胜任。 因此,嵌入式计算机不得不脱离通用计算机系统,走上独立 发展的道路。这就形成了现代计算机两大分支并行发展的时 期。
第1章 嵌入式系统导论
早在1614年,苏格兰人John Napier就发表论文公布他发 明了一种可以进行四则运算和方根运算的精巧装置。1848年, 英国数学家George Boole创立二进制代数学,为现代二进制 计算技术的发展铺平了道路。1937年,Bell试验室的George Stibitz展示了用继电器表示二进制的装置,尽管它是个展品, 但却是世界上的第一台二进制电子计算机。1946年2月15日, 名为ENIAC的计算机在美国诞生了,这是第一台现代意义 上的数字计算机,它的诞生具有划时代的意义,表明了现代 数字计算机时代的到来。在随后的近三十年里,计算机一直 为少数精英所掌握,主要用于实验室里的数值求解。
第1章 嵌入式系统导论
在早期,由于嵌入式应用范围比较狭窄,大多用于工业 控制领域,人们还可以勉强将通用计算机通过改装、加固、 定制专业软件等方法,嵌入到大型系统中去实现嵌入式应用。 但随着经济、技术的高速发展,嵌入式应用越来越广泛,已 经深入到我们生活中的方方面面,小到彩电、空调、洗衣机、 手机,大到飞机、导弹、汽车等,嵌入式应用对计算机的功 能、体积、功耗、价格、重量、可靠性等方面的要求也越来 越苛刻,通过改造通用计算机的传统方法已远远不能胜任。 因此,嵌入式计算机不得不脱离通用计算机系统,走上独立 发展的道路。这就形成了现代计算机两大分支并行发展的时 期。
第1章 嵌入式系统导论
早在1614年,苏格兰人John Napier就发表论文公布他发 明了一种可以进行四则运算和方根运算的精巧装置。1848年, 英国数学家George Boole创立二进制代数学,为现代二进制 计算技术的发展铺平了道路。1937年,Bell试验室的George Stibitz展示了用继电器表示二进制的装置,尽管它是个展品, 但却是世界上的第一台二进制电子计算机。1946年2月15日, 名为ENIAC的计算机在美国诞生了,这是第一台现代意义 上的数字计算机,它的诞生具有划时代的意义,表明了现代 数字计算机时代的到来。在随后的近三十年里,计算机一直 为少数精英所掌握,主要用于实验室里的数值求解。
嵌入式实时系统FreeRTOS ppt课件
FreeRTOS 任务不允许以任何方式从实现函数中返回— —它们绝不能有一条”return”语句,也不能执行到函数 末尾。如果一个任务不再需要,可以显式地将其删除 (void vTaskDelete( xTaskHandlepxTaskToDelete );)。
PPT课件
8
2.1任务函数
创建任务:
创建任务使用FreeRTOS的API函数xTaskCreate()。
程序清单2
PPT课件
9
2.1任务函数
参数介绍 :
pvTaskCode 一个指向任务的实现函数的指针(效果上仅仅是函数 名)。 pcName 具有描述性的任务名。这个参数不会被FreeRTOS使用。
其只是单
纯地用于辅助调试。usStackDepth 当任务创建时,内核会分为每 个任务分配属于任务自己的唯一状态。
每个任务都赋予了一个优先级。 每个任务都可以存在于一个或多个状态。 在任何时候都只有一个任务可以处于运行状态。 调度器总是在所有处于就绪态的任务中选择具 有最高优先级的任务来执行。
PPT课件
23
2.2任务调度
优先级:
xTaskCreate() API函数的参数uxPriority(即第五个 参数)为创建的任务赋予了一个初始优先级。
常量configMAX_PRIORITIES在 (FreeRTOSConfig.h文件中)的值,即是系统最多可具 有的优先级数目。0到(configMAX_PRIORITES – 1)
函数优先级可以调用vTaskPrioritySet() API函数进行 修改。
PPT课件
24
2.2任务调度
关于优先级为零的任务介绍:
2.errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY
PPT课件
8
2.1任务函数
创建任务:
创建任务使用FreeRTOS的API函数xTaskCreate()。
程序清单2
PPT课件
9
2.1任务函数
参数介绍 :
pvTaskCode 一个指向任务的实现函数的指针(效果上仅仅是函数 名)。 pcName 具有描述性的任务名。这个参数不会被FreeRTOS使用。
其只是单
纯地用于辅助调试。usStackDepth 当任务创建时,内核会分为每 个任务分配属于任务自己的唯一状态。
每个任务都赋予了一个优先级。 每个任务都可以存在于一个或多个状态。 在任何时候都只有一个任务可以处于运行状态。 调度器总是在所有处于就绪态的任务中选择具 有最高优先级的任务来执行。
PPT课件
23
2.2任务调度
优先级:
xTaskCreate() API函数的参数uxPriority(即第五个 参数)为创建的任务赋予了一个初始优先级。
常量configMAX_PRIORITIES在 (FreeRTOSConfig.h文件中)的值,即是系统最多可具 有的优先级数目。0到(configMAX_PRIORITES – 1)
函数优先级可以调用vTaskPrioritySet() API函数进行 修改。
PPT课件
24
2.2任务调度
关于优先级为零的任务介绍:
2.errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY
二嵌入式实时操作系统分析ppt课件-文档资料
3
任务
一个任务通常是一个无限的循环,如程序清单所示。一个任务看起来像其它C的函数 一样,有函数返回类型,有形式参数变量,但是任务是绝不会返回的。故返回参数 必须定义成void。 void YourTask (void *pdata) { for (;;) { /* 用户代码 */ (2) 调用uC/OS-II的某种系统服务: (1)
正在运行的任务是可以被中断的 ,除非该任务将中断关了,或者 μ C/OS-Ⅱ将中断关了。被中断了的任务就进入了中断服务态(ISR) 。响应中断时,正在执行的任务被挂起,中断服务子程序控制了 CPU 的使用权。中断服务子程序可能会报告一个或多个事件的发生,而使 一个或多个任务进入就绪态。在这种情况下,从中断服务子程序返回 之前, μ C/OS-Ⅱ要判定,被中断的任务是否还是就绪态任务中优先 级最高的。如果中断服务子程序使一个优先级更高的任务进入了就绪 态,则新进入就绪态的这个优先级更高的任务将得以运行,否则原来 被中断了的任务才能继续运行。 当所有的任务都在等待事件发生或等待延迟时间结束,μ C/OS-Ⅱ 执行空闲任务(idle task),执行OSTaskIdle()函数。
正在运行的任务期待某一事件的发生时也要等待,手段是调用以下3 个函数之一:OSSemPend(),OSMboxPend() ,或OSQPend()。调用后任 务进入了等待状态( WAITING )。当任务因等待事件被挂起( Pend ) ,下一个优先级最事件发生的报告可能来自另一个任务, 也可能来自中断服务子程序。
2
临界段(Critical Sections)
和其它内核一样,μC/OS-Ⅱ为了处理临界段代码需要关中断,处理完毕后再 开中断。这使得μC/OS-Ⅱ能够避免同时有其它任务或中断服务进入临界段代 码。关中断的时间是实时内核开发商应提供的最重要的指标之一,因为这个指 标影响用户系统对实时事件的响应性。μC/OS-Ⅱ努力使关中断时间降至最短 ,但就使用μC/OS-Ⅱ而言,关中断的时间很大程度上取决于微处理器的架构 以及编译器所生成的代码质量。 微处理器一般都有关中断/开中断指令,用户使用的C语言编译器必须有某种机 制能够在C中直接实现关中断/开中断地操作。某些C编译器允许在用户的C源 代码中插入汇编语言的语句。这使得插入微处理器指令来关中断/开中断很容 易实现。而有的编译器把从C语言中关中断/开中断放在语言的扩展部分。 μC/OS-Ⅱ定义两个宏(macros)来关中断和开中断,以便避开不同C编译器厂 商选择不同的方法来处理关中断和开中断。μC/OS-Ⅱ中的这两个宏调用分别 是:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。因为这两个宏的定 义取决于所用的微处理器,故在文件OS_CPU.H中可以找到相应宏定义。每种 微处理器都有自己的OS_CPU.H文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非实时系统典型例子
• • • • 银行数据查询处理系统 视频播放系统 图像扫描 文字识别系统
ห้องสมุดไป่ตู้
提高实时性能的因素
以下几种途径常常用来提高应用系统实时 性能
• • • • 尽量采用硬件处理 优化微处理器的中断机制 采用简单的单线程循环程序 采用基于实时操作系统的复杂多线程操作
可见硬件加速和RTOS应用是提高实时系 统的两个主要因素
实时系统的主要特点
及时响应外部发生的随机任务请求 在规定的时间范围内完成任务 任务执行的时间限制类型
• 截止时间 • 任务执行时间
• 截止时间 一个时间界限。它要求一个任务在该时刻之前完成 • 任务执行时间 一个任务从启动到完成所花费的时间。 分为平均任务执行时间和最坏任务执行时间 实时系统中一般指最坏任务执行时间,考虑了可能的等待、阻塞等最不 利的情况 • 任务余量 截止时间减去任务执行时间所得的值,反映了系统工作的从容程度 • 紧时间约束 在满足任务时限的同时,留给系统的时间比较紧张。由任务的余量小而 引起 • 松时间约束 与紧时限概念相反,指在满足任务时限的同时,留给系统的时间比较宽松
实时系统的属性和指标
实时系统的两个基本属性
• 可预测性和可靠性
实时系统的实时性能主要根据其RTOS的三 个主要指标来衡量
• 响应时间(response time) • 吞吐量(throughput) • 生存时间(survival time)
可预测性
系统能够对实时任务的执行时间进行判断,确定是否 能够满足任务的时限要求 嵌入式系统的两个可预测性 硬件延迟的可预测性 软件系统的可预测性 应用程序的响应时间是可预测的,即在有限的时间内完成必须的工作 操作系统的可预测性,即实时原语、调度函数等运行开销应是有界的 以保证应用程序执行时间的有界性 • 资源约束 指多个实时任务共享有限的资源时,必须按照一定的资源访 问控制协议进行同步,以避免死锁和高优先级任务被低优先 级任务堵塞的时间(即优先级反转时间)不可预测
基于优先级的调度
给每个任务分配一个优先级,在每次任务调度 时,调度器总是让CPU执行具有最高优先级的任务 。优先级驱动算法是事件驱动算法,即当任务所需 要的资源就绪后,会立即执行而无需等待。此算法 又称为贪心调度算法,保持工作调度算法或者列表 调度算法。
优先级调度
静态实时调度 系统在编译时就决定从就 绪任务队列选择哪个任务 来执行,即系统中实时任 务特性是事先知道的。 分为速率单调调度RMS和 截止时间单调调度DMS 动态实时调度 指调度器在运行期间才决 定选择哪个就绪任务来运 行。 分为最早截止时间优先 EDF和最小空闲时间优先 LSF
动态实时调度 最早截止时间优先算法EDF
分配给任务的优先级是根据它们当前对截止时限的 要求定的,离截止时限越短的就绪任务优先级越高 基于的模型假设 1. 所有实时任务启动时间为零 2. 任何任务不存在不可抢占的代码段,且抢占代价可 忽略 3. 任务无关,无先后次序的约束 4. 任务的相对最终完成时限与它的周期相等 5. 只有处理器的请求有意义,内存、I/O和其他资源 的请求可忽略
第二十讲 嵌入式实时操作系统
袁嵩
实时系统简介 嵌入式实时调度 嵌入式实时操作系统
一 实时系统简介
一般而言具有实时性能的控制系统是实时 系统。 实时表示一个非常短的时间间隔“time gap” (也可以认为表示时间框架“time frame” 或者时间窗口“time window”),具有“立 即”之含义。 当计算机进行实时处理时,要求在接收到 数据的同时执行操作并输出计算结果,不 能超出计算机系统所能容忍的时限。
周期性实时系统的例子
两个任务T1和T2
• T1的周期为10ms,执行时间为3ms • T2的周期为6ms,执行时间为1ms
起始时 间 任务T1 任务T2 CPU上的 执行过程 6 12 18 24 30 任务的 执行 10 完成时间 (Deadline) 20 30
二
嵌入式实时调度
实时调度算法分类 周期任务调度 优先级调度 非优先级调度 非周期任务调度
如果有N个任务,其执行时间分别为e1,e2,…,eN 执行周期分别为P1, P2,…,如果满足 1 eN e1 e 2 U = + + ... + ≤ N (2 N − 1) P1 P2 PN
则这N个任务是RMS算法可以调度的
截止时间单调调度DMS
按照任务的相对截止时间分配优先级,相对截止时 间短的优先级高。 它具有和RMS相同的优点,但 放松了对任务周期必 须等于其相对截止时间的限制。 如果每个任务的相对时限与它的周期成正比,则 RMS算法与DMS算法一致 当相对时限是任意的时候,DMS算法表现要好些, 此时DMS算法有时有可能产生可行的调度表,RMS 算法却不可以;如果DMS算法不能产生可行的调度 表,RMS算法肯定也不能.
• 中断延迟时间(Interrupt Latency) • 任务切换时间(Task Switching Latency)
响应时间
两个时间指标的计算公式是:
• 中断延迟时间 = TCloseINT + TDoISR + TSaveReg + TStartService TCloseINT :关中断的最长时间 TDoISR :开始执行中断服务子程序的第一条指令的时间 TSaveReg : 保存CPU内部寄存器的时间 TStartService :内核进入中断服务函数的执行时间 计算机接收到中断信号到操作系统作出响应,并完 成换道转入中断服务程序的时间 • 任务切换时间: T to Do B Task Time – T to Pause A Task Time T to Do B Task Time : 开始执行B任务的时刻 T to Pause A Task :暂停执行A任务的时刻 也就是CPU从停止一个任务执行切换到执行另一个任务所需要的时 间
• 如果有一个动态调度算法能完成实时调度,则 EDF算法必然可以 • 如果EDF算法不能完成一个任务集合的实时调度, 则不存在其它的动态调度算法来完成实时调度。
实时系统的定义
IEEE(美国电气电子工程师协会)给出的 实时系统定义是“那些正确性不仅取决于 计算的逻辑结果,也取决于产生结果所花 费的时间的系统”。这就是说,实时系统 运算能力具有及时与正确的双重特征。 本教程给出的实时系统(Real-Time System)定义是:对外来事件能在限定的 响应时间内做出预定质量处理的计算机系 统。
实时系统的关键因素
计算机系统的实时性能主要由操作系统和 运行在操作系统上的应用软件决定,对于 无操作系统的计算机则由控制程序决定。 具有实时性能的操作系统称为实时操作系 统(Real-Time Operating System, RTOS)
实时系统与非实时系统的例子
实时系统典型例子
• 民用飞机的导航系统 • 汽车的防刹车抱死系统
周期性实时任务调度的基本结 构
就绪<->执行
就绪
执行
• 如果当前有新的任务就绪,则 比较正在执行任务和新任务的 优先级,选择优先级高的任务 执行,低优先级任务回到就绪 状态。
执行->休眠
• 当前周期性任务执行结束,根 据下一个周期开始时间确定休 眠时间,启动定时器
休眠 任务的状态
休眠->执行
• 当休眠定时器时间到,将到时 的任务加入到就绪任务队列中, 并进行优先级选择。
可靠性
可靠性已成为衡量实时系统性能不可缺少的重要指 标。 采用静态分析和保留资源的方法及冗余配置,使关 键任务的要求总能满足,系统在最坏情况下能正常 工作或避免损失 一个系统的可靠性是由其组成元素共同决定的,这 些元素包括硬件、板级开发包、RTOS和应用等。
实时系统与通用系统区别
通用系统 方便用户管理计算机资 源 追求系统资源最大利用 率 实时系统 调度的实时性 响应时间可确定性 高可靠性
静态实时调度 速率单调调度(RMS)
基于嵌入式系统作了如下假设
1. 2. 3. 4. 5. 所有任务请求必须是周期性的,必须在限定时间内完成 任务之间相互独立 任务的运行时间不变即不考虑中断情况 所有非周期性任务都在特殊情况下运行 采用单处理器,任务切换时间忽略不计
速率越高,周期越短,任务的优先级越高
EDF算法的例子
3个非周期任务 到达时间 Task1 Task2 Task3 Task1 0 4 5 Task3 执行时间 10 3 8 Deadline 30 10 25
Task2
T1 0 2 4
T2 6 8 10
T3 12 14 16
T1
EDF的基本结论
EDF算法是一个优化的单处理器调度算法
RMS算法的可调度性分析
RMS算法是一个最优的静态调度策略
• 如果有其它静态调度策略可以完成一个任务集合的调度,则RMS算法也可 以完成
如果有两个任务,其执行时间分别为e1,e2 执行周期分别为P1, P2, 如果 满足
则这两个任务可被RMS算法调度
e1 e2 U = + ≤ 2( 2 − 1) P P2 1
下表给出了eCos嵌入式可配置操作系统内核实时响应 时间参考数据
硬件测试环境 ARM7TDMI(20MHz) StrongARM(221.2MHz) Intel Xcale(600MHz)
中断延迟时间 22.10 ms 3.25 ms 1.87 ms
任务切换时间 49.14 ms 1.85 ms 0.87 ms
实时系统的体系结构
实时系统的体系结构必须满足: 高运算速度 高速的中断处理 高的I/O吞吐率 合理的处理器和I/O设备的拓扑连接 高速可靠的和有时间约束的通信 体系结构支持的出错处理, 体系结构支持的调度 体系结构支持的操作系统, 体系结构支持的实时语言特性。
实时的调度理论。由于实时系统应用的特殊性,以 往通用系统中以大吞吐量为目标的调度算法必须改 进以适应实时应用的需要。主要要求是满足时间的 正确性,然后提供高度动态的,满足在线需求的, 强适应性的实时调度。 实时操作系统的设计和实现。在设计上首要目标是 提供保证实时性的方法,包括一系列的经典问题的 针对实时系统的解决方案。实现上要求操作系统的 低开销,而且必须保证内核以及其他关键部件的可 重入性。