欢迎来到天天文库
浏览记录
ID:34631839
大小:2.38 MB
页数:94页
时间:2019-03-08
《rtos_ucos-ii_原理及应用课件4》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式实时操作系统嵌入式实时操作系统μμC/OS-IIC/OS-II西安邮电学院----计算机系Tel:85383409(ZQL)Email:zql@xiyou.edu.cn2012-3-30西安邮电学院计算机系page1第4章任务的同步与通信2012-3-30西安邮电学院计算机系page2第4章任务的同步与通信一个应用系统通常是由多个任务组成,任务之间互相协作共同完成目标功能。例如任务对共享资源竞争,先采集数据才能处理数据等情况。(任务的同步控制,共享资源的竞争,任务间的通信等问题的解决方案---OS)任务间的同步----任务间的制约、合作运行机制。
2、系统各任务之间通过“任务通信”的方式,实现任务的信息传递和同步控制,“任务通信”的载体就是----事件。常用的事件:信号量(计数型---SEM/互斥型---MUTEX)、消息邮箱(MBOX)、消息队列(Q)、事件标志组等。事件用“事件控制块”(ECB)来描述。2012-3-30西安邮电学院计算机系page3第4章目录1、任务间的同步和事件控制块2、信号量及其操作3、互斥型信号量和任务优先级反转4、消息邮箱及其操作5、消息队列及其操作2012-3-30西安邮电学院计算机系page4第4章目录1、任务间的同步和事件控制块2、信号量及其操作3、
3、互斥型信号量和任务优先级反转4、消息邮箱及其操作5、消息队列及其操作2012-3-30西安邮电学院计算机系page54.1任务间的同步和事件控制块任务间的同步---各任务运行的先后、触发等关系Task_ATask_BTask_AWriteTask_BReadDataintoData_BufferData_BufferDatafromData_Buffer备注:数据采集任务A和数据处理任务B之间存在同步关系。2012-3-30西安邮电学院计算机系page64.1任务间的同步和事件控制块任务间的互斥---共享资源的申请使用Task_ATask_BTask
4、_ATask_BwouldprintPrtinterwouldprint备注:数据采集任务A和数据处理任务B之间存在互斥关系。2012-3-30西安邮电学院计算机系page74.1任务间的同步和事件控制块任务之间的这种相互制约、相互合作的运行机制称为“任务间的同步”系统中任务之间相互传递事件,来实现任务的同步、协作。备注:用户自定义全局变量的方法,也可以编程实现程序间的信息传递。但如果想将信息传递的各项功能作完备,工作量是比较大的。况且,这类需求在应用系统设计中是很常用的。uC/OS-II中将此类工作以系统功能方式提供与用户----事件操作。2012-3
5、-30西安邮电学院计算机系page8举例:任务间的共享资源竞争问题及处理方式。某一分布式系统,需要主设备(M_Dev)使用同一个UART资源分别与从设备1(S_Dev1)和从设备2(S_Dev2)以不同的“串行通信模式”进行通信。RxTxRxTxRxTxUARTUARTUARTM_DevS_Dev1S_Dev22012-3-30西安邮电学院计算机系page9voidmain(void)//系统主函数{OSInit();......;OSTaskCreate(Task_A,(void*)pdata,......);说明:如此设计未对共享资源作任OSTaskCr
6、eate(Task_B,(void*)pdata,......);何约束,实际运行中可能发生......;Task_A与Task_B冲突竞争。OSStart();}voidTask_A(void*pdata)voidTask_B(void*pdata){......;//Task_A环境初始化{......;//Task_B环境初始化for(;;)for(;;){{......;//Task_A业务......;//Task_B业务OSTaskCreate(UART_S1_Task,(void*)US1,......);OSTaskCreate(UART_S
7、2_Task,(void*)US2,......);......;//Task_A业务......;//Task_B业务OSTimeDly(xxx);OSTimeDly(yyy);}}}}2012-3-30西安邮电学院计算机系page10BOOLEANuart_key;voidmain(void)//系统主函数(互斥型任务处理){OSInit();......;说明:通过用户定义全局变量uart_key=TRUE;uart_key对任务使用共享资源OSTaskCreate(Task_A,(void*)pdata,......);作约束,可以避免Task_A与
8、Task_B冲突竞争,但其管理性OSTaskCrea
此文档下载收益归作者所有