嵌入式软件的编程与优化说课材料.ppt

上传人:豆**** 文档编号:59808274 上传时间:2022-11-13 格式:PPT 页数:45 大小:1.42MB
返回 下载 相关 举报
嵌入式软件的编程与优化说课材料.ppt_第1页
第1页 / 共45页
嵌入式软件的编程与优化说课材料.ppt_第2页
第2页 / 共45页
点击查看更多>>
资源描述

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

1、嵌入式软件的编程与优化10.2.1任务划分原则任务划分原则n嵌入式多任务软件系统的设计阶段:嵌入式多任务软件系统的设计阶段:系统功能框图系统功能框图多任务流程图多任务流程图例:数据采集系统的功能框图例:数据采集系统的功能框图转化为转化为 传感器1 传感器2 数据处理 显示 处理功能 子处理功能 数据 图图10-2数据采集系统功能框图数据采集系统功能框图 10.2.1任务划分原则任务划分原则n任务划分存在以下一对矛盾任务划分存在以下一对矛盾n如果划分的任务数太多,必然增加系统任务切换的如果划分的任务数太多,必然增加系统任务切换的开销开销n如果任务数太少,系统的并行度和实时性将降低如果任务数太少,

2、系统的并行度和实时性将降低10.2.1任务划分原则任务划分原则n任务划分的任务划分的H.Gomma原则原则n(1)I/O依赖性原则依赖性原则(DependencyonInput/OutputDevice)n(2)时间关键性的功能原则时间关键性的功能原则(Time-CriticalFunctions-HardDeadline)n(3)大计算量的功能原则大计算量的功能原则(HeavyComputationFunction)10.2.1任务划分原则任务划分原则n(4)功能内聚性原则功能内聚性原则(FunctionalRelations)n(5)时间内聚性原则时间内聚性原则(TemporalRelat

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

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

5、,而不是处理器的速度不是处理器的速度 10.2.1任务划分原则任务划分原则2时间关键性的功能原则时间关键性的功能原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n(1)将有时间关键性(即最后时间期限将有时间关键性(即最后时间期限Deadline)的功能分离出来,组成独立运行的任务)的功能分离出来,组成独立运行的任务n(2)赋予这些任务高的优先级,以满足赋予这些任务高的优先级,以满足Deadline的的要求要求例:刀具切割机例:刀具切割机10.2.1任务划分原则任务划分原则图图10-4按照时间关键性的功能原则进行任务划分按照时间关键性的功能原则进行任务划分10.2.1任务划分原

6、则任务划分原则3大计算量的功能原则大计算量的功能原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n(1)当计算功能占用当计算功能占用CPU的时间较多时,捆绑计的时间较多时,捆绑计算功能成任务,赋予它们较低优先级运行,这样一算功能成任务,赋予它们较低优先级运行,这样一方面消耗方面消耗CPU的剩余时间,另一方面能被高优先的剩余时间,另一方面能被高优先级的任务抢占级的任务抢占n(2)保持高优先级的任务是轻量级的保持高优先级的任务是轻量级的n(3)多个计算任务可安排成相同优先级,按照时多个计算任务可安排成相同优先级,按照时间片循环轮转间片循环轮转10.2.1任务划分原则任务划分原则图

7、图10-5按照大计算量的功能原则进行任务划分按照大计算量的功能原则进行任务划分10.2.1任务划分原则任务划分原则4功能内聚性原则功能内聚性原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n(1)各紧密相关的功能,不要分别对应不同的任各紧密相关的功能,不要分别对应不同的任务务n(2)将这些紧密相关的功能组,组成一个任务,将这些紧密相关的功能组,组成一个任务,使各功能共享资源或相同事件的驱动使各功能共享资源或相同事件的驱动10.2.1任务划分原则任务划分原则图图10-6按照功能内聚性原则进行任务划分按照功能内聚性原则进行任务划分意义:意义:减少系统的通讯开销减少系统的通讯开销保

8、证了任务级的功能内聚性保证了任务级的功能内聚性 10.2.1任务划分原则任务划分原则5时间内聚性原则时间内聚性原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n(1)将在同一时间内完成的各功能将在同一时间内完成的各功能(即使是不相即使是不相关的关的)组成功能组,形成一个任务组成功能组,形成一个任务n(2)功能组内的各功能是由相同的外部事件驱动功能组内的各功能是由相同的外部事件驱动的(如时钟等),这样每次任务接收到一个事件的(如时钟等),这样每次任务接收到一个事件时,它们都可以同时执行时,它们都可以同时执行例:早晨起床以后刷牙、洗脸、吃早饭几项事情例:早晨起床以后刷牙、洗脸、吃

9、早饭几项事情10.2.1任务划分原则任务划分原则图图10-7按照时间内聚性原则进行任务划分按照时间内聚性原则进行任务划分意义:意义:减少系统用于任务间同步的资源开销减少系统用于任务间同步的资源开销达到了任务级的时间内聚性达到了任务级的时间内聚性10.2.1任务划分原则任务划分原则6周期执行的功能原则周期执行的功能原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:n(1)将在相同时间周期内执行的各项功能组织成将在相同时间周期内执行的各项功能组织成一个任务一个任务n(2)频率高的任务赋予高的任务优先级频率高的任务赋予高的任务优先级例:采集任务与显示任务例:采集任务与显示任务10.2

10、.1任务划分原则任务划分原则图图10-8按照周期执行的功能原则进行任务划分按照周期执行的功能原则进行任务划分10.2.2 10.2.2 任务间通讯机制的选择任务间通讯机制的选择 详见详见7.27.2节节10.2.3任务的细节设计任务的细节设计1正确性正确性n(1)函数的可重入性函数的可重入性n如果一个函数能被多个任务同时调用且不发生冲如果一个函数能被多个任务同时调用且不发生冲突,那么该函数是可重入的突,那么该函数是可重入的n要求用户编写的自定义函数嵌入式操作系统提要求用户编写的自定义函数嵌入式操作系统提供的库函数均具有可重入性供的库函数均具有可重入性n详见详见7.1.10节节10.2.3任务的

11、细节设计任务的细节设计n(2)ISR的编程规范的编程规范n基本限制:基本限制:不能调用可能阻塞中断的系统服务不能调用可能阻塞中断的系统服务n基本要求要求基本要求要求短小、精简短小、精简n详见详见7.3.6节节10.2.3任务的细节设计任务的细节设计n(3)生存性生存性在多任务系统中要避免死锁、活锁、饥饿、优先在多任务系统中要避免死锁、活锁、饥饿、优先级倒置的出现级倒置的出现10.2.3 10.2.3 任务的细节设计任务的细节设计 n 死锁(死锁(DeadlockDeadlock)n死锁是指任务相互占有其它任务所需资源而死锁是指任务相互占有其它任务所需资源而形成的形成的“链链”状结构状结构 例:

12、三角债例:三角债n避免死锁避免死锁:认真规划是关键认真规划是关键 在开始编码之前,通过图解多线程应用程序,在开始编码之前,通过图解多线程应用程序,通常可以预测死锁通常可以预测死锁C B A 甲 丙 乙 10.2.3任务的细节设计任务的细节设计n活锁(活锁(Lockout)活锁是指一个任务所需资源永不满足活锁是指一个任务所需资源永不满足例:生产者与消费者问题,消息队列生产者在没有与系统例:生产者与消费者问题,消息队列生产者在没有与系统脱离耦合之前被其它任务删除,则产生活锁脱离耦合之前被其它任务删除,则产生活锁图图10-10生产者与消费者的问题生产者与消费者的问题10.2.3任务的细节设计任务的细

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

14、统中沉寂了十几年没有得到执行。行。10.2.3任务的细节设计任务的细节设计n造成饥饿的主要原因造成饥饿的主要原因:优先级较高的任务调度过于频繁或占用时间太长优先级较高的任务调度过于频繁或占用时间太长n饥饿解决方法:饥饿解决方法:合理的分配任务的优先级和对合理的分配任务的优先级和对较高优先级任务的合理调度较高优先级任务的合理调度10.2.3任务的细节设计任务的细节设计n优先级倒置优先级倒置/翻转(翻转(Inversion)n是指高优先级任务因等待低优先级任务占用的是指高优先级任务因等待低优先级任务占用的互斥资源而被次高优先级任务不断抢占互斥资源而被次高优先级任务不断抢占n有些有些RTOS自身提供

15、保护机制可对优先级翻转自身提供保护机制可对优先级翻转进行预防,例如进行预防,例如VxWorks和和VRTXn在在RTOS(如(如pSOSystem)未提供保护的情况)未提供保护的情况下,就需要编程人员在编程的时候采取相应的下,就需要编程人员在编程的时候采取相应的手段进行处理(如动态的进行优先级提升)手段进行处理(如动态的进行优先级提升)10.2.3 10.2.3 任务的细节设计任务的细节设计 2 2可靠性可靠性 n 任务访问方面:通过任务名、消息队列名、信号量任务访问方面:通过任务名、消息队列名、信号量名来访问这些资源,不是直接访问名来访问这些资源,不是直接访问TCB,TCB,能保证可靠性,能

16、保证可靠性,同时便于程序的阅读同时便于程序的阅读 例例:VxWorks:VxWorks操作系统提供操作系统提供taskName()taskName()、taskNameToIdtaskNameToId()()、taskIsSelf()taskIsSelf()等系统调用,方便了用户对任务资等系统调用,方便了用户对任务资源的管理,更加直观化源的管理,更加直观化 10.2.3 10.2.3 任务的细节设计任务的细节设计 n 任务删除方面:任务要自杀,不要他杀任务删除方面:任务要自杀,不要他杀 n 任务一般既是生产者又是消费者,任务自杀前应先任务一般既是生产者又是消费者,任务自杀前应先与系统脱离耦合,

17、然后自杀,以免任务之间的相互干与系统脱离耦合,然后自杀,以免任务之间的相互干扰。扰。例:一个消息队列的生产者在没有与系统脱离耦例:一个消息队列的生产者在没有与系统脱离耦合之前被其它任务删除,则会产生活锁。合之前被其它任务删除,则会产生活锁。10.2.3任务的细节设计任务的细节设计3容错性容错性任务任务采用特殊的容错和出错处理措施,如采用特殊的容错和出错处理措施,如VxWorks环境下使用环境下使用Signal、Watchdog等,使系统具等,使系统具有故障诊断和修复能力,在运行死机之后自动恢复先有故障诊断和修复能力,在运行死机之后自动恢复先前的运行状态前的运行状态10.2.4多任务软件系统设计

18、实例多任务软件系统设计实例飞机控制系统飞机控制系统(见教材)(见教材)10.2.4多任务软件系统设计实例多任务软件系统设计实例1.需求分析需求分析:得到系统功能框图得到系统功能框图图图10-11飞机控制系统的功能框图飞机控制系统的功能框图10.2.4多任务软件系统设计实例多任务软件系统设计实例系统功能框图中系统功能框图中:(1)飞机传感器数据必须每飞机传感器数据必须每20ms采样一次采样一次(2)飞机的副翼每飞机的副翼每20ms调整一次调整一次(3)飞行员命令的发生是基于中断事件,但命令的飞行员命令的发生是基于中断事件,但命令的获取低于上面两个事件的优先级获取低于上面两个事件的优先级(4)飞行

19、员驾驶室内的显示延时不能大于飞行员驾驶室内的显示延时不能大于200ms10.2.4多任务软件系统设计实例多任务软件系统设计实例2.系统的设计系统的设计n任务划分:任务划分:6类类n(1)获得传感器数据的任务获得传感器数据的任务n(2)获得飞行员命令的任务获得飞行员命令的任务n(3)控制计算任务控制计算任务n(4)过滤与存储飞机状态任务过滤与存储飞机状态任务n(5)控制飞机副翼的任务控制飞机副翼的任务n(6)飞行员驾驶室内的显示任务飞行员驾驶室内的显示任务10.2.4多任务软件系统设计实例多任务软件系统设计实例n 中断服务例程:中断服务例程:2 2个个n 硬件时钟的硬件时钟的ISRISRn 飞行

20、员坐舱命令获取的飞行员坐舱命令获取的ISRISR整个系统多任务流程图见下图整个系统多任务流程图见下图 10.2.4多任务软件系统设计实例多任务软件系统设计实例图图10-12飞机控制系统的多任务流程图飞机控制系统的多任务流程图 10.2.4多任务软件系统设计实例多任务软件系统设计实例(1)硬件时钟的中断服务例程硬件时钟的中断服务例程n该该ISR使用使用N+1个二进制信号量用于同步,以激活个二进制信号量用于同步,以激活20ms的时间关键性周期任务(传感器数据控制飞机的时间关键性周期任务(传感器数据控制飞机副翼)副翼)n获得传感器数据的任务和控制飞机副翼的任务的执获得传感器数据的任务和控制飞机副翼的

21、任务的执行模式:中断行模式:中断ISR任务任务10.2.4多任务软件系统设计实例多任务软件系统设计实例(2)飞行员坐舱命令获取的中断服务例程飞行员坐舱命令获取的中断服务例程n该该ISR使用使用1个二进制信号量用于同步,以激活飞行个二进制信号量用于同步,以激活飞行员坐舱命令获取任务员坐舱命令获取任务n命令获取任务的执行模式:中断命令获取任务的执行模式:中断ISR任务任务10.2.4多任务软件系统设计实例多任务软件系统设计实例(3)获得传感器数据的任务获得传感器数据的任务高优先级的输高优先级的输入设备服务入设备服务n一类传感器对应一个任务,一类传感器对应一个任务,N类传感器类传感器N个任务个任务n

22、被赋予较高的任务优先级,每被赋予较高的任务优先级,每20ms被硬件时钟被硬件时钟ISR发送的同步信号量触发,当它从传感器上读取数据后,发送的同步信号量触发,当它从传感器上读取数据后,向信箱发送消息向信箱发送消息10.2.4多任务软件系统设计实例多任务软件系统设计实例(4)获得飞行员命令的任务获得飞行员命令的任务低优先级的输低优先级的输入设备服务入设备服务n硬件硬件ISR发送同步信号量,激活该任务获得飞行员发送同步信号量,激活该任务获得飞行员命令命令n该任务赋予较低的优先级。当高优先级的任务不运该任务赋予较低的优先级。当高优先级的任务不运行时,该任务从飞行员坐舱中读取命令数据并处理它行时,该任务

23、从飞行员坐舱中读取命令数据并处理它们们10.2.4多任务软件系统设计实例多任务软件系统设计实例(5)控制计算任务控制计算任务n控制计算任务位于关键相应路径上,需要快且确定控制计算任务位于关键相应路径上,需要快且确定的计算出飞机副翼的控制值的计算出飞机副翼的控制值n赋予控制计算任务高的任务优先级赋予控制计算任务高的任务优先级10.2.4多任务软件系统设计实例多任务软件系统设计实例(6)过滤与存储任务过滤与存储任务n六类任务中,过滤与存储任务的优先级最低六类任务中,过滤与存储任务的优先级最低n只有当其它任务均不运行时,才执行此任务,它重只有当其它任务均不运行时,才执行此任务,它重复的执行计算,以消

24、耗复的执行计算,以消耗CPU的剩余时间的剩余时间10.2.4多任务软件系统设计实例多任务软件系统设计实例(7)控制飞机副翼的任务控制飞机副翼的任务高优先级的输出高优先级的输出设备服务设备服务n该任务是软件处理的最关键部分的结尾部分该任务是软件处理的最关键部分的结尾部分n被赋予较高的任务优先级,由硬件时钟被赋予较高的任务优先级,由硬件时钟ISR发送的发送的同步信号量每同步信号量每20ms激活一次,并且采用非阻塞的方式激活一次,并且采用非阻塞的方式获取输入数据获取输入数据10.2.4多任务软件系统设计实例多任务软件系统设计实例(8)飞行员驾驶室内的显示任务飞行员驾驶室内的显示任务低优先级的低优先级的输出设备服务输出设备服务n该任务读取消息队列上数据,将其送至显示设备显示该任务读取消息队列上数据,将其送至显示设备显示n此任务设置的优先级较低此任务设置的优先级较低习题习题1.任务划分的核心思想是什么?简要说明任务任务划分的核心思想是什么?简要说明任务划分的划分的H.Gomma原则内容。原则内容。2.实现一个多层通信协议栈(如实现一个多层通信协议栈(如TCP/IP),应),应该如何去划分任务?该如何去划分任务?此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档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