UCOSII操作系统实验教程

合集下载

4、基于uCOS-II操作系统的移植实验

4、基于uCOS-II操作系统的移植实验

实验目的
内核的主要结构。 2.掌握将uC/OS-II 内核移植到ARM7 处 理器上的基本方法。
1.了解uC/OS-II
实验工具
实验平台 ADS1.2 超级终端
实验原理
所谓移植,指的是一个操作系统可以在某
个微处理器或者微控制器上运行。 设计的语言 C:主要开发工具 汇编:读写处理器、寄存器时只能通过汇 编语言来实现

C语言函数


后5个函数为接口函数,可以不加代码
uC/OS-II的启动
void main (void) { OSInit(); // 初始化uC/OS-II
. 通过调用OSTaskCreate()或 OSTaskCreateExt()创建至少一个任务; . OSStart(); //开始多任务调度,永不返回
所涉及到的函数

汇编函数

OSStartHighRdy() OSCtxSw() OSIntCtxSw() OSTickISR()
void void void void void void void *OSTaskStkInit (void (*task)(void *pd),void *pdata, *ptos, INT16U opt) OSTaskCreateHook (OS_TCB *ptcb) OSTaskDelHook (OS_TCB *ptcb) OSTaskSwHook (void) OSTaskStatHook (void) OSTimeTickHook (void)
}
基于uC/OS的应用开发
void YourTask (void *pdata)
{ /* 用户代码 */
OSTaskDel(OS_PRIO_SELF); }

uC_OS-II实验指导书2015 - 8

