含代码ucos-ii实验指导书

上传人:自*** 文档编号:79639671 上传时间:2019-02-17 格式:DOC 页数:38 大小:733.50KB
返回 下载 相关 举报
含代码ucos-ii实验指导书_第1页
第1页 / 共38页
含代码ucos-ii实验指导书_第2页
第2页 / 共38页
含代码ucos-ii实验指导书_第3页
第3页 / 共38页
含代码ucos-ii实验指导书_第4页
第4页 / 共38页
含代码ucos-ii实验指导书_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《含代码ucos-ii实验指导书》由会员分享,可在线阅读,更多相关《含代码ucos-ii实验指导书(38页珍藏版)》请在金锄头文库上搜索。

1、C_OS-II实验指导书 C/OS-II实验内容简介1 任务管理实验此实验的目的是让读者理解嵌入式操作系统中任务管理的基本原理,了解任务的各个基本状态及其变迁过程;掌握C/OS-II中任务管理的基本方法(创建、启动、挂起和解挂任务);熟练使用C/OS-II任务管理的基本系统调用。2 优先级反转实验通过此实验读者可以了解在基于抢占式嵌入式实时操作系统并有共享资源的应用中,出现优先级反转现象的原理。优先级反转发生在有多个任务共享资源的情况下,高优先级任务被低优先级任务阻塞,并等待低优先级任务执行的现象。3 优先级继承实验通过此实验读者可以了解嵌入式实时操作系统C/OS-II解决优先级反转的策略优先

2、级继承的原理,以此解决低优先级任务在占用了共享资源的情况下,被高优先级任务抢占了CPU使用权而导致的优先级反转的问题。4 哲学家就餐实验通过经典的哲学家就餐应用,读者可以了解如何利用嵌入式实时操作系统C/OS-II的信号量机制来对共享资源进行互斥访问。5 内存管理实验通过此实验读者可以了解嵌入式实时操作系统C/OS-II中的内存管理的原理,包括对内存的分配和回收。6 时钟中断实验通过此实验读者可以了解嵌入式实时操作系统C/OS-II中,时钟中断的使用情况。7 消息队列实验通过此实验读者可以了解嵌入式实时操作系统C/OS-II中的消息队列机制。读者可以了解一个应用中的任务是如何进行通信的,如何能

3、使它们相互协调工作。实验1 任务的基本管理1 实验目的 理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程; 掌握C/OS-II中任务管理的基本方法(创建、启动、挂起、解挂任务); 熟练使用C/OS-II任务管理的基本系统调用。2 实验原理及程序结构2.1 实验设计为了展现任务的各种基本状态及其变迁过程,本实验设计了Task0、Task1两个任务:任务Task0不断地挂起自己,再被任务Task1解挂,两个任务不断地切换执行。通过本实验,读者可以清晰地了解到任务在各个时刻的状态以及状态变迁的原因。起始任务Task0Task1Task0Task0Task1Task1t0 t1 t2 t3

4、t4 t5 t6 t7 t8 图1-1图1注意:图中的栅格并不代表严格的时间刻度,而仅仅表现各任务启动和执行的相对先后关系。2.1.1 运行流程整个应用的运行流程如图1所示,其描述如下:(1)系统经历一系列的初始化过程后进入boot_card()函数,在其中调用ucBsp_init()进行板级初始化后,调用main()函数;(2)main()函数调用OSInit()函数对C/OS-II内核进行初始化,调用OSTaskCreate创建起始任务TaskStart;(3)main()函数调用函数OSStart()启动C/OS-II内核的运行,开始多任务的调度,执行当前优先级最高的就绪任务TaskSt

5、art;(4)TaskStart完成如下工作:a、安装时钟中断并初始化时钟,创建2个应用任务;b、挂起自己(不再被其它任务唤醒),系统切换到当前优先级最高的就绪任务Task0。之后整个系统的运行流程如下:l t1时刻,Task0开始执行,它运行到t2时刻挂起自己;l t2时刻,系统调度处于就绪状态的优先级最高任务Task1执行,它在t3时刻唤醒Task0,后者由于优先级较高而抢占CPU;l Task0执行到t4时刻又挂起自己,内核调度Task1执行;l Task1运行至t5时刻再度唤醒Task0;l 2.1.2 C/OS-中的任务描述一个任务通常是一个无限的循环 ,由于任务的执行是由操作系统内

