当前位置:
文档之家› UCOSII操作系统实验教程
UCOSII操作系统实验教程
下次实验的准备工作
• 阅读《嵌入式实时操作系统μ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.说明使用事件标志组实现的功能,为什 么能实现这样的功能,都使用了哪些数据 结构。