预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共155页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第九讲嵌入式操作系统概述目录计算机操作系统(OperatingSystem,OS)它在计算机应用程序与计算机硬件系统之间,屏蔽了计算机硬件工作的一些细节,并对系统中的资源进行有效的管理。通过提供函数(应用程序接口(API)),从而使应用程序的设计人员得以在一个友好的平台上进行应用程序的设计和开发,大大地提高了应用程序的开发效率。操作系统嵌入式软件的发展-循环轮询系统嵌入式软件的发展-前后台系统嵌入式软件的发展——多任务操作系统嵌入式操作系统的特点多任务嵌入式操作系统的任务嵌入式RTOSuC/OS-II简介目录任务的基本概念任务的基本概念任务的基本概念任务的状态及其转换用户任务代码的一般结构用户应用程序的一般结构2024/9/30OSTaskCreate()函数使用举例:任务的基本概念任务的基本概念任务堆栈任务堆栈任务堆栈任务控制块及任务控制块链表任务控制块及任务控制块链表任务控制块及任务控制块链表任务控制块及任务控制块链表任务控制块链表uC/OS-II中提供了系统函数OSTaskDel(),用于删除一个任务----实质就是将该任务的TCB从“任务控制块列表”移到了“空任务控制块列表”。任务控制块及任务控制块链表什么是多任务系统程序的切换所谓切换就是:PC目标地址虚拟处理器任务就绪表及任务调度内核对任务的调度非抢占式(不可剥夺式)的任务(Non-PreemptiveKernel)基于优先级的抢占式调度时间片轮转调度抢占式任务调度问题-优先级反转优先级继承(Priorityinheritance)方法解决优先级反转目录uC/OS-II的中断ARM处理器中断控制原理异常向量表ResetLDRPC,ResetAddrLDRPC,UndefinedAddrLDRPC,SWI_AddrLDRPC,PrefetchAddrLDRPC,DataAbortAddrDCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefinedSWI_AddrDCDSoftwareInterruptPrefetchAddrDCDPrefetchAbortDataAbortAddrDCDDataAbortNouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_HandlerFIQ中断的响应:uC/OS-II的中断uC/OS-II的中断uC/OS-II的中断uC/OS-II的中断uC/OS-II的中断uC/OS-II的中断uC/OS-II的中断uC/OS-II的中断uC/OS-II的中断uC/OS-II的时钟uC/OS-II的时钟uC/OS-II的时间管理----(任务延时、取消延时、获取/设置系统时间等操作)取消任务的延时获取/设置系统时间目录什么是任务的同步和通信任务间的同步任务间的互斥---共享资源的申请使用任务间的同步和事件控制块举例:任务间的共享资源竞争问题及处理方式。voidmain(void)//系统主函数{OSInit();......;OSTaskCreate(Task_A,(void*)pdata,......);OSTaskCreate(Task_B,(void*)pdata,......);......;OSStart();}BOOLEANuart_key;voidmain(void)//系统主函数{OSInit();......;uart_key=TRUE;OSTaskCreate(Task_A,(void*)pdata,......);OSTaskCreate(Task_B,(void*)pdata,......);......;OSStart();}void*msg_ptr;INT16UAD_Value;voidmain(void)//系统主函数{OSInit();......;OSTaskCreate(Task_A,(void*)pdata,......);OSTaskCreate(Task_B,(void*)pdata,......);......;OSStart();}任务间的同步和事件控制块任务间的同步和事件控制块BOOLEANuart_key;//互斥标志voidmain(void)//系统主函数{OSInit();......;uart_key=TRUE;OSTaskCreate(Task_A,(void*)pdata,......);OSTaskCreate(Task_B,(void*)pdata,......);......;OSStart();}任