UCOSII操作系统实验教程
- 格式:pdf
- 大小:513.23 KB
- 文档页数:57
实验2任务就绪表
1实验目的
掌握任务就绪表及任务就绪组的结构及二者之间的关系,系统需要一个就绪登记表,它登记系统中所有处于就绪状态的任务,这个就绪表就是一个位图,系统中的每个任务都在这个位图中占据一个二进制位,该位的状态(1或0)就表示任务是否处于就绪状态。
为了便于对就绪表的查找,系统又定义了一个数据类型为INT8U的变量OSRdyGrp,并使该变量的每一位都对应于OSRdyTbl[]的一个任务组,如果任务组中有就绪任务,则在变量OSRdyGrp里把该任务组所对应的位置1。
理解基于优先级调度的嵌入式实时操作系统的实现策略。
2实验内容
变量定义如下:
INT8U OSRdyGrp=0;
INT8U OSRdyTbl[8]={0};
INT8U OSMapTbl[8]={1,2,4,8,16,32,64,128};
INT8U OSUnMapTbl[256]={0};
INT8U x,y,OSPrioHighRdy,prio;
(1)编程对OSUnMapTbl数组进行初始化;
(2)输入多个任务的优先级prio,修改OSRdyGrp、OSRdyTbl的值并输出;
(3)根据OSRdyGrp、OSRdyTbl的值,求最高优先级任务的优先级OSPrioHighRdy并输出;
3实验代码(要求有注释)
4实验结果(截图)
5心得体会(不少于200字)
1。
实验 3 任务的创建、挂起与恢复课程名称:嵌入式操作系统 B1、实验目的理解任务管理的基本原理,了解任务的各个基本状态及其转换过程;掌握µC/OS-II 中任务管理的基本方法(创建、启动、挂起、恢复任务);熟练使用µC/OS-II 任务管理的基本系统调用。
理解任务的创建、挂起与恢复的原理及功能,掌握任务创建、挂起与恢复的实现过程。
2、实验内容(1)设计 Task0、Task1 两个任务:任务 Task0 不断地挂起自己,再被任务 Task1 解挂,两个任务不断地切换执行,并输出两个任务在各个时刻的状态。
Task0 的主要功能是显示 Task1 的状态,Task1 的主要功能是显示 Task0 的状态。
整个应用的运行流程如图 1 所示,其描述如下:在 main 函数创建起始任务 TaskStart,其优先级为 0。
TaskStart 任务主要完成创建 2 个应用任务 Task0、Task1,并挂起自己(不再被其它任务唤醒)。
之后整个系统的运行流程如下:t1 时刻,Task0 开始执行,它运行到 t2 时刻挂起自己;t2 时刻,系统调度处于就绪状态的优先级最高任务 Task1 执行,它在 t3 时刻唤醒 Task0,后者由于优先级较高而抢占 CPU;Task0 执行到 t4 时刻又挂起自己,内核调度 Task1执行;Task1 运行至 t5 时刻再度唤醒 Task0;注意:图中的栅格并不代表严格的时间刻度,而仅仅表现各任务启动和执行的相对先后关系。
(2)设计 MyTask、YouTask、KeyTask 三个任务:MyTask 任务输出 M;YouTask 任务输出 Y,并输出 MyTask 任务的状态;KeyTask 任务从键盘接收字符 Y 或 N,当接收 Y 时挂起 MyTask 任务,当接收 N 时恢复 MyTask 任务。
(3)设计 KeyTask 任务,当从键盘输入+号时动态创建任务,最多可以创建 10 个任务,这 10个任务都执行一个函数 MyTask,要求优先级是(PRIO_BASE+0,1,2,3,4,5,6,7,8,9),还要向不同的任务传递不同的参数(0,1,2,3,4,5,6,7,8,9)给 MyTask 函数,优先级为(PRIO_BASE+0,1,2,3,4,5,6,7,8,9)的任务分别输出数字(0,1,2,3,4,5,6,7,8,9)。
实验10_SOPC_UCOSII操作系统OK引言:在嵌入式系统中,操作系统是一种软件模块,它的目标是有效地管理系统的资源,并为应用程序提供一个良好的运行环境。
本实验将介绍SOPC_UCOSII操作系统,通过实践来学习如何在其上运行应用程序。
本实验分为以下几个部分:1.SOPC_UCOSII操作系统的介绍2.实验环境搭建3.实验步骤详解4.实验总结与展望一、SOPC_UCOSII操作系统的介绍SOPC(System on Programmable Chip,可编程芯片系统)是一种集成电路系统设计方法,它是将处理器、外设、总线和存储空间等硬件资源集成在一颗可编程逻辑器件(如FPGA)中的理念。
SOPC_UCOSII操作系统是基于SOPC架构设计的一种实时嵌入式操作系统。
UCOSII(MicroC/OS-II,Micro Controller Operating System-II)是美国Micrium公司开发的一款商业操作系统,经过多年的发展与优化,已经成为嵌入式系统领域最受欢迎的操作系统之一二、实验环境搭建1. 使用Altera的Quartus II软件进行FPGA设计和编译。
2.使用FPGA硬件平台开发板进行实验,如DE1-SoC开发板。
3. 使用Altera提供的示例设计进行实验。
三、实验步骤详解2. 使用Quartus II软件创建一个新的工程,选择目标FPGA芯片型号,并进行必要的设置。
3.导入SOPC_UCOSII的示例设计,该设计包含了处理器、外设、总线和存储空间等硬件资源的配置。
4. 编译工程,生成SOPC_UCOSII的.bit文件。
6. 使用终端仿真软件(如SecureCRT),通过串口连接到FPGA开发板。
7.启动FPGA开发板,并观察SOPC_UCOSII的运行情况。
8.在SOPC_UCOSII上运行应用程序,观察其输出结果和运行状态。
四、实验总结与展望通过本实验,我们学习了SOPC_UCOSII操作系统的搭建和运行方式,并在其上成功运行了应用程序。
UCOSII实验1-任务调度 ·UCOSII 是⼀个可以基于 ROM 运⾏的、可裁减的、抢占式、实时多任务内核,具有⾼度可移植性,特别适合于微处理器和控制器。
·为了提供最好的移植性能, UCOSII 最⼤程度上使⽤ ANSI C 语⾔进⾏开发,并且已经移植到近 40 多种处理器体系上,涵盖了从 8 位到 64 位各种 CPU(包括 DSP)。
·UCOSII 具有执⾏效率⾼、占⽤空间⼩、实时性能优良和可扩展性强等特点,最⼩内核可编译⾄ 2KB 。
UCOSII 已经移植到了⼏乎所有知名的 CPU 上。
UCOSII体系结构图:UCOSII 的移植,我们只需要修改: os_cpu.h、 os_cpu_a.asm 和 os_cpu.c等三个⽂件即可: ① os_cpu.h,进⾏数据类型的定义,以及处理器相关代码和⼏个函数原型; ② os_cpu_a.asm,是移植过程中需要汇编完成的⼀些函数,主要就是任务切换函数; ③ os_cpu.c,定义⼀些⽤户 HOOK 函数。
图中定时器的作⽤是为 UCOSII 提供系统时钟节拍,实现任务切换和任务延时等功能。
这个时钟节拍由 OS_TICKS_PER_SEC(在os_cfg.h 中定义)设置,⼀般我们设置 UCOSII 的系统时钟节拍为 1ms~100ms,具体根据你所⽤处理器和使⽤需要来设置。
对于STM32的单⽚机⼀般⽤其 SYSTICK 定时器来为 UCOSII 提供时钟节拍。
UCOSII的任务优先级 · UCOSII 保留了最⾼ 4 个优先级和最低 4 个优先级的总共 8 个任务,⽤于拓展使⽤; · UCOSII ⼀般只占⽤了最低 2 个优先级,分别⽤于空闲任务(倒数第⼀)和统计任务(倒数第⼆),所以剩下给我们使⽤的任务最多可达 255-2=253 个(V2.91)。
任务 · 所谓的任务,其实就是⼀个死循环函数,该函数实现⼀定的功能,⼀个⼯程可以有很多这样的任务(最多 255 个), UCOSII 对这些任务进⾏调度管理,让这些任务可以并发⼯作(注意不是同时⼯作!!,并发只是各任务轮流占⽤ CPU,⽽不是同时占⽤,任何时候还是只有 1 个任务能够占⽤ CPU),这就是 UCOSII 最基本的功能。