CH04-01-02-操作系统原理与实践.pptx
《CH04-01-02-操作系统原理与实践.pptx》由会员分享,可在线阅读,更多相关《CH04-01-02-操作系统原理与实践.pptx(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统设计原理嵌入式操作系统原理与实践主讲人:赖树明东莞理工学院05C/OS-III任务管理01嵌入式操作系统基础02初识C/OS-III操作系统03C/OS-III任务使用04C/OS-III时间管理06C/OS-III通信机制07C/OS-III操作系统作业 0101嵌入式操作系统基础常见嵌入式操作系统操作系统系统分类裸机和操作系统比较嵌入式操作系统基础常见嵌入式操作系统01嵌入式操作系统基础常见嵌入式操作系统01QNX是一种商用的遵从POSIX规范的类Unix硬实时操作系统,主要是面向嵌入式系统。高可靠性、低风险高级安全机制能耗更低可扩展及标准合规广泛的板卡支持GPU 加速图形支持高
2、效的产品开发嵌入式操作系统基础常见嵌入式操作系统01安卓是一种基于Linux内核的自由及开放源代码的操作系统。Android 操作系统最初由 Andy Rubin 开发,主要支持手机。2005年8月由Google收购注资,由Google公司和开放手机联盟领导及开发。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。Google以Apache开源许可证的授权方式,发布了Android的源代码。嵌入式操作系统基础常见嵌入式操作系统01Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统。广泛的硬件支持
3、开放源码,软件丰富高效、灵活性高良好的可移植性具有多任务、多用户的能力强大的网络功能能在PC计算机上实现全部的 Unix特性。提供完善的进程通信、线程同步等服务,网络功能超级强大,支持动态链接,文件系统完善嵌入式操作系统基础常见嵌入式操作系统01Embedded Configurable Operating System(eCos)是一个开源、免费的实时操作系统,适合实时处理需求和内存有限的嵌入式应用。开源,免费小巧,功能可裁剪移植性强支持POSIX标准接口,比较完善的线程同步服务集成network、file system等各种模块嵌入式操作系统基础常见嵌入式操作系统01源码开放,商用收费系统
4、小巧,功能可裁剪可移植性强稳定性、可靠性强同优先级级任务支持时间片轮转调度嵌入式操作系统基础常见嵌入式操作系统01RT-Thread 是一款来自中国的开源嵌入式实时操作系统体积小,成本低,功耗低、启动快速、实时性高、占用资源小完全开源,商用免费集成一系列应用组件和驱动框架,如TCP/IP协议栈,虚拟文件系统,POSIX接口,图形用户界面,FreeModbus主从协议栈,CAN框架,动态模块等嵌入式操作系统基础常见嵌入式操作系统01 FreeRTOS(读作free-arr-toss)是一个嵌入式系统使用的开源实时操作系统。设计小巧,简单易用源码开放,商用免费可移植性强,支持多种硬件平台支持抢占式
5、多任务和协作式多任务嵌入式操作系统基础常见嵌入式操作系统01采用基于微内核的体系结构,整个系统由四百多个相对独立、短小精练的目标模块组成,用户可以根据自己的需要选择适当的模块,进行裁减和配置。采用GNU类型的编译和调试器,支持x86、Motorola MC68xxx、PowerPC、MIPS、ARM、i960等主流的32位处理器超强可靠性卓越的实时性嵌入式领域应用最广泛、市场占有率最高的商业系统之一嵌入式操作系统基础操作系统分类01分时操作系统以时间片为基本调度原则的操作系统。对于分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。典型代表 Windows
6、 操作系统分时操作系统实时操作系统(Real Time Operating System)以优先级为基本调度原则的操作系统实时操作系统与一般的操作系统相比,最大的特色就是“实时性”.如果有高优先级任务需要执行,实时操作系统会尽可能快的执行该任务,延时较短。这个特性保证了各个任务的及时执行。典型代表:VxWork、eCos、FreeRTOS、RT-Thread、uCOS-II/III实时操作系统嵌入式操作系统基础裸机和操作系统比较01裸机代码结构嵌入式操作系统基础裸机和操作系统比较01实时操作系统程序代码结构任务代码结构任务代码结构main函数中不再有无限循环;代码结构更清晰,易于维护和移植 把
7、复杂的程序划分为一个个小任务;提供任务管理、通信、内存管理等机制;RTOS程序特点0202初识C/OS-III操作系统系统简介源码结构系统裁剪任务优先级任务调度法则程序模板-虚席以待-初识C/OS-III操作系统系统简介02C/OS 是一个老牌嵌入式实时操作系统编程语言,到目前已经发展了三代版本:C/OS-I:1992 -目前几乎没有在使用了C/OS-II:1998 -目前还有很多产器在使用C/OS-III:2009-市场上目前正在逐步取代C/OS-II概述初识C/OS-III操作系统系统简介02可裁剪、可剥夺型抢占式多任务实时内核。可剥夺型内核:总是执行当前优先级最高的就绪任务。高可扩展性:
8、无限数量的任务,优先级和内核对象。极短的关中断时间:采用锁定内核调度方式而不是关中断方式来保护内部数据结构和变量的临界段。同优先级时间片轮转:当多个优先级相同的任务同时就绪,并且这些任务的优先级是当前最高优先级时,系统会轮转调度这些任务。丰富的系统服务:任务管理、时间管理、信号量、时间标志组、互斥型信号量、消息列队、软件定时器、存储块管理等。内核对象:任务、信号量、互斥信号量、事件标记、消息列队、定时器、存储块 等。独有功能:内嵌的实时性能测试、向任务直接发送信号量和消息、同时等待多个内核对象等。C/OS-III亮点初识C/OS-III操作系统系统简介02可剥夺型(preemptive):当一
9、个事件发生,使得更高优先级的任务就绪时,C/OS-III就会立即将CPU的控制权剥夺,转交给更高优先级的任务使用,这个过程看起来好像是高优先级任务“抢占”了CPU。判断CPU如何执行程序,始终根据“可剥夺型”特性为依据。可剥夺型概念初识C/OS-III操作系统源码结构02系统源码可以在官网上下载到https:/ UCOSIII任务创建和删除-sim初识C/OS-III操作系统系统裁剪02uCOS_CONFIG 文件夹中存放了系统各个配置文件,通过定义这些文件里宏的值可以轻易地裁剪 C/OS-III的功能。os_cfg.h:系统相关代码配置,这部分是拓展性的,比如配置是否裁剪定时器等内核对象的宏
10、。os_cfg_app.h:系统相关代码配置,这部分是必须设置的,如任务堆栈、时钟节拍频率、消息缓冲池、软件定时器等;cpu_cfg.h:定义CPU相关指令(计算前导0)存在与否、CPU_NAME、时间戳、关中断时间测量等CPU相关配置;lib_cfg.h:配置C/LIB目录库文件代码相关选项。配置文件初识C/OS-III操作系统任务优先级02C/OS每个任务都有一个优先级设置,数字越小,优先级越高。C/OS每个任务都根据其重要程度来分配优先级。C/OS高优先级任务就绪可以抢占低优先级任务的CPU。C/O取值范围:C/OS-I:64;C/OS-II:255;C/OS-III:无限C/OS-I、
11、II每个任务具有惟一的优先级,不同任务不允许相同。C/OS-III支持不同任务设置相同的优先级,相同优先级的任务采用时间片轮转法进行调度,该功能是C/OS-III独有功能。优先级说明初识C/OS-III操作系统任务优先级02C/OS-III中部分优先级是系统使用了,不建议用户再去使用这些优先等,将这些优先级分配给C/OS-III的5个系统内部任务:优先级0:中断服务服务管理任务 OS_IntQTask()优先级1:时钟节拍任务 OS_TickTask()优先级2:定时任务 OS_TmrTask()优先级OS_CFG_PRIO_MAX-2:统计任务 OS_StatTask()优先级OS_CFG_
12、PRIO_MAX-1:空闲任务 OS_IdleTask()C/OS-III中优先级数字最大取值在cpu.h 中定义,用户可根据需要修改,以下是默认定义:#define OS_CFG_PRIO_MAX 64uC/OS-III系统中使用 OS_PRIO 表示任务优先级数据类型,这个类型是可以根据需要配置的,默认是定义为 unsigned char 类型,即范围0255,数值越小优先级越高。优先级说明初识C/OS-III操作系统任务调度法则02任务调度器,又叫调度程序,负责确定下一个要执行的任务。C/OS-III任务调度器支持优先级调度法则和时间片轮转调度法则。当存在相同优先级任务就绪时,采用时间片
13、调度法则,否则使用优先级调度法则。C/OS-III 任务调度器有2种:任务级调度器和中断级调度器。任务调度器任何操作系统都需要时钟节拍发生器来驱动系统运行,如用于系统定时、延时、超时判断、任务调度等。时钟节拍发生器通常由硬件定时器实现,C/OS-III移植到ARM Cortex-M系列芯片上时,使用滴答定时器(SysTickTimer)实现。时钟节拍发生器周期的设置:在uC/OS-III配置文件 uCOS_CONFIGos_cfg_app.h 中用宏定义方式设置。#define OS_CFG_TICK_RATE_HZ 1000u /*(10 to 1000 Hz)*/滴答定时器的中断服务程序
14、SysTick_Handler 函数通过调用 OSTimeTick()函数,完成每个操作系统节拍的系统工作。节拍发生器初识C/OS-III操作系统任务调度法则02任务级调度初识C/OS-III操作系统任务调度法则02中断级调度初识C/OS-III操作系统任务调度法则02当具有相同优先级的多个任务就绪时,采用时间片轮转调度算法(Round Bobin Scheduling),系统会根据分配给它们的时间片轮流调度各个任务运行。使用时间片轮转调度功能:使能 OS_CFG_SCHED_ROUND_ROBIN_EN(位于“os_cfg.h”);#define OS_CFG_SCHED_ROUND_ROB
15、IN_EN 1初始化时调用 OSSchedRoundRobinCfg()函数使能时间片轮转调度和配置相关指标。允许用户为每个任务指定不同的时间片,1个时间片就是1个时钟节拍时长。时间片长度是在任务建立时指定的,也可以调用OSTaskTimeQuantaSet()来改变。任务可以调用 OSSchedRoundRobinYield 函数主动放弃时间片,提前放弃CPU。时间片轮转调度初识C/OS-III操作系统任务调度法则02时间片轮转调度分析初识C/OS-III操作系统程序模板02C/OS-III系统main程序代码结构初识C/OS-III操作系统程序模板02实时操作系统程序代码结构start_t
16、ask 是开始任务,用于创建其他更多的用户任务,创建完成后,这个开始任务就没有作用,需要把它删除。这里的删除并不是把代码删除,而是把 start_task 任务函数从调度队列中移除,后面不再会被CPU执行。一个被删除的任务函数,除非你重新创建它,否则永远不可能再被CPU执行。uCOS-III任务1代码模板uCOS-III任务2代码模板初识C/OS-III操作系统程序模板020303C/OS-III任务使用任务基本概念定义任务控制块定义任务栈定义优先级定义任务函数创建任务C/OS-III中的任务是复杂问题“分而治之”的问题解题思路。C/OS-III的两种任务:系统任务(如空闲任务,统计任务)、用
17、户任务(用户自己创建的任务)。任务的组成任务控制块:C/OS-III 进行任务管理用的数据结构,记录了任务的特征信息。任务名称:C/OS-III每个任务都可自定义设置一个名称。任务函数:实现程序目标功能的核心代码。任务函数参数:当任务函数被调用时,传递给任务函数的实参。任务优先级:每个任务都有一个运行级别,C/OS-III 根据优先级进行调度。任务堆栈:任务切换时保存当前的程序状态、数据信息(类似于函数调用的使用的栈)。C/OS-III任务使用任务基本概念03任务概述概述C/OS-III系统中使用 CPU_STK 表示任务栈数据类型,对于32位处理器,被定义为 unsigned int 类型,
18、任务栈本质上就是一片连续的内存。一般定义为全局数组,栈大小不容易精确计算得到,因此,在RAM资源允许情况下,可以尽量分配大一些。如果任务栈分配过小,会导致任务切换时,无法保存全部任务数据,CPU状态信息,导致任务栈溢出,引发程序运行异常。任务栈定义#define START_STK_SIZE 128 /start_task任务栈大小 CPU_STK START_TASK_STKSTART_STK_SIZE;/start_task任务栈#define TASK1_STK_SIZE 256 /task1_task任务栈大小 CPU_STK TASK1_TASK_STKTASK1_STK_SIZE;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CH04 01 02 操作系统 原理 实践
限制150内