6、核调度的,因此任务是绝不会返回的,其返回参数必须定义成void。在C/OS-中,当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就会被抢占,高优先级任务会立刻得到CPU的控制权(在系统允许调度和任务切换的前提下)。C/OS-可以管理多达64个任务,但目前版本的C/OS-有两个任务已经被系统占用了(即空闲任务和统计任务)。必须给每个任务赋以不同的优先级,任务的优先级号就是任务编号(ID),优先级可以从0到OS_LOWEST_PR10-2。优先级号越低,任务的优先级越高。C/OS-总是运行进入就绪态的优先级最高的任务。2.2 操作系统配置操作系统配置的目的在于根据应用

7、的需要,对操作系统的功能和规模进行设置,以便优化对系统存储空间的使用。配置的方法为修改uC_OS-II源代码目录中的OS_CFG.h文件:#define OS_MAX_EVENTS 10 /*最多可以有10个事件*/#define OS_MAX_FLAGS 5 /*最多可以有5个事件标志*/#define OS_MAX_MEM_PART 5 /*最多可以划分5个内存块*/#define OS_MAX_QS 2 /*最多可以使用2个队列*/#define OS_MAX_TASKS 3 /*最多可以创建3个任务*/#define OS_LOWEST_PRIO 14 /*任务优先级不可以大于14*/

8、#define OS_TASK_IDLE_STK_SIZE 1024 /*空闲任务堆栈大小*/#define OS_TASK_STAT_EN 1 /*是否允许使用统计任务*/#define OS_TASK_STAT_STK_SIZE 1024 /*统计任务堆栈大小*/#define OS_FLAG_EN 0 /*是否允许使用事件标志功能*/#define OS_FLAG_WAIT_CLR_EN 1 /*是否允许等待清除事件标志*/#define OS_FLAG_ACCEPT_EN 1 /*是否允许使用OSFlagAccept()*/#define OS_FLAG_DEL_EN 1 /*是否允许

9、使用OSFlagDel()*/#define OS_FLAG_QUERY_EN 1 /*是否允许使用OSFlagQuery()*/#define OS_MBOX_EN 0 /*是否允许使用邮箱功能*/#define OS_MBOX_ACCEPT_EN 1 /*是否允许使用 OSMboxAccept() */#define OS_MBOX_DEL_EN 1 /*是否允许使用 OSMboxDel()*/#define OS_MBOX_POST_EN 1 /*是否允许使用OSMboxPost()*/#define OS_MBOX_POST_OPT_EN 1 /*是否允许使用OSMboxPostOpt

10、() */#define OS_MBOX_QUERY_EN 1 /*是否允许使用OSMboxQuery()*/#define OS_MEM_EN 0 /*是否允许使用内存管理的功能*/#define OS_MEM_QUERY_EN 1 /*是否允许使用OSMemQuery()*/#define OS_MUTEX_EN 0 /*是否允许使用互斥信号量的功能*/#define OS_MUTEX_ACCEPT_EN 1 /*是否允许使用OSMutexAccept()*/#define OS_MUTEX_DEL_EN 1 /*是否允许使用OSMutexDel()*/#define OS_MUTEX_Q

11、UERY_EN 1 /*是否允许使用OSMutexQuery()*/#define OS_Q_EN 0 /*是否允许使用队列功能*/#define OS_Q_ACCEPT_EN 1 /*是否允许使用OSQAccept()*/#define OS_Q_DEL_EN 1 /*是否允许使用OSQDel()*/#define OS_Q_FLUSH_EN 1 /*是否允许使用 OSQFlush()*/#define OS_Q_POST_EN 1 /*是否允许使用 OSQPost()*/#define OS_Q_POST_FRONT_EN 1 /*是否允许使用OSQPostFront()*/#define

12、 OS_Q_POST_OPT_EN 1 /*是否允许使用OSQPostOpt()*/#define OS_Q_QUERY_EN 1 /*是否允许使用OSQQuery()*/#define OS_SEM_EN 0 /*是否允许使用信号量功能*/#define OS_SEM_ACCEPT_EN 1 /*是否允许使用OSSemAccept()*/#define OS_SEM_DEL_EN 1 /*是否允许使用 OSSemDel() */#define OS_SEM_QUERY_EN 1 /*是否允许使用 OSSemQuery()*/#define OS_TASK_CHANGE_PRIO_EN 0 /

13、*是否允许使用 OSTaskChangePrio()*/#define OS_TASK_CREATE_EN 1 /*是否允许使用OSTaskCreate()*/#define OS_TASK_CREATE_EXT_EN 1 /*是否允许使用OSTaskCreateExt()*/#define OS_TASK_DEL_EN 1 /*是否允许使用OSTaskDel()*/#define OS_TASK_SUSPEND_EN 1 /*是否允许使用OSTaskSuspend() and OSTaskResume()*/#define OS_TASK_QUERY_EN 1 /*是否允许使用OSTaskQuery()*/#define

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

当前位置:首页 > 办公文档 > 模板/表格

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号