嵌入式软件的编程与优化PPT课件

上传人:可**** 文档编号:102064924 上传时间:2022-06-06 格式:PPTX 页数:45 大小:1.49MB
返回 下载 相关 举报
嵌入式软件的编程与优化PPT课件_第1页
第1页 / 共45页
嵌入式软件的编程与优化PPT课件_第2页
第2页 / 共45页
嵌入式软件的编程与优化PPT课件_第3页
第3页 / 共45页
点击查看更多>>
资源描述
10.2 多任务编程技术多任务编程技术 任务划分原则 任务间通讯机制的选择 任务的细节设计 多任务软件系统设计实例 第1页/共45页任务划分原则任务划分原则 嵌入式多任务软件系统的设计阶段: 系统功能框图 多任务流程图 例:数据采集系统的功能框图 转化为转化为 传感器1 传感器2 数据处理 显示 处理功能 子处理功能 数据 图图10-2 数据采集系统功能框图数据采集系统功能框图 第2页/共45页任务划分原则任务划分原则 任务划分存在以下一对矛盾 如果划分的任务数太多,必然增加系统任务切换的开销 如果任务数太少,系统的并行度和实时性将降低 第3页/共45页任务划分原则任务划分原则 任务划分的H.Gomma原则(1) I/O依赖性原则 (Dependency on Input/Output Device)(2) 时间关键性的功能原则 (Time-Critical Functions-Hard Deadline)(3)大计算量的功能原则 (Heavy Computation Function)第4页/共45页任务划分原则任务划分原则 (4)功能内聚性原则 (Functional Relations)(5)时间内聚性原则 (Temporal Relations)(6)周期执行的功能原则 (Cyclic Executing Function) 核心思想:系统内功能的异步性 第5页/共45页任务划分原则任务划分原则 1I/O依赖性原则 如果变换依赖于I/O,则变换运行的速度常常受限于与它互操作的I/O设备的速度。在这种情况下,变换应该成为一个独立的任务 图图10-3 按照按照I/O依赖性原则进行任务划分依赖性原则进行任务划分 第6页/共45页任务划分原则任务划分原则 按照I/O依赖性原则进行任务划分的方法(1)在系统中创建与I/O设备类型数目相当的I/O任务,一个任务管理一类I/O设备(非一个任务管理一个I/O设备) 例:3个RS232、4个USB、2个以太网(2)I/O任务只实现与设备相关的功能代码,任务中分离设备相关性 (3)I/O任务的执行只受限于I/O设备的速度,而不是处理器的速度 第7页/共45页任务划分原则任务划分原则 2时间关键性的功能原则 按照该原则进行任务划分的方法是: (1)将有时间关键性(即最后时间期限Deadline)的功能分离出来,组成独立运行的任务 (2)赋予这些任务高的优先级,以满足Deadline的要求 例:刀具切割机第8页/共45页任务划分原则任务划分原则 图图10-4 按照时间关键性的功能原则进行任务划分按照时间关键性的功能原则进行任务划分 第9页/共45页任务划分原则任务划分原则 3大计算量的功能原则 按照该原则进行任务划分的方法是: (1)当计算功能占用CPU的时间较多时,捆绑计算功能成任务,赋予它们较低优先级运行,这样一方面消耗CPU的剩余时间,另一方面能被高优先级的任务抢占 (2)保持高优先级的任务是轻量级的 (3)多个计算任务可安排成相同优先级,按照时间片循环轮转第10页/共45页任务划分原则任务划分原则 图图10-5 按照大计算量的功能原则进行任务划分按照大计算量的功能原则进行任务划分 第11页/共45页任务划分原则任务划分原则 4功能内聚性原则 按照该原则进行任务划分的方法是: (1)各紧密相关的功能,不要分别对应不同的任务 (2)将这些紧密相关的功能组,组成一个任务,使各功能共享资源或相同事件的驱动 第12页/共45页任务划分原则任务划分原则 图图10-6 按照功能内聚性原则进行任务划分按照功能内聚性原则进行任务划分 意义:意义: 减少系统的通讯开销减少系统的通讯开销 保证了任务级的功能内聚性保证了任务级的功能内聚性 第13页/共45页任务划分原则任务划分原则 5时间内聚性原则 按照该原则进行任务划分的方法是: (1)将在同一时间内完成的各功能(即使是不相关的)组成功能组,形成一个任务 (2)功能组内的各功能是由相同的外部事件驱动的(如时钟等),这样每次任务接收到一个事件时,它们都可以同时执行例:早晨起床以后刷牙、洗脸、吃早饭几项事情第14页/共45页任务划分原则任务划分原则 图图10-7 按照时间内聚性原则进行任务划分按照时间内聚性原则进行任务划分 意义:意义: 减少系统用于任务间同步的资源开销减少系统用于任务间同步的资源开销 达到了任务级的时间内聚性达到了任务级的时间内聚性 第15页/共45页任务划分原则任务划分原则 6周期执行的功能原则 按照该原则进行任务划分的方法是: (1)将在相同时间周期内执行的各项功能组织成一个任务 (2)频率高的任务赋予高的任务优先级例:采集任务与显示任务 第16页/共45页任务划分原则任务划分原则 图图10-8 按照周期执行的功能原则进行任务划分按照周期执行的功能原则进行任务划分 10Hz 15Hz 10Hz 15Hz 第17页/共45页任务间通讯机制的选择任务间通讯机制的选择 详见7.2节第18页/共45页任务的细节设计任务的细节设计 1正确性 (1) 函数的可重入性 如果一个函数能被多个任务同时调用且不发生冲突,那么该函数是可重入的 要求用户编写的自定义函数嵌入式操作系统提供的库函数均具有可重入性详见节 第19页/共45页任务的细节设计任务的细节设计 (2) ISR的编程规范 基本限制: 不能调用可能阻塞中断的系统服务 基本要求要求 短小、精简 详见节第20页/共45页任务的细节设计任务的细节设计 (3) 生存性 在多任务系统中要避免死锁、活锁、饥饿、优先级倒置的出现第21页/共45页任务的细节设计任务的细节设计 死锁(Deadlock) 死锁是指任务相互占有其它任务所需资源而形成的“链”状结构 例:三角债 避免死锁:认真规划是关键 在开始编码之前,通过图解多线程应用程序,通常可以预测死锁C B A 甲 丙 乙 第22页/共45页任务的细节设计任务的细节设计 活锁(Lockout) 活锁是指一个任务所需资源永不满足例:生产者与消费者问题,消息队列生产者在没有与系统脱离耦合之前被其它任务删除,则产生活锁 图图10-10 生产者与消费者的问题生产者与消费者的问题 消息队列 生产者 消费者 第23页/共45页任务的细节设计任务的细节设计 饥饿(Starve) 饥饿指一个任务所需CPU资源得不到满足 例:美国曾经设计了一个作业系统,系统为每个任务分配一个优先级,然后按照优先级的顺序去处理这些任务,用户可以将自己的程序设定好优先级以后,放在作业系统中运行,当系统管理员在十几年以后去查看这个系统的作业运行情况的时候,发现有一个程序在系统中沉寂了十几年没有得到执行。第24页/共45页任务的细节设计任务的细节设计 造成饥饿的主要原因: 优先级较高的任务调度过于频繁或占用时间太长饥饿解决方法:合理的分配任务的优先级和对较高优先级任务的合理调度第25页/共45页任务的细节设计任务的细节设计 优先级倒置/翻转(Inversion) 是指高优先级任务因等待低优先级任务占用的互斥资源而被次高优先级任务不断抢占 有些RTOS自身提供保护机制可对优先级翻转进行预防,例如VxWorks和VRTX 在RTOS (如pSOSystem)未提供保护的情况下,就需要编程人员在编程的时候采取相应的手段进行处理(如动态的进行优先级提升) 第26页/共45页任务的细节设计任务的细节设计 2可靠性 任务访问方面:通过任务名、消息队列名、信号量名来访问这些资源,不是直接访问TCB,能保证可靠性,同时便于程序的阅读 例:VxWorks操作系统提供taskName()、taskNameToId()、taskIsSelf()等系统调用,方便了用户对任务资源的管理,更加直观化 第27页/共45页任务的细节设计任务的细节设计 任务删除方面:任务要自杀,不要他杀 任务一般既是生产者又是消费者,任务自杀前应先与系统脱离耦合,然后自杀,以免任务之间的相互干扰。例:一个消息队列的生产者在没有与系统脱离耦合之前被其它任务删除,则会产生活锁。 第28页/共45页任务的细节设计任务的细节设计 3容错性 任务采用特殊的容错和出错处理措施,如VxWorks环境下使用Signal、Watchdog等,使系统具有故障诊断和修复能力,在运行死机之后自动恢复先前的运行状态 第29页/共45页多任务软件系统设计实例多任务软件系统设计实例 飞机控制系统 (见教材) 第30页/共45页多任务软件系统设计实例多任务软件系统设计实例 1.需求分析: 得到系统功能框图 图图10-11 飞机控制系统的功能框图飞机控制系统的功能框图 第31页/共45页多任务软件系统设计实例多任务软件系统设计实例 系统功能框图中:(1) 飞机传感器数据必须每20ms采样一次(2) 飞机的副翼每20ms调整一次(3) 飞行员命令的发生是基于中断事件,但命令的获取低于上面两个事件的优先级(4) 飞行员驾驶室内的显示延时不能大于200ms第32页/共45页多任务软件系统设计实例多任务软件系统设计实例 2.系统的设计 任务划分:6类 (1)获得传感器数据的任务 (2)获得飞行员命令的任务 (3)控制计算任务 (4)过滤与存储飞机状态任务 (5)控制飞机副翼的任务 (6)飞行员驾驶室内的显示任务第33页/共45页多任务软件系统设计实例 中断服务例程:2个 硬件时钟的ISR 飞行员坐舱命令获取的ISR整个系统多任务流程图见下图 第34页/共45页多任务软件系统设计实例多任务软件系统设计实例 图图10-12 飞机控制系统的多任务流程图飞机控制系统的多任务流程图 第35页/共45页多任务软件系统设计实例多任务软件系统设计实例 (1) 硬件时钟的中断服务例程 该ISR使用N+1个二进制信号量用于同步,以激活20ms的时间关键性周期任务(传感器数据控制飞机副翼) 获得传感器数据的任务和控制飞机副翼的任务的执行模式:中断ISR任务第36页/共45页多任务软件系统设计实例多任务软件系统设计实例 (2)飞行员坐舱命令获取的中断服务例程 该ISR使用1个二进制信号量用于同步,以激活飞行员坐舱命令获取任务 命令获取任务的执行模式:中断ISR任务第37页/共45页多任务软件系统设计实例多任务软件系统设计实例 (3) 获得传感器数据的任务高优先级的输入设备服务 一类传感器对应一个任务,N类传感器N个任务 被赋予较高的任务优先级,每20ms被硬件时钟ISR发送的同步信号量触发,当它从传感器上读取数据后,向信箱发送消息 第38页/共45页多任务软件系统设计实例多任务软件系统设计实例 (4) 获得飞行员命令的任务低优先级的输入设备服务 硬件ISR发送同步信号量,激活该任务获得飞行员命令 该任务赋予较低的优先级。当高优先级的任务不运行时,该任务从飞行员坐舱中读取命令数据并处理它们 第39页/共45页多任务软件系统设计实例多任务软件系统设计实例 (5) 控制计算任务 控制计算任务位于关键相应路径上,需要快且确定的计算出飞机副翼的控制值 赋予控制计算任务高的任务优先级 第40页/共45页多任务软件系统设计实例多任务软件系统设计实例 (6) 过滤与存储任务 六类任务中,过滤与存储任务的优先级最低 只有当其它任务均不运行时,才执行此任务,它重复的执行计算,以消耗CPU的剩余时间 第41页/共45页多任务软件系统设计实例多任务软件系统设计实例 (7) 控制飞机副翼的任务高优先级的输出设备服务 该任务是软件处理的最关键部分的结尾部分 被赋予较高的任务优先级,由硬件时钟ISR发送的同步信号量每20ms激活一次,并且采用非阻塞的方式获取输入数据 第42页/共45页多任务软件系统设计实例多任务软件系统设计实例 (8) 飞行员驾驶室内的显示任务低优先级的输出设备服务 该任务读取消息队列上数据,将其送至显示设备显示 此任务设置的优先级较低 第43页/共45页习题习题 1.任务划分的核心思想是什么?简要说明任务划分的H.Gomma原则内容。 2.实现一个多层通信协议栈(如TCP/IP),应该如何去划分任务?第44页/共45页感谢您的观看。第45页/共45页
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!