版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章
移植μC/OS-II到ARM7
西安交通大学《单片机与嵌入式系统》2023/3/42基于嵌入式实时操作系统的程序设计1、任务划分8、采样任务设计2、任务设计9、串行通讯任务设计3、中断服务程序设计10、键盘任务设计4、行为同步11、显示任务设计5、资源同步12、嵌入式操作系统的剪裁6、数据通讯13、设计实例7、时间管理2023/3/431、任务划分程序运行可以分为(系统功能设计之软件设计)裸机运行方式——模块在监控模块的管理下运行操作系统运行方式——任务在操作系统的调度下运行对一个具体的嵌入式应用系统进行任务划分是实时操作系统应用软件设计的关键1)任务的特性任务的动态性通常有就绪态、运行态、等待态、挂起态等任务的独立性表现为逻辑上的平等性和信息传输的异步性任务的并发性从宏观上看不同的任务可以并发运行,好像每个任务都有自己的CPU一样。2023/3/441、任务划分2)任务划分的目标首要目标是满足实时性指标任务数目合理简化软件系统降低资源需求2023/3/451、任务划分3)任务划分的方法(1)设备依赖性任务划分I/O设备与CPU的速度差别是并发运行的前提和基础。(2)关键任务的划分如果此类功能不能正常运行,将造成重大影响,甚至引发灾难性后果,关键任务必须得到运行,不能遗漏一次。关键功能必须尽可能与其他功能剥离,独立成为一个任务,通过通讯方式再触发其他任务,完成后续操作。(3)紧迫任务的划分(及时运行,按时完成,尽量瘦身)指必须在规定时间得到运行权,在规定时刻前执行完毕的任务,因此此类功能有严格的实时性要求。(4)数据处理任务的划分用户应用程序中耗时最多的是各种数据处理程序单元,应将此类任务分别包装,又因为耗时较多,其优先级必须安排的较低,以便使用其他任务剩余的机时。2023/3/461、任务划分3)任务划分的方法(5)功能聚合任务的划分将关系密切的若干任务组合成一个任务,可达到功能聚合的效果。(6)触发条件相同任务的划分(大多是内部事件)如果若干功能由相同的事件触发就可以将这些功能组合成为一个任务,从而避免将事件分发给多个任务的工作量。(7)运行周期相同任务的划分将周期相同的功能组合在一起封装为一个任务,就可以避免一个时间事件触发几个任务,省去事件分发操作与他们之间的通讯。(8)顺序操作任务的划分如果若干功能按固定顺序进行流水作业,相互之间完全没有并发性,则应将这些功能组合为一个任务。2023/3/47小结首先以CPU为中心,将与各种输入输出设备相关功能分别划分为独立任务;发现“关键”功能将其最关键部分剥离出来,用一个独立任务(或ISR)完成,剩余部分用另外一个任务实现,两者之间通过通讯机制沟通;发现“紧迫”功能,将其最紧迫部分剥离出来,用一个独立高优先级任务(或ISR)完成,剩余部分用另外一个任务实现,两者之间通过通讯机制沟通;对于既“紧迫”又“关键”的功能,按“紧迫”功能处理;将消耗机时较多的数据处理功能划分出来封装为低优先级任务;将关系密切的若干功能组合成为一个任务,达到功能聚合的效果;将有相同事件触发的若干功能组合成为一个任务,从而免除事件分发机制;将运行周期相同的功能组合成为一个任务,从而免除时间事件分发机制;将若干按固定顺序执行的功能组合为一个任务,免除同步接力通讯的麻烦。2023/3/481、任务划分4)任务的可调度性分析任务划分后,需要进行“任务的可调度性分析”,以便确定这些任务是否可以在操作系统的调度下正常运行。对于实时系统,普遍采用的分析方法是速率单调分析RMA。所有任务都是周期的任务相互独立运行,不发生交叉每个任务必须在下一个周期开始前执行完本次规定的任务每个任务每次执行的时间是固定的所有任务的关键程度是一样的限制非周期任务初始化和失败恢复工作,这类非周期任务没有紧迫性要求。RMA的测试公式N12345...CPU利用系数10.8280.7790.7560.743...0.6932023/3/491、任务划分5)任务与嵌入式多任务实时系统任务与多任务任务是指一个程序分段。这个分段被操作系统当作一个基本单元来调度。典型地,每个任务都是一个无限的循环,而且在同一时刻只能处于5种状态之一:休眠态、就绪态、运行态、等待态、被中断态。多任务系统的执行过程实际上就是一系列在这5种状态中循环流动、轮流被内核调度的过程。多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。2023/3/4101、任务划分5)任务与嵌入式多任务实时系统嵌入式多任务实时系统RTOS本质上就是嵌入的实时内核,它负责管理各个任务,或者说是为每上任务分配CPU时间,并且负责任务之间的通信。实时内核可分为可剥夺型和不同剥夺型两类。因此,嵌入式实时系统也可分为两类:使用不可剥夺型内核的嵌入式实时系统使用可剥夺型内核的嵌入式实时系统。2023/3/4111、任务划分6)实时系统中的长任务问题长任务的定义在RTOS中,长任务就是指整个任务的执行时间较长,超出了RTOS中其它某一个或某几个任务的实时要求容限,而对整个RTOS的实时性构成威胁的那些任务。2023/3/4121、任务划分6)实时系统中的长任务问题长任务对RTOS的影响在可剥夺型实时内核系统中,长任务由于执行时间长,更容易被高优先级的任务打断:一是长任务可能在一次执行的过程中被频敏打断,长时间得不到一次完整的执行;二是长任务被打断时,可能要保存大量的现场信息,占用一定的系统资源,降低了实时性。当使用不可剥夺型实时内核时,长任务对RTOS的影响更为明显,任务级响应时间取决于最长的任务执行时间。系统的实时性势必要下降。2023/3/4131、任务划分7)长任务问题的解决最有效的途径是进行任务分割。即将长任务分割成若干个小任务。这样单个任务的执行时间变短,实时性提高。对RTOS的分析与计算长任务的分割必须结合系统中所使用的内核,以及各任务对实时性的要求情况,进行必要的分析计算,才能保证分割的合理性和有效性2023/3/4141、任务划分具体的步骤如下:分析系统共有多少个任务,这些任务对实时性的要求有多高,求出各个任务所要求的最小执行频率f1,f2,f3……fn和各任务的实际执行时间t1,t2,t3……tn。确定系统中的长任务如果max(tn)<min(1/fn),则此系统中不存在长任务。如果max(tn)>min(1/fn),则存在长任务,而且执行时间为max(tn)的那个任务就是要找的长任务。分析此长任务是否需要分割,分析一下是什么原因导致执行的时间过长,这个时间还能够通过程序的优化来缩短?如果能,则不需要进行任务分割;否则要对这个长任务进行分割。2023/3/4151、任务划分7)长任务问题的解决任务分割,常用任务分割的方法有以下两种:将长任务按功能分为若干个小模块,每一个模块构成一个小任务,每个小任务执行一个相对独立的功能,且要保证执行时间t<min(1/fn)。对键盘任务和动态LED显示等任务,可按照方便保存现场信息原则,强制将其分割成若干个小任务,每个任务在min(1/fn)时间内主动保存现场信息、放弃CPU的控制权,等到再次被内核调度时继续执行。2023/3/416基于嵌入式实时操作系统的程序设计1、任务划分8、采样任务设计2、任务设计9、串行通讯任务设计3、中断服务程序设计10、键盘任务设计4、行为同步11、显示任务设计5、资源同步12、嵌入式操作系统的剪裁6、数据通讯13、设计实例7、时间管理2023/3/4172、任务设计在基于实时操作系统应用程序设计中任务设计是整个应用程序的基础,其他软件设计工作都是围绕任务设计来展开的。任务设计就是设计任务函数和相关的数据结构。1)任务函数的结构在用户任务函数中,必须包含至少一次对操作系统服务函数的调用,否则比其优先级低的任务将无法得到运行机会,这是用户任务函数与普通函数的明显区别。单次执行的任务周期性执行的任务事件触发执行的任务2023/3/418单次执行的任务此类任务在创建后只执行一次,执行结束后即自行删除VoidMyTask(void*pdata)//可传递原始参数,使每次任务
//启动时可以有不同的工作状态{
进行准备工作的代码;//如定义和初始化变量,初始化设备 任务实体代吗;//包含若干系统函数调用, 调用任务删除函数;//OSTaskDel(OS_PRIO_SELF)}适合采用“创建任务”的方式来启动的任务,通常是“孤立任务”,不和其他任务进行通信,只使用共享资源来获取信息和输出信息。2023/3/419单次执行的任务使用启动任务
voidmain(void){ OSInit(); //初始化操作系统
OSTaskCreate(TaskStart,(void*)0,&TaskStartStk[TASK_STK_SIZE-1],1) OSStart(); //启动操作系统,开始对任务进行调度管理
}
voidTaskStart(void*pdata) //启动任务
{ pdatda=pdata;
系统硬件初始化; //始终系统、中断系统和外设等 创建各个任务; //键盘、显示、采样、数据处理、打印等任务 创建各种通信工具; //如信号量、消息邮箱和消息队列等
OSTaskDel(OS_PRIO_SELF); //删除自己
}2023/3/420周期性执行的任务此类任务在创建后按一个固定的周期来执行
VoidMyTask(void*pdata) {
进行准备工作的代码;
while(1)
{
任务实体代码; 调用系统延时函数; //OSTimeDly() //或OSTimeDlyHSM() } }如周期性不强的键盘扫描、动态显示刷新、模拟信号采样等任务。2023/3/421事件触发执行的任务此类任务在创建后虽然可以很快获得运行权,但任务实体代码需要等待某种事件的发生,相关事件发生一次,该任务实体代码就执行一次VoidMyTask(void*pdata){
进行准备工作的代码;
while(1)
{
调用获取事件的函数;任务实体代吗;
}}2023/3/4222、任务设计2)任务优先级安排任务的优先级资源任务优先级安排原则任务优先级考虑原则重要性由高到底依次为:中断关联性,紧迫性,关键性,频繁性,快捷性,传递性。0~63共64个优先级#defineOS_LOWEST_PRIO18最高保留统计任务空闲任务012345678910111213141516171819用户使用2023/3/423任务优先级安排原则优先级安排举例一个应用系统中安排有键盘任务、显示任务、模拟信号采集任务、数据处理任务、串口发送任务、串口接受任务。任务分析串口接受任务是关键和紧迫任务,不允许遗漏;模拟信号采集是紧迫任务,但不是关键任务,遗漏一个不至于发生重大问题;串口发送任务由主机控制,慢一些也可以;键盘和显示任务是人机接口任务,实时性要求较低;数据处理任务运算量很大时,优先级安排最低,运算量不大时,可安排比键盘任务高一些。任务安排(OS_LOWEST_PRIO=18)串口接收模拟信号采集串口发送数据处理键盘任务显示任务246912132023/3/4242、任务设计3)任务的数据结构设计一个任务除了必须的代码外,还有相关的信息需要保存,因而需要设计一些数据结构。与操作系统有关的数据结构:全局变量与操作系统无关的数据结构:局部和全局变量2023/3/425与操作系统有关的数据结构一个任务首先要被创建,然后才能工作:INT8UOSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8Uprio);函数中包含4部分:任务函数指针pd;任务参数指针pdata,向任务传送原始参数;任务堆栈指针ptos,容量可设;任务优先级数prio,由操作系统设置;和数据结构有关2023/3/426与操作系统无关的数据结构每个任务都有特定功能,需要处理特定信息,需要定义对应的数据结构变量,数组、结构体、字符串当信息的生产者和消费者都是同一个任务时,保存信息的数据结构应该在该任务函数的内部定义当某个任务的生产者和消费者不是同一个任务时,则应该在任务函数的外部定义,使之成为共享资源,并保证访问的互斥性。2023/3/4272、任务设计4)任务设计中问题:效率、可靠性、容错公共函数的调用互斥调用可重入设计与其它任务的协调不允许任务之间的调用,必须采用操作系统提供的同步和通讯机制来进行任务之间的协调运行。“行为同步”公共资源的访问要保障共享资源的完整性和安全性。“资源同步”与其他任务进行数据通讯可有多种方式实现任务之间或和ISR之间的“数据通信”。2023/3/4282、任务设计5)任务的代码设计过程一个任务的代码设计过程是从上到下的过程,应先分析系统总体任务关联图,明确每个任务在系统整体中的位置和角色,再对每一个任务进行详细关联分析,然后画出任务的程序流程图,最后按照程序流程图编写程序代码。系统总体任务关联图任务的关联分析任务的程序流程图2023/3/429系统总体任务关联图编写每一个任务时,必须非常清楚地掌握它与其它任务(ISR)的关系第一种关系为行为同步关系,体现为时序上的触发关系本任务受到哪些任务(ISR)的制约。本任务可以控制哪些任务的运行。第二种关系为资源同步关系,体现为信息的流动和共享关系需要那些任务提供数据,数据形式,类型等产生哪些数据给其它任务。2023/3/430系统总体任务关联图采集ISR使用生成消息队列信号量能谱数据(配备互斥信号量)串口ISR使用创建能谱数据发送任务能谱数据显示任务能谱数据采集和调整任务键盘任务创建创建由主函数创建后,周期性远行不受其他任务制约,也不需要其他任务提供数据,而本身通过创建任务的形式控制其他3个任务的运行由键盘任务创建后,控制数据采集ISR的启动,接收ISR通过消息队列提供的原始数据,生成能谱数据,以全局数组的形式供显示任务和数据发送任务使用2023/3/431基于嵌入式实时操作系统的程序设计1、任务划分8、采样任务设计2、任务设计9、串行通讯任务设计3、中断服务程序设计10、键盘任务设计4、行为同步11、显示任务设计5、资源同步12、嵌入式操作系统的剪裁6、数据通讯13、设计实例7、时间管理2023/3/4323、中断服务程序设计中断服务程序(ISR)是嵌入式应用系统获取各种事件的基本手段,而“事件”是实时性问题的讨论基础和时间计算的起点。ISR的设计质量直接影响到系统的实时性指标和操作系统的工作效率。1)中断优先级安排为不同的ISR安排不同的优先级,在允许中断嵌套的的情况下,最高优先级的中断总是能够得到及时响应。中断的优先级资源中断优先级安排原则2023/3/4333、中断服务程序设计中断的优先级资源在ARM7体系的CPU中,最多可以有32个中断资源,可以设定为:FIQ: 最好分配给唯一的中断源向量IRQ: 总数不能超过16个非向量IRQ: 超过17个中断源的其他中断源只要没有关闭中断,ISR可以中断任何任务的运行,可以将ISR视为比最高优先级的任务还要优先的任务。2023/3/4343、中断服务程序设计中断优先级安排原则中断源是系统及时获取异步事件的主要手段,优先级原则如下:紧迫性:最高原则关键性频繁性:防止遗漏快捷性:处理时间越快,优先级越高。ISR的功能应该尽量简单,只要将获取的异步事件通讯给关联任务即可,后续处理交由关联任务完成。2023/3/4353、中断服务程序设计2)不受操作系统管理的中断服务程序正常情况下,ISR应该受操作系统管理,给各个任务提供触发信号,但也有不受操作系统管理的情况:没有必要操作系统根本就没有对ISR进行管理C/OS-II移植到ARM7体系的CPU上时,没有对FIQ进行处理,即FIQ是不受操作系统管理的。在工程模板的系统启动文件Startup.s中,已经把汇编代码处理好了,用户只需要编写中断服务函数FIQ_Exception()无需考虑保护现场和恢复现场的问题;FIQ无法与关联任务通讯,只能通过原始数据区离线处理;2023/3/436Startup.s中对FIQ的处理Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0x9205f80 LDR PC, [PC,#-ff0] LDR PC, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD UnfefinedAddrSWI_Addr DCD PrefetchAdd DCDDataAbortAddr DCDNouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_HandlerFIQ_HandlerSTMFD SP!,{R0-R3,LR}BL FIQ_ExceptionLDMFD SP!,{R0-R3,LR}SUBS PC,LR,#42023/3/4373、中断服务程序设计3)受操作系统管理的中断服务程序C/OS-II移植到ARM7体系的CPU上时,对IRQ进行了管理,其IRQ代码的编写必须遵循一定的规则中断服务程序的结构进入中断:除了保护现场外,还需要调用“进入中断”服务函数,使操作系统掌握当前中断的嵌套深度;运行功能代码:包括ISR实质功能代码和系统通讯服务函数,使关联任务得到同步信号或数据而进入就绪状态,但在ISR中不允许调用延时函数和可能被挂起的系统服务函数;退出中断:必须执行系统规定的“退出中断”流程,返回①低优先级中断②原任务③重新调度的任务。C/OS-II移植到ARM7体系的CPU上时,与具体应用无关的的代码被剥离出来(IRQ.inc),并提供C语言接口供用户编写ISR。2023/3/4383、中断服务程序设计3)受操作系统管理的中断服务程序中断句柄配置和初始化中断源设计中断与关联任务的通讯手段触发ISR的事件不包含数据:信号量触发ISR的事件是包含数据的低频事件,将数据采集的工作放在关联任务中:信号量触发ISR的事件是包含数据的中高频事件:信号邮箱触发ISR的事件是包含数据的非周期高频事件:消息队列2023/3/439基于嵌入式实时操作系统的程序设计1、任务划分8、采样任务设计2、任务设计9、串行通讯任务设计3、中断服务程序设计10、键盘任务设计4、行为同步11、显示任务设计5、资源同步12、嵌入式操作系统的剪裁6、数据通讯13、设计实例7、时间管理2023/3/4404、行为同步1)用于行为同步的通讯手段二值信号量计数信号量事件标志组消息邮箱消息队列小结2023/3/4414、行为同步2)行为同步ISR与任务之间的同步两个人物之间的单向同步两个人物之间的双向同步两个以上人物同步一个任务多个任务相互同步2023/3/4425、资源同步1)关中断保障数据可靠性保障数据完整性小结2)关调度3)使用互斥信号量4)使用计数信号量2023/3/4436、数据通讯1)全局变量2)内存数据块3)消息邮箱4)消息队列2023/3/4447、时间管理1)控制任务的执行周期2)控制任务的运行节奏3)状态查询4)终止周期性任务2023/3/4458、采样任务设计1)使用延时函数控制采样周期2)使用定时中断控制采样周期3)使用节拍钩子函数进行采样4)使用快速定时中断进行采样5)被动采样2023/3/4469、串行通讯任务设计1)通讯协议设计起始码地址码长度码数据段校验码2)风险评估3)帧缓冲区4)数据发送5)数据接收2023/3/44710、键盘任务设计1)可靠地获取键盘操作信息2)基于菜单操作的监控流程系统功能分析和菜单结构设计监控程序设计3)与显示任务的通讯2023/3/44811、显示任务设计1)GUI简介2)画面设计3)与其他任务的接口4)短消息设计5)限时任务设计2023/3/44912、嵌入式操作系统的剪裁1)服务功能的剪裁任务管理功能的剪裁通讯服务功能的剪裁其他功能的剪裁2023/3/45012、嵌入式操作系统的剪裁2)数据结构的剪裁与任务有关的数据结构与通讯功能有关的数据结构其他参数2023/3/45113、设计实例1)实例简介2)硬件系统3)任务分析4)程序设计详解键盘任务显示任务使用延时函数的采样任务使用快速中断的采样任务使用时钟节拍钩子函数的采样任务使用定时中断的采样人物串行口发送任务2023/3/4522023/3/453C/OS-II可剪裁性的实现文件OS_CFG.H中用于系统剪裁的常量编译系统根据用户在配置文件中的配置常量数值有选择的对应用程序进行编译,实现剪裁。2023/3/454C/OS-II函数和相关的常量函数使用该函数需要置1的常量与该函数相关的其他常量OSInit()无OS_MAX_EVENTSOS_Q_ENandOS_MAX_QSOS_MEN_ENOS_TASK_IDLE_STK_SIZEOS_TASK_STAT_ENOS_TASK_STAT_STK_SIZEOSSchedLock()无无OSSchedUNlock()无无OSStart()无无OSStartInit()OS_TASK_STAT_EN&&OS_TASK_CREATE_EXT_ENOS_TICKS_PER_SECOSVersion()无无OSIntEnter()无无OSIntExit()无无2023/3/455函数使用该函数需要置1的常量与该函数相关的其他常量OSMboxAccept()OS_MBOX_EN无OSMboxCreat()OS_MBOX_ENOS_MAX_EVENTSOSMboxPent()OS_MBOX_EN无OSMboxPost()OS_MBOX_EN无OSMboxQuery()OS_MBOX_EN无OSMemCreat()OS_MEN_ENOS_MAX_MEM_PARTOSMemGet()OS_MEN_EN无OSMemPut()OS_MEN_EN无OSMemQuery()OS_MEN_EN无OSQAccept()OS_Q_EN无OSQCreat()OS_Q_EN无OSQFlush()OS_Q_ENOS_MAX_EVENTSOS_MAX_QSOSQPend()OS_Q_EN无OSQPost()OS_Q_EN无OSQPostFront()OS_Q_EN无OSQQuery()OS_Q_EN无2023/3/456函数使用该函数需要置1的常量与该函数相关的其他常量OSSemAccept()OS_SEM_EN无OSSemCreat()OS_SEM_ENOS_MAX_EVENTSOSSemPend()OS_SEM_EN无OSSemPost()OS_SEM_EN无OSSemQuery()OS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年苗木种植与环保技术合作合同3篇
- 2024年远程监控设施安装协议3篇
- 仓库叉车租赁合同
- 水产品安全质量协议书
- 国际体育俱乐部租赁合约
- 城市轻轨监理招标文件样本
- 广东省加油站非油品业务拓展
- 工业园区临电施工合同
- 医疗行业专家顾问聘用合同模板
- 2024年配件更换与技术支持合同3篇
- 期末(试题)-2024-2025学年人教PEP版英语六年级上册
- 三创赛获奖-非遗文化创新创业计划书
- 城管局个人工作总结
- MT_T 1186-2020 露天煤矿运输安全技术规范_(高清版)
- 冷库项目专项扶持资金申请报告(模板范本)
- 铂铑合金漏板.
- (完整版)建筑力学(习题答案)
- 少年宫篮球活动教案
- 国有建设企业《大宗材料及设备采购招标管理办法》
- 民间秘术绝招大全
- N掺杂TiO2纳米管的合成及光催化性能研究
评论
0/150
提交评论