uC_OS-II实验指导书2015 - 8
default: printf("时间:%d,任务TTaskMessageSen发消息失败,错误号:%d\n",OSTimeGet(),err);
} OSQQuery(myQ,&myQData); printf("时间:%d,当前队列中消息数量:%d\n",OSTimeGet(),myQData.OSNMsgs); } }
实验 8 µC/OS-II 任务间通信设计
1 实验目的
掌握嵌入式实时操作系统µC/OS-II 中信号量、消息邮箱、消息队列机制的基本原理和使用方法。
2 实验内容
数据类型定义如下: typedef unsigned char BOOLEAN; typedef unsigned charpedef unsigned short INT16U; typedef signed short INT16S; typedef unsigned long INT32U; typedef signed long INT32S; typedef unsigned short OS_STK; 任务控制块的结构定义如下: typedef struct os_tcb {
if (myMBox==(OS_EVENT *)0) /*检查邮箱是否存在*/ {
2
printf("时间:%d,任务TaskMessageRec判定邮箱不存在!\n",OSTimeGet()); OSTaskDel(OS_PRIO_SELF); /*不成功则删除本任务*/ return; }
while(1) {
prcount=(INT32U * )OSMboxPend(myMBox,0,perr); /*请求消息,如果消息不存在就阻塞*/ if (*perr==OS_ERR_NONE) printf("时间:%d,任务TaskMessageRec接收消息为%d\n",OSTimeGet(),*prcount); else printf("时间:%d,任务TaskMessageRec等待异常结束,错误号:%d\n",*perr);

uC_OS-II实验指导书2015 - 2

uC_OS-II实验指导书2015 - 2

实验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。

uC_OS-II实验指导书

uC_OS-II实验指导书
3.1 µC/OS-II 概述............................................................................................................................. 5 3.2 µC/OS-II 的特点......................................................................................................................... 6 3.3 µC/OS-II 主要源代码文件介绍.................................................................................................7 4 LambdaTOOL 集成开发环境简介....................................................................................................... 7 5 µC/OS-II 实验内容简介........................................................................................................................ 8 5.1 任务管理实验............................................................................................................................ 8 5.2 优先级反转实验........................................................................................................................ 8 5.3 优先级继承实验........................................................................................................................ 9 5.4 哲学家就餐实验........................................................................................................................ 9 5.5 内存管理实验............................................................................................................................ 9 5.6 时钟中断实验............................................................................................................................ 9 5.7 消息队列实验............................................................................................................................ 9 6 预备实验:嵌入式开发环境的建立................................................................................................... 9 6.1 目的............................................................................................................................................ 9 6.2 实验步骤及说明...................................................................................................................... 10

UCOS实验(第二版)

UCOS实验(第二版)
第二章 µC/GUI的移植.................................................................................................................35
2.1 实现方法与步骤..................................................................................................................36
1.1 安装µC/OS-II
本书附带一张光盘包括了所有我们讨论的源代码。读者应当具备 80x86,Pentium,或 者 Pentium-II 处理器的 PC 机,并且运行 DOS 或 Windows95 操作系统。至少需要 5Mb 硬盘 空间来安装µC/OS-II。请按照以下步骤安装:
插入附带光盘,打开µC/OS-II 安装文件,将其中文件复制到目标目录下。 注意:为了在µC/OS 使用中不会更改过多内容,建议使用 C:\,D:\,或 E:\作 为目标目录。 在安装之前请一定阅读一下 READ ME 文件。完成时,用户的目标目录下应该有以下子 目录:
----- 1 ---
嵌入式系统教学平台实验教材
运行 TO.EXE,必须将 TO.TBL 复制到根目录下。
\SOFTWARE\uCOS-II
与µC/OS-II 相关的文件都放在这个目录下。
\SOFTWARE\uCOS-II\EX1_x86L
这个目录里包括例 1 的源代码,可以在 DOS(或 Windows 95 下的 DOS 窗口)下运行。
第三部分 实验部分.......................................................................................................................41

ucos-ii嵌入式操作系统_实验3 任务的创建

ucos-ii嵌入式操作系统_实验3  任务的创建

实验 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

实验要完成如下任务:
(1)在EDS中创建或更新应用工程,创建一个看门狗应用,启动看门狗后, 有“喂狗”操作,持续翻转LED状态,无喂狗操作,系统复位;
(2)在EDS中新建uC/OS-II模板应用工程,在其模板的基础上,建立一个 4任务线程并下载验证。
1.1 系统框架
Altera FPGA
JTAG 接口 时钟 振荡器
注释.除软件代码 外,后续4任务操 作系统,实验步 骤同上,后续步 骤略。注意阅读 注释,加深对操 作系统理解。
操作系统 总头文件 全局变量
任务堆栈, 存储变量 数据。
任务优先级, 数值越小,优 先级越高
任务内必须 为无限循环
操作系统延时函数, 延时1秒,此1秒内, 执行其他任务。
按下低位键,改变 LED值,再按此键 无效。
位后能否继续运行本设计。 JTAG链选择也报错。解决方法是停止JTAG
ห้องสมุดไป่ตู้
UART,然后执行相关操作。
4.使用NIOS II Software Build Tools For Eclipse 开发µC/OS-II操作系统并调试。
(1)在EDS中,新建µC/OS-II 工程。
1.在原EDS工程文件导 航窗口中,选中工程 库文件,右键, 【Close Project】, 关闭原软件工程。关 闭效果如图所示。
uC/OS-II是NIOS II支持的一个完整的、可移植的、固化和裁 剪的先占式实时多任务内核(Kernel),NIOS II对其完整支持。
uC/OS-II可提供如下服务:
1、任务管理 2、事件标志 3、消息传递
4、内存管理 5、信号量 6、时间管理
在应用程序中,用户可以方便的使用这些系统后调用来实现 目标功能。

实验10_SOPC_UCOSII操作系统OK

实验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实验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 最基本的功能。

uCOS-II操作系统简介及实验

进入临界段: 进入临界段:OS_ENTER_CRITICAL() 退出临界段:OS_EXIT_CRITICAL()。 退出临界段: 。

这两个宏的定义取决于所用的微处理器, 这两个宏的定义取决于所用的微处理器,每种微 处理器都有自己的OS_CPU.H文件。 文件。 处理器都有自己的 文件
uC/OS-II操作系统 uC/OS-II操作系统
uC/OS-II操作系统 uC/OS-II操作系统
1.2 uC/OS-II特点 特点
• 1、uC/OS-II内核具有很强的可移植性。 内核具有很强的可移植性。 、 内核具有很强的可移植性 • 2、具有可抢占的实时多任务调度功能。 、具有可抢占的实时多任务调度功能。 • 3、提供了许多系统服务,如信号量、消 、提供了许多系统服务,如信号量、 •
任务状态
• • • • • •
休眠态 - OSTaskCreate()或OSTaskCreateExt() 或 就绪态 等待态,就绪态 就绪态,运行态 等待态 就绪态 运行态 - OSTaskDel() - 休眠态 就绪态 - OSStart() - 运行态 运行态 - OSTimeDly()或OSTimeDlyHMSM() , 或 OSSemPend(),OSMboxPend(),或OSQPend() , , 等待态 等待态 - OSTimeTick() -就绪态 就绪态 空闲任务 - OSTaskIdle()
uC/OS-II操作系统 uC/OS-II操作系统
任务调度
• μC/OS-Ⅱ总是运行进入就绪态任务中优 μC/OS先级最高的那一个。 先级最高的那一个。确定哪个任务优先 级最高, 级最高,下面该哪个任务运行了的工作 是由调度器(Scheduler)完成的。 是由调度器(Scheduler)完成的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

下次实验的准备工作
• 阅读《嵌入式实时操作系统μC/OS原理与 实践》P95-97任务延时函数OSTimeDly
实验5
• • •
让任务阻塞式延时
掌握操作系统的初始化过程 步骤 1.不改动代码,输入参数1,全速运行,打开WINDOWS任务管理器,查看, 如图
注意
• • • • • • Os_cpu.c中,确定 void OSTaskIdleHook (void) { Sleep(1); } 要改成这样,否则空闲任务也在不同的运 行,看不到系统利用率的变化情况。加上 这一句,将空闲任务的系统利用率降低
• 5.实现P190,习题7(在usercode.c中编写 三个函数,并修改usercode.h中的声明, 修改main.c,重新编译查看效果)
补充,各个例子的运行结果展示 6
下次实验的准备工作
• 阅读《嵌入式实时操作系统μC/OS原理与 实践》P191-210 5.1消息邮箱
实验13 消息邮箱管理实验 • 1.例子程序说明见《嵌入式实时操作系统 μC/OS原理与实践》 P208,运行结果见 P210图5.7 • 2. 程序运行后,输入7选择例子程序7 • 3.重新编译运行,查看结果 • 4.说明使用消息邮箱实现的功能,为什么 能实现这样的功能,都使用了哪些数据结 构。
补充,各个例子的运行结果展示 1
准备工作
• 阅读《嵌入式实时操作系统μC/OS原理与 实践》P24-40 2.1任务管理的重要数据结 构,为以后的实验做准备
实验2
调试模式跑第一个任务
• 本实验的目的在于学会使用VC的调试模式 运行和调试操作系统。 • 步骤 • 1.在上次实验的基础上不改动代码,打开工 程 • 2.在usercode.c中的 • printf(“welcome to embeded system\n”);处 设置断点。
• 5.实现P230,习题7(在usercode.c中编写 三个函数,并修改usercode.h中的声明, 修改main.c,重新编译查看效果)
补充,各个例子的运行结果展示 7
下次实验的准备工作
• 阅读《嵌入式实时操作系统μC/OS原理与 实践》P2111-229 5.2消息队列
实验14 消息队列管理实验 • 1.例子程序说明见《嵌入式实时操作系统 μC/OS原理与实践》 P226,运行结果见 P229图5.12 • 2. 程序运行后,输入8选择例子程序8 • 3.重新编译运行,查看结果 • 4.说明使用消息队列实现的功能,为什么 能实现这样的功能,都使用了哪些数据结 构。
嵌入式实时操作系统 μC/OSII实验教程
实验安排
• • • • • • • • • • • • • • • 实验1 实验2 实验3 实验4 实验5 实验6 实验7 实验8 实验9 实验10 实验11 实验12 实验13 实验14 实验15 跑第一个任务 调试模式跑第一个任务 任务的创建 操作系统初始化 让任务阻塞式延时 两个任务交替运行 理解任务堆栈和任务切换 理解多任务的启动 任务的挂起和恢复 信号量管理实验 互斥信号量管理实验 事件标志组管理实验 消息邮箱管理实验 消息队列管理实验 内存管理实验
• 10.在观察窗口watch window输入j, 连续按 F5查看j的变化和屏幕的输出。 • 11.按SHIFT+F5或使用菜单结束调试,记录 • 12说明watch window的作用,尝试在watch window中输入操作系统的重要全局变量, P247表7.1,观察他们的值
下次实验的准备工作
• 2.修改代码,使用阻塞式延时,查看书上95 页3.2.3,修改延时代码
• 3.重新编译,运行。使用任务管理器查看系 统利用率。
• 4.记录实验过程,说明发生这种变化的原理。
• 下次实验前准备:继续看2.1,加深对操作 系统采用的重要数据结构的理解
实验6
两个任务交替运行
• 1.编译运行代码,输入选项2运行程序 • 2.运行查看结果
Hale Waihona Puke • 3.查看代码,说明为什么得到这样的运行 结果 • 4.修改usercode.c中E2_task2函数,要求 其输出值增长速度只有E2_task1的1/2,修 改后重新编译运行 • 5.改变任务的优先级,让E2_task1的优先 级为6, E2_task2的优先级为5,查看运行 结果,说明输出的不同之处,说明原因
补充,各个例子的运行结果展示 2
下次实验的准备
• 预习《嵌入式实时操作系统μC/OS原理与 实践》P73-80任务的调度为下次试验做准 备
实验7
理解任务堆栈和任务切换
• 1.使用原始代码 • 2.查看在main.c,说明两个用户任务的堆 栈都是什么,堆栈的地址是怎么传递给任 务创建函数的。 • 3.在OS_Sched函数中设置断点。跟踪调 试,说明OS_Sched实现了哪些功能,画 出流程图 • 4.继续调试OS_TASK_SW,根据书章2.1 中对堆栈的描述,论述压栈和退栈的处理 过程。
• 1.例子程序说明见《嵌入式实时操作系统 μC/OS原理与实践》 P154,运行结果见 P159图4.14 • 2. 程序运行后,输入5选择例子程序5 • 3.重新编译运行,查看结果 • 4.说明使用互斥信号量实现的功能,为什 么能实现这样的功能,都使用了哪些数据 结构。 • 5.说明为什么解决了优先级反转的问题
• 5.实现P230,习题8(在usercode.c中编写 三个函数,并修改usercode.h中的声明, 修改main.c,重新编译查看效果)
补充,各个例子的运行结果展示 8
下次实验的准备工作
• 阅读《嵌入式实时操作系统μC/OS原理与 实践》P231-244 内存管理
实验15 内存管理实验
• 6.VC环境下,在工程上点鼠标右键,查看工程的 设计 • 7.打开main.c,编辑使#define Experiment 1,使用 REBUILD ALL 进行编译,找到可执行文件的输出 目录,记录下来 • 8.使用菜单或快捷按钮再次执行编译好的程序。查 看运行结果并记录,查看main.c及usercode.c,分 析main.c及usercode.c代码。 • 9.说明任务堆栈的定义位置,任务在什么时候被创 建,任务在什么时候获得运行。 • 10.自己修改代码,减少延时时间,或将每次加1 改为其他算法,查看效果!
• 1.例子程序说明见《嵌入式实时操作系统 μC/OS原理与实践》 P241,运行结果见 P244图6.3 • 2. 程序运行后,输入9选择例子程序9 • 4.说明使用消息队列实现的功能,为什么 能实现这样的功能,都使用了哪些数据结 构。
说明
• 各章例子都是通过将μC/OS移植到PC 中,在虚拟的平台下运行μC/OS来得到印 证。所有代码都包含在VC的一个工程中, 打开工程文件就可以看到结构清晰的源代 码。
实验1 跑第一个任务
• 本实验的目的是了解嵌入式实时操作系统μCOS 代码结构,将其跑起来得到直观的认识。 • 实验步骤 • 1.将包含全部实验代码的压缩文件解压缩 • 2.将VC6开发环境打开 • 3.打开ucosexperiment目录下的ucos_vc.dsw • 4.用全部编译(rebuild all)编译程序,运行程 序,根据窗口提示输出,获得感性认识! • 5.根据教材P246页图7.1及7.1.1和7.1.2的内容, 写出文件目录结构的说明,说明嵌入式实时操作 系统μCOS都由哪些部分组成
3.如果程序中有其他断点,去掉 4.在usercode.c中的 printf(“welcome to embeded system\n”);处设置断点。(设 置断点,在代码处按右键,insert breakpoint) 5.按F5以调试模式运行代码 6.如果有其他断点,去掉,再按F5 7.当到设定的断点处停下时,将VC窗口缩小,调整输出的窗 口使两个窗口同时显示在屏幕上 8.按F10单步执行,查看输出 9. 发现在延时代码循环中无法调试,在printf(“j=%d\n”,j++); 加断点,按F5
下次实验的准备
• 预习《嵌入式实时操作系统μC/OS原理与 实践》P83-84多任务的启动为下次试验做 准备
实验8
理解多任务的启动
• 1.使用原始代码 • 2.查看在main.c,在OSStart();处设置断点。 • 3.调试模式运行,跟踪进OSStart,然后单 步运行。参考P83-85分析代码。 • 5.画出OSStart流程图 • 4.说明OSStart的功能,说明多任务启动的 标志是什么
下次实验的准备工作
• 阅读《嵌入式实时操作系统μC/OS原理与 实践》P67-72任务的挂起和恢复
实验9
任务的挂起和恢复
• 1.编译运行代码,输入选项3继续运行程序 • 2.运行查看结果
• 3.查看代码,说明为什么得到这样的运行 结果 • 4.对任务代码进行修改,得到不同的结果 • 5.改变任务的优先级,查看运行结果,说 明输出的不同之处,说明原因
补充,各个例子的运行结果展示 3
下次实验的准备工作
• 阅读《嵌入式实时操作系统μC/OS原理与 实践》P102-129 • 事件管理的重要数据结构,事件管理程 序,信号量管理
实验10 信号量管理实验
• 1.例子程序说明见《嵌入式实时操作系统 μC/OS原理与实践》 P129,运行结果见 P133图4.9 • 打开原始工程运行代码,输入选项4继续 运行程序 • 2.运行查看结果 • 3.说明使用信号量实现的功能,为什么能 实现这样的功能,都使用了哪些数据结构。
• 5.自己设计一个使用时间标志组的例子, 编程实现并运行,记录结果。
补充,各个例子的运行结果展示 5
下次实验的准备工作
• 阅读《嵌入式实时操作系统μC/OS原理与 实践》P159-189 4.5事件标志组
实验12 事件标志组管理实验 • 1.例子程序说明见《嵌入式实时操作系统 μC/OS原理与实践》 P184,运行结果见 P159图4.20 • 2. 程序运行后,输入6选择例子程序6 • 3.重新编译运行,查看结果 • 4.说明使用事件标志组实现的功能,为什 么能实现这样的功能,都使用了哪些数据 结构。
相关文档
最新文档