含代码uCOS-II实验指导书.doc

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
μC_OS-II实验指导书 μC/OS-II实验内容简介 1 任务管理实验 此实验的目的是让读者理解嵌入式操作系统中任务管理的基本原理,了解任务的各个基本状态及其变迁过程;掌握μC/OS-II中任务管理的基本方法(创建、启动、挂起解挂);熟练使用μC/OS-II任务管理的基本系统调用。 2 优先级反转实验 通过此实验读者可以了解在基于抢占式嵌入式实时操作系统并有共享资源的应用中,出现优先级反转现象的原理。优先级反转发生在有多个任务共享资源的情况下,高优先级任务被低优先级任务阻塞,并等待低优先级任务执行的现象。 3 优先级实验 通过此实验读者可以了解嵌入式实时操作系统μC/OS-II解决优先级反转的策略——优先级的原理,以此解决低优先级任务在占用了资源的情况下,被高优先级任务抢占了CPU使用权而导致的优先级反转的问题。 4 哲学家就餐实验 通过经典的哲学家就餐应用,可以了解如何利用嵌入式实时操作系统μC/OS-II信号量来对资源进行互斥访问。 5 内存管理实验 通过此实验读者可以了解嵌入式实时操作系统μC/OS-II中的内存管理的原理包括对内存的分配和回收。 6 时钟中断实验 通过此实验读者可以了解嵌入式实时操作系统μC/OS-II中,时钟中断的使用情况。 7 消息队列实验 通过此实验读者可以了解嵌入式实时操作系统μC/OS-II中的消息队列。可以了解中的任务是如何进行通信的,如何相互协调工作。 实验1 任务的基本管理 1 实验目的 理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程; 掌握μC/OS-II中任务管理的基本方法(创建、启动、挂起、解挂); 熟练使用μC/OS-II任务管理的基本系统调用。 2 实验原理及程序结构 2.1 实验设计 为了现任务的各基本状态及其变迁过程,本实验设计了Task0、Task1两个任务任务Task0挂起自己,再任务Task1解挂。通过本实验,可以清晰地了解到任务在各个时刻的状态以及状态变迁的原因。 图1 注意:图中的栅格并不代表严格的时间刻度,而仅仅表现各任务启动和执行的相对先后关系。 2.1.1 运行流程 整个的运行流程如图1,描述如下: (1)boot_card()函数,在其中调用ucBsp_init()进行板级初始化后,调用main()函数; (2)调用OSInit()μC/OS-II内核进行初始化,调用OSTaskCreate创建起始任务TaskStart(3)调用函数OSStart()启动μC/OS-II执行当前优先级最高的就绪任务TaskStart (4)TaskStarta、安装时钟中断并创建应用任务; b、挂起自己(不再被其它任务唤醒),系统切换Task0。 之后整个系统的运行流程如下: 时刻,Task0开始执行,起自己; 时刻,系统调度处于就绪状态的任务Task1执行,时刻唤醒T0,后者由于优先级较高而抢占CPU; Task0执行挂起自己Task1执行Task1运行至t5时刻再度唤醒Task0;…… 2.1.2 μC/OS-Ⅱ中的任务描述 一个任务通常是一个无限的循环 ,由于任务的执行是由操作系统内核调度的,因此任务是绝不会返回的,其返回参数必须定义成void。μC/OS-Ⅱ中,当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就会被占,高优先级任务会立刻得到CPU的控制权(在系统允许调度和任务切换的前提下)。μC/OS-Ⅱ可以管理多达64个任务,但目前版本的μC/OS-Ⅱ有两个任务已经被系统占用了(即空闲任务和统计任务)。必须给每个任务赋以不同的优先级,任务的优先级号就是任务编号(ID),优先级可以从0到OS_LOWEST_PR10-2。优先级号越低,任务的优先级越高。μC/OS-Ⅱ总是运行进入就绪态的优先级最高的任务。 2.2 操作系统配置修改uC_OS-IIOS_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 /*最多可以使用个队列*/ #define OS_MAX_TASKS 3 /*最多可以创建3个任务*/ #define OS_LOWEST_PRIO 14 /*任务优先级不可以大于14*/ #define OS_TASK_IDLE_STK_SIZE 1024 /*空闲

文档评论(0)

shaoye348 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档