嵌入式软件的编程与优化.pptx

上传人:莉*** 文档编号:80036861 上传时间:2023-03-22 格式:PPTX 页数:45 大小:1.48MB
返回 下载 相关 举报
嵌入式软件的编程与优化.pptx_第1页
第1页 / 共45页
嵌入式软件的编程与优化.pptx_第2页
第2页 / 共45页
点击查看更多>>
资源描述

《嵌入式软件的编程与优化.pptx》由会员分享,可在线阅读,更多相关《嵌入式软件的编程与优化.pptx(45页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、会计学1嵌入式软件的编程与优化嵌入式软件的编程与优化10.2 多任务编程技术多任务编程技术n n 任务划分原则任务划分原则 n n 任务间通讯机制的选择任务间通讯机制的选择 n n 任务的细节设计任务的细节设计 n n 多任务软件系统设计实例多任务软件系统设计实例 第1页/共45页任务划分原则任务划分原则 n n嵌入式多任务软件系统的设计阶段:嵌入式多任务软件系统的设计阶段:系统功能框图系统功能框图多任务流程图多任务流程图 例:数据采集系统的功能框图例:数据采集系统的功能框图转化为转化为传感器1传感器2数据处理 显示处理功能子处理功能数据图图10-2 数据采集系统功能框图数据采集系统功能框图第

2、2页/共45页任务划分原则任务划分原则 n n 任务划分存在以下一对矛盾任务划分存在以下一对矛盾n n 如果划分的任务数太多,必然增加系统任务切换如果划分的任务数太多,必然增加系统任务切换的开销的开销n n 如果任务数太少,系统的并行度和实时性将降低如果任务数太少,系统的并行度和实时性将降低 第3页/共45页任务划分原则任务划分原则 n n任务划分的任务划分的H.GommaH.Gomma原则原则n n(1)I/O(1)I/O依赖性原则依赖性原则(DependencyonInput/OutputDevice)(DependencyonInput/OutputDevice)n n(2)(2)时间关

3、键性的功能原则时间关键性的功能原则(Time-CriticalFunctions-HardDeadline)(Time-CriticalFunctions-HardDeadline)n n(3)(3)大计算量的功能原则大计算量的功能原则(HeavyComputationFunction)(HeavyComputationFunction)第4页/共45页任务划分原则任务划分原则 n n(4)(4)功能内聚性原则功能内聚性原则(FunctionalRelations)(FunctionalRelations)n n(5)(5)时间内聚性原则时间内聚性原则(TemporalRelations)(T

4、emporalRelations)n n(6)(6)周期执行的功能原则周期执行的功能原则(CyclicExecutingFunction)(CyclicExecutingFunction)核心思想核心思想:系统内功能的异步性系统内功能的异步性 第5页/共45页任务划分原则任务划分原则 1 1I/OI/O依赖性原则依赖性原则n n 如果变换依赖于如果变换依赖于I/OI/O,则变换运行的速度常常受限于,则变换运行的速度常常受限于与它互操作的与它互操作的I/OI/O设备的速度。在这种情况下,变换应设备的速度。在这种情况下,变换应该成为一个独立的任务该成为一个独立的任务 图图10-3 按照按照I/O依

5、赖性原则进行任务划分依赖性原则进行任务划分第6页/共45页任务划分原则任务划分原则 n n 按照按照I/OI/O依赖性原则进行任务划分的方法依赖性原则进行任务划分的方法n n(1)(1)在系统中创建与在系统中创建与I/OI/O设备类型数目相当的设备类型数目相当的I/OI/O任务,一个任务管理一类任务,一个任务管理一类I/OI/O设备(非一个任务设备(非一个任务管理一个管理一个I/OI/O设备)设备)例:例:3 3个个RS232RS232、4 4个个USBUSB、2 2个以太网个以太网n n(2)I/O(2)I/O任务只实现与设备相关的功能代码,任任务只实现与设备相关的功能代码,任务中分离设备相

6、关性务中分离设备相关性 n n(3)I/O(3)I/O任务的执行只受限于任务的执行只受限于I/OI/O设备的速度,而设备的速度,而不是处理器的速度不是处理器的速度 第7页/共45页任务划分原则任务划分原则 2 2时间关键性的功能原则时间关键性的功能原则 按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n n(1)(1)将有时间关键性(即最后时间期限将有时间关键性(即最后时间期限DeadlineDeadline)的功能分离出来,组成独立运行的任)的功能分离出来,组成独立运行的任务务n n(2)(2)赋予这些任务高的优先级,以满足赋予这些任务高的优先级,以满足DeadlineDead

7、line的要求的要求 例:刀具切割机例:刀具切割机第8页/共45页任务划分原则任务划分原则 图图10-4 按照时间关键性的功能原则进行任务划分按照时间关键性的功能原则进行任务划分 第9页/共45页任务划分原则任务划分原则 3 3大计算量的功能原则大计算量的功能原则 按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n n(1)(1)当计算功能占用当计算功能占用CPUCPU的时间较多时,捆绑计的时间较多时,捆绑计算功能成任务,赋予它们较低优先级运行,这样算功能成任务,赋予它们较低优先级运行,这样一方面消耗一方面消耗CPUCPU的剩余时间,另一方面能被高优的剩余时间,另一方面能被高优先

8、级的任务抢占先级的任务抢占 n n(2)(2)保持高优先级的任务是轻量级的保持高优先级的任务是轻量级的 n n(3)(3)多个计算任务可安排成相同优先级,按照时多个计算任务可安排成相同优先级,按照时间片循环轮转间片循环轮转第10页/共45页任务划分原则任务划分原则 图图10-5 按照大计算量的功能原则进行任务划分按照大计算量的功能原则进行任务划分 第11页/共45页任务划分原则任务划分原则 4 4功能内聚性原则功能内聚性原则 按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n n(1)(1)各紧密相关的功能,不要分别对应不同的任各紧密相关的功能,不要分别对应不同的任务务 n n(

9、2)(2)将这些紧密相关的功能组,组成一个任务,将这些紧密相关的功能组,组成一个任务,使各功能共享资源或相同事件的驱动使各功能共享资源或相同事件的驱动 第12页/共45页任务划分原则任务划分原则 图图10-6 按照功能内聚性原则进行任务划分按照功能内聚性原则进行任务划分 意义:意义:减少系统的通讯开销减少系统的通讯开销 保证了任务级的功能内聚性保证了任务级的功能内聚性第13页/共45页任务划分原则任务划分原则 5 5时间内聚性原则时间内聚性原则 按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n n(1)(1)将在同一时间内完成的各功能将在同一时间内完成的各功能(即使是不相即使是

10、不相关的关的)组成功能组,形成一个任务组成功能组,形成一个任务n n(2)(2)功能组内的各功能是由相同的外部事件驱功能组内的各功能是由相同的外部事件驱动的(如时钟等),这样每次任务接收到一个事动的(如时钟等),这样每次任务接收到一个事件时,它们都可以同时执行件时,它们都可以同时执行例:早晨起床以后刷牙、洗脸、吃早饭几项事情例:早晨起床以后刷牙、洗脸、吃早饭几项事情第14页/共45页任务划分原则任务划分原则 图图10-7 按照时间内聚性原则进行任务划分按照时间内聚性原则进行任务划分 意义:意义:减少系统用于任务间同步的资源开销减少系统用于任务间同步的资源开销 达到了任务级的时间内聚性达到了任务

11、级的时间内聚性 第15页/共45页任务划分原则任务划分原则 6 6周期执行的功能原则周期执行的功能原则 按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n n(1)(1)将在相同时间周期内执行的各项功能组织成将在相同时间周期内执行的各项功能组织成一个任务一个任务 n n(2)(2)频率高的任务赋予高的任务优先级频率高的任务赋予高的任务优先级例:采集任务与显示任务例:采集任务与显示任务 第16页/共45页任务划分原则任务划分原则 图图10-8 按照周期执行的功能原则进行任务划分按照周期执行的功能原则进行任务划分 第17页/共45页任务间通讯机制的选择任务间通讯机制的选择 详见7.2

12、节第18页/共45页任务的细节设计任务的细节设计 1 1正确性正确性n n(1)(1)函数的可重入性函数的可重入性n n 如果如果一个一个函数函数能能被多个任务同时调用且不发生被多个任务同时调用且不发生冲突冲突,那么该函数是可重入的那么该函数是可重入的n n 要求用户编写的自定义函数嵌入式操作系统要求用户编写的自定义函数嵌入式操作系统提供的库函数均具有可重入性提供的库函数均具有可重入性n n详见节详见节 第19页/共45页任务的细节设计任务的细节设计 n n(2)ISR(2)ISR的编程规范的编程规范 n n 基本限制:基本限制:不能调用可能阻塞中断的系统服务不能调用可能阻塞中断的系统服务n

13、n 基本要求要求基本要求要求 短小、精简短小、精简n n 详见节详见节第20页/共45页任务的细节设计任务的细节设计 n n(3)(3)生存性生存性 在多任务系统中要避免死锁、活锁、饥饿、优在多任务系统中要避免死锁、活锁、饥饿、优先级倒置的出现先级倒置的出现第21页/共45页任务的细节设计任务的细节设计 n n 死锁(死锁(DeadlockDeadlock)n n死锁是指任务相互占有其它任务所需资源死锁是指任务相互占有其它任务所需资源而形成的而形成的“链链”状结构状结构 例:三角债例:三角债n n避免死锁避免死锁:认真规划是关键认真规划是关键 在开始编码之前,通过图解多线程应用程在开始编码之前

14、,通过图解多线程应用程序,通常可以预测死锁序,通常可以预测死锁C B A 甲 丙 乙 第22页/共45页任务的细节设计任务的细节设计 n n 活锁(活锁(LockoutLockout)活锁是指一个任务所需资源永不满足活锁是指一个任务所需资源永不满足例:生产者与消费者问题,消息队列生产者在没有与系例:生产者与消费者问题,消息队列生产者在没有与系统脱离耦合之前被其它任务删除,则产生活锁统脱离耦合之前被其它任务删除,则产生活锁 图图10-10 生产者与消费者的问题生产者与消费者的问题 第23页/共45页任务的细节设计任务的细节设计 n n 饥饿(饥饿(StarveStarve)n n饥饿指一个任务所

15、需饥饿指一个任务所需CPUCPU资源得不到满足资源得不到满足 例:美国曾经设计了一个作业系统,系统为每个任务分例:美国曾经设计了一个作业系统,系统为每个任务分配一个优先级,然后按照优先级的顺序去处理这些任务,配一个优先级,然后按照优先级的顺序去处理这些任务,用户可以将自己的程序设定好优先级以后,放在作业系统用户可以将自己的程序设定好优先级以后,放在作业系统中运行,当系统管理员在十几年以后去查看这个系统的作中运行,当系统管理员在十几年以后去查看这个系统的作业运行情况的时候,发现有一个程序在系统中沉寂了十几业运行情况的时候,发现有一个程序在系统中沉寂了十几年没有得到执行。年没有得到执行。第24页/

16、共45页任务的细节设计任务的细节设计 n n造成饥饿的主要原因造成饥饿的主要原因:优先级较高的任务调度过于频繁或占用时间太长优先级较高的任务调度过于频繁或占用时间太长n n饥饿解决方法:饥饿解决方法:合理的分配任务的优先级和合理的分配任务的优先级和对较高优先级任务的合理调度对较高优先级任务的合理调度第25页/共45页任务的细节设计任务的细节设计 n n 优先级倒置优先级倒置/翻转(翻转(Inversion)Inversion)n n是指高优先级任务因等待低优先级任务占是指高优先级任务因等待低优先级任务占用的互斥资源而被次高优先级任务不断抢用的互斥资源而被次高优先级任务不断抢占占n n有些有些R

17、TOSRTOS自身提供保护机制可对优先级翻自身提供保护机制可对优先级翻转进行预防,例如转进行预防,例如VxWorksVxWorks和和VRTXVRTXn n在在RTOSRTOS(如(如pSOSystempSOSystem)未提供保护的情)未提供保护的情况下,就需要编程人员在编程的时候采取况下,就需要编程人员在编程的时候采取相应的手段进行处理(如动态的进行优先相应的手段进行处理(如动态的进行优先级提升)级提升)第26页/共45页任务的细节设计任务的细节设计 2 2可靠性可靠性 n n 任务访问方面:通过任务名、消息队列名、信号量任务访问方面:通过任务名、消息队列名、信号量名来访问这些资源,不是直

18、接访问名来访问这些资源,不是直接访问TCB,TCB,能保证可靠性,能保证可靠性,同时便于程序的阅读同时便于程序的阅读 例例:VxWorks:VxWorks操作系统提供操作系统提供taskName()taskName()、taskNameToIdtaskNameToId()()、taskIsSelf()taskIsSelf()等系统调用,方便了用户对任务资等系统调用,方便了用户对任务资源的管理,更加直观化源的管理,更加直观化 第27页/共45页任务的细节设计任务的细节设计 n n 任务删除方面:任务要自杀,不要他杀任务删除方面:任务要自杀,不要他杀 n n 任务一般既是生产者又是消费者,任务自杀

19、前应先任务一般既是生产者又是消费者,任务自杀前应先与系统脱离耦合,然后自杀,以免任务之间的相互干与系统脱离耦合,然后自杀,以免任务之间的相互干扰。扰。例:一个消息队列的生产者在没有与系统脱离耦例:一个消息队列的生产者在没有与系统脱离耦合之前被其它任务删除,则会产生活锁。合之前被其它任务删除,则会产生活锁。第28页/共45页任务的细节设计任务的细节设计 3 3容错性容错性任务任务采用特殊的容错和出错处理措施采用特殊的容错和出错处理措施,如,如VxWorksVxWorks环境下使用环境下使用SignalSignal、WatchdogWatchdog等,使系统等,使系统具具有故障诊断和修复能力有故障

20、诊断和修复能力,在运行死机之在运行死机之后后自动恢复先自动恢复先前的运行状态前的运行状态 第29页/共45页多任务软件系统设计实例多任务软件系统设计实例 飞机控制系统(见教材)(见教材)第30页/共45页多任务软件系统设计实例多任务软件系统设计实例 1.1.需求分析需求分析:得到系统功能框图得到系统功能框图 图图10-11 飞机控制系统的功能框图飞机控制系统的功能框图 第31页/共45页多任务软件系统设计实例多任务软件系统设计实例 系统功能框图中系统功能框图中:(1)(1)飞机传感器数据必须每飞机传感器数据必须每20ms20ms采样一次采样一次(2)(2)飞机的副翼每飞机的副翼每20ms20m

21、s调整一次调整一次(3)(3)飞行员命令的发生是基于中断事件,但命令的获飞行员命令的发生是基于中断事件,但命令的获取低于上面两个事件的优先级取低于上面两个事件的优先级(4)(4)飞行员驾驶室内的显示延时不能大于飞行员驾驶室内的显示延时不能大于200ms200ms第32页/共45页多任务软件系统设计实例多任务软件系统设计实例 2.2.系统的设计系统的设计n n 任务划分:任务划分:6 6类类n n(1)(1)获得传感器数据的任务获得传感器数据的任务n n(2)(2)获得飞行员命令的任务获得飞行员命令的任务n n(3)(3)控制计算任务控制计算任务n n(4)(4)过滤与存储飞机状态任务过滤与存储

22、飞机状态任务 n n(5)(5)控制飞机副翼的任务控制飞机副翼的任务n n(6)(6)飞行员驾驶室内的显示任务飞行员驾驶室内的显示任务第33页/共45页多任务软件系统设计实例多任务软件系统设计实例 n n 中断服务例程:中断服务例程:2 2个个n n 硬件时钟的硬件时钟的ISRISRn n 飞行员坐舱命令获取的飞行员坐舱命令获取的ISRISR整个系统多任务流程图见下图整个系统多任务流程图见下图 第34页/共45页多任务软件系统设计实例多任务软件系统设计实例 图图10-12 飞机控制系统的多任务流程图飞机控制系统的多任务流程图第35页/共45页多任务软件系统设计实例多任务软件系统设计实例(1)(

23、1)硬件时钟的中断服务例程硬件时钟的中断服务例程n n 该该ISRISR使用使用N+1N+1个二进制信号量用于同步,以激活个二进制信号量用于同步,以激活20ms20ms的时间关键性周期任务(传感器数据控制飞机的时间关键性周期任务(传感器数据控制飞机副翼)副翼)n n 获得传感器数据的任务和控制飞机副翼的任务的执获得传感器数据的任务和控制飞机副翼的任务的执行模式:中断行模式:中断ISRISR任务任务第36页/共45页多任务软件系统设计实例多任务软件系统设计实例(2)(2)飞行员坐舱命令获取的中断服务例程飞行员坐舱命令获取的中断服务例程n n 该该ISRISR使用使用1 1个二进制信号量用于同步,

24、以激活飞行个二进制信号量用于同步,以激活飞行员坐舱命令获取任务员坐舱命令获取任务n n 命令获取任务的执行模式:中断命令获取任务的执行模式:中断ISRISR任务任务第37页/共45页多任务软件系统设计实例多任务软件系统设计实例(3)(3)获得传感器数据的任务获得传感器数据的任务高优先级的输高优先级的输入设备服务入设备服务 n n 一类传感器对应一个任务,一类传感器对应一个任务,N N类传感器类传感器N N个任务个任务n n 被赋予较高的任务优先级,每被赋予较高的任务优先级,每20ms20ms被硬件时钟被硬件时钟ISRISR发送的同步信号量触发,当它从传感器上读取数据后,发送的同步信号量触发,当

25、它从传感器上读取数据后,向信箱发送消息向信箱发送消息 第38页/共45页多任务软件系统设计实例多任务软件系统设计实例(4)(4)获得飞行员命令的任务获得飞行员命令的任务低优先级的输低优先级的输入设备服务入设备服务 n n 硬件硬件ISRISR发送同步信号量,激活该任务获得飞行员发送同步信号量,激活该任务获得飞行员命令命令n n 该任务赋予较低的优先级。当高优先级的任务不运该任务赋予较低的优先级。当高优先级的任务不运行时,该任务从飞行员坐舱中读取命令数据并处理它行时,该任务从飞行员坐舱中读取命令数据并处理它们们 第39页/共45页多任务软件系统设计实例多任务软件系统设计实例(5)(5)控制计算任

26、务控制计算任务 n n 控制计算任务位于关键相应路径上,需要快且确定控制计算任务位于关键相应路径上,需要快且确定的计算出飞机副翼的控制值的计算出飞机副翼的控制值n n 赋予控制计算任务高的任务优先级赋予控制计算任务高的任务优先级 第40页/共45页多任务软件系统设计实例多任务软件系统设计实例(6)(6)过滤与存储任务过滤与存储任务 n n 六类任务中,过滤与存储任务的优先级最低六类任务中,过滤与存储任务的优先级最低n n 只有当其它任务均不运行时,才执行此任务,它重只有当其它任务均不运行时,才执行此任务,它重复的执行计算,以消耗复的执行计算,以消耗CPUCPU的剩余时间的剩余时间 第41页/共

27、45页多任务软件系统设计实例多任务软件系统设计实例(7)(7)控制飞机副翼的任务控制飞机副翼的任务高优先级的输出高优先级的输出设备服务设备服务 n n 该任务是软件处理的最关键部分的结尾部分该任务是软件处理的最关键部分的结尾部分 n n 被赋予较高的任务优先级,由硬件时钟被赋予较高的任务优先级,由硬件时钟ISRISR发送的发送的同步信号量每同步信号量每20ms20ms激活一次,并且采用非阻塞的方式激活一次,并且采用非阻塞的方式获取输入数据获取输入数据 第42页/共45页多任务软件系统设计实例多任务软件系统设计实例(8)(8)飞行员驾驶室内的显示任务飞行员驾驶室内的显示任务低优先级的低优先级的输出设备服务输出设备服务 n n 该任务读取消息队列上数据,将其送至显示设备显该任务读取消息队列上数据,将其送至显示设备显示示 n n 此任务设置的优先级较低此任务设置的优先级较低 第43页/共45页习题习题 1.1.任务划分的核心思想是什么?简要说明任务任务划分的核心思想是什么?简要说明任务划分的划分的H.GommaH.Gomma原则内容。原则内容。2.2.实现一个多层通信协议栈(如实现一个多层通信协议栈(如TCP/IPTCP/IP),应),应该如何去划分任务?该如何去划分任务?第44页/共45页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com