《嵌入式实时操作系统μCOS原理与实践实验教程.ppt》由会员分享,可在线阅读,更多相关《嵌入式实时操作系统μCOS原理与实践实验教程.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、图书购买地址图书购买地址http:/嵌入式实时操作系统嵌入式实时操作系统CC/OS/OS原理与实践原理与实践实验教程实验教程在网上观看视频在网上观看视频http:/ 的嵌入式系统设计的嵌入式系统设计,希望能对大家有用。这个平台的代码我都在博客和爱板http:/http:/ 电子工业出版社实验前需学习对应部分实验中对得到的结论需进行分析并交报告,做到知其然而知其所以然对VC开发环境部熟悉的同学在实验中逐步掌握所有资料请在博客下载实验列表第第1 1学时学时跑第一个任务跑第一个任务第第2 2学时学时调试模式跑第一个任务调试模式跑第一个任务第第3 3学时学时任务的创建任务的创建第第4 4学时学时操作系
2、统初始化操作系统初始化第第5 5学时学时让任务阻塞式延时让任务阻塞式延时第第6 6学时学时两个任务交替运行两个任务交替运行第第7 7学时学时理解任务堆栈和任务切换理解任务堆栈和任务切换第第8 8学时学时理解多任务的启动理解多任务的启动第第9 9学时学时任务的挂起和恢复任务的挂起和恢复第第1010学时学时 信号量管理实验信号量管理实验第第1111学时学时 互斥信号量管理实验互斥信号量管理实验第第1212学时学时 事件标志组管理实验事件标志组管理实验第第1313学时学时消息邮箱管理实验消息邮箱管理实验第第1414学时学时 消息队列管理实验消息队列管理实验第第1515学时学时 内存管理实验内存管理实
3、验第第1学时学时跑第一个任务跑第一个任务本实验的目的是了解嵌入式实时操作系统COSCOS代码结构,将其跑起来得到直观的认识。实验步骤实验步骤1.将包含全部实验代码的压缩文件解压缩2.将VC6开发环境打开3.打开ucosexperiment目录下的ucos_vc.dsw 4.用全部编译(rebuild all)编译程序,运行程序,根据窗口提示输出,获得感性认识!5.根据教材P246页图7.1及7.1.1和7.1.2的内容,写出文件目录结构的说明,说明嵌入式实时操作系统COSCOS都由哪些部分组成第第1学时学时跑第一个任务跑第一个任务6.VC环境下,在工程上点鼠标右键,查看工程的设计7.打开mai
4、n.c,编辑使#define Experiment 1,使用REBUILD ALL 进行编译,找到可执行文件的输出目录,记录下来8.使用菜单或快捷按钮再次执行编译好的程序。查看运行结果并记录,查看main.c及usercode.c,分析main.c及usercode.c代码。9.说明任务堆栈的定义位置,任务在什么时候被创建,任务在什么时候获得运行。10.自己修改代码,减少延时时间,或将每次加1改为其他算法,查看效果!补充,各个例子的运行结果展示1准备工作阅读嵌入式实时操作系统C/OS原理与实践P24-40 2.1任务管理的重要数据结构,为以后的实验做准备第第2学时学时 调试模式跑第一个任务调试
5、模式跑第一个任务本实验的目的在于学会使用VC的调试模式运行和调试操作系统。步骤1.在上次实验的基础上不改动代码,打开工程2.在usercode.c中的printf(“welcome to embeded systemn”);处设置断点。第第2学时学时 调试模式跑第一个任务调试模式跑第一个任务3.如果程序中有其他断点,去掉4.在usercode.c中的printf(“welcome to embeded systemn”);处设置断点。(设置断点,在代码处按右键,insert breakpoint)5.按F5以调试模式运行代码6.如果有其他断点,去掉,再按F57.当到设定的断点处停下时,将VC窗
6、口缩小,调整输出的窗口使两个窗口同时显示在屏幕上8.按F10单步执行,查看输出9.发现在延时代码循环中无法调试,在printf(“j=%dn”,j+);加断点,按F5第第2学时学时 调试模式跑第一个任务调试模式跑第一个任务10.在观察窗口watch window输入j,连续按F5查看j的变化和屏幕的输出。11.按SHIFT+F5或使用菜单结束调试,记录12说明watch window的作用,尝试在watch window中输入操作系统的重要全局变量,P247表7.1,观察他们的值下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P41-43任务控制块的初始化,P51-54任务的创建第第
7、3学时学时 任务的创建任务的创建掌握任务创建的过程步骤1.去掉前面的断点,找到main.c中OSTaskCreate(FirstTask,0,&TaskStk5TASK_STK_SIZE-1,5);函数,设置断点,并按F5调试运行,运行代码的时候输入1,在运行到断点时,按F11追进函数内部,再按F10单步运行,与书上51页进行比较。2。画出该函数运行完成后的就绪表和就绪组,任务控制块空闲链表和任务链表。第第3学时学时任务创建的过程任务创建的过程3.记录所有过程,说明OSTaskCreate都做了哪些工作,任务FirstTask的任务控制块实体是什么,在创建结束时其任务控制块的内容又是什么。记录
8、下来。4.试着自己编写一个带输出的简单的函数,然后使用OSTaskCreate创建这个函数,修改MAIN.c,在输入1的时候创建这个函数。自己编写的函数保存在usercode.c中,并注意在usercode.h中添加函数声明。修改完成后重新编译执行。下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P44-50操作系统的初始化第第4学时学时 操作系统初始化操作系统初始化步骤1.找到操作系统初始化函数OSInit,在其中设置断点,并按F5调试运行,观察OSInit执行的过程,与书上44页2.3操作系统的初始化进行比较,记录OSINIT都做了什么工作2。画出OSINIT后的就绪表和就绪组,
9、任务控制块空闲链表和任务链表(参考书上2.1,2.2,2.3)3.记录所有过程,说明OSINIT之后系统的状况下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P95-97任务延时函数OSTimeDly第第5学时学时 让任务阻塞式延时让任务阻塞式延时掌握操作系统的初始化过程步骤1.不改动代码,输入参数1,全速运行,打开WINDOWS任务管理器,查看,如图注意Os_cpu.c中,确定void OSTaskIdleHook(void)Sleep(1);要改成这样,否则空闲任务也在不同的运行,看不到系统利用率的变化情况。加上这一句,将空闲任务的系统利用率降低第第5学时学时 让任务阻塞式延时让
10、任务阻塞式延时2.修改代码,使用阻塞式延时,查看书上95页3.2.3,修改延时代码第第5学时学时 让任务阻塞式延时让任务阻塞式延时3.重新编译,运行。使用任务管理器查看系统利用率。第第5学时学时 让任务阻塞式延时让任务阻塞式延时4.记录实验过程,说明发生这种变化的原理。下次实验前准备:继续看下次实验前准备:继续看2.1,加深对操作,加深对操作系统采用的重要数据结构的理解系统采用的重要数据结构的理解第第6学时学时两个任务交替运行两个任务交替运行1.编译运行代码,输入选项2运行程序2.运行查看结果第第6学时学时两个任务交替运行两个任务交替运行3.查看代码,说明为什么得到这样的运行结果4.修改use
11、rcode.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实现了哪些
12、功能,画出流程图4.继续调试OS_TASK_SW,根据书章2.1中对堆栈的描述,论述压栈和退栈的处理过程。下次实验的准备预习嵌入式实时操作系统C/OS原理与实践P83-84多任务的启动为下次试验做准备第第8学时学时理解多任务的启动理解多任务的启动1.使用原始代码2.查看在main.c,在OSStart();处设置断点。3.调试模式运行,跟踪进OSStart,然后单步运行。参考P83-85分析代码。5.画出OSStart流程图4.说明OSStart的功能,说明多任务启动的标志是什么下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P67-72任务的挂起和恢复第第9学时学时任务的挂起和恢复
13、任务的挂起和恢复1.编译运行代码,输入选项3继续运行程序2.运行查看结果第第9学时学时 任务的挂起和恢复任务的挂起和恢复3.查看代码,说明为什么得到这样的运行结果4.对任务代码进行修改,得到不同的结果5.改变任务的优先级,查看运行结果,说明输出的不同之处,说明原因补充,各个例子的运行结果展示3下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P102-129事件管理的重要数据结构,事件管理程序,信号量管理第第10学时学时 信号量管理实验信号量管理实验1.例子程序说明见嵌入式实时操作系统C/OS原理与实践 P129,运行结果见P133图4.9 打开原始工程运行代码,输入选项4继续运行程序
14、2.运行查看结果3.说明使用信号量实现的功能,为什么能实现这样的功能,都使用了哪些数据结构。第第10学时学时 信号量管理实验信号量管理实验4.实现P190,习题6(在usercode.c中编写三个函数,并修改usercode.h中的声明,修改main.c,重新编译查看效果)补充,各个例子的运行结果展示4下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P134-158 4.4互斥信号量第第11学时学时 互斥信号量管理实验互斥信号量管理实验1.例子程序说明见嵌入式实时操作系统C/OS原理与实践 P154,运行结果见P159图4.142.程序运行后,输入5选择例子程序53.重新编译运行,查
15、看结果4.说明使用互斥信号量实现的功能,为什么能实现这样的功能,都使用了哪些数据结构。5.说明为什么解决了优先级反转的问题第第11学时学时 互斥信号量管理实验互斥信号量管理实验5.自己设计一个使用时间标志组的例子,编程实现并运行,记录结果。补充,各个例子的运行结果展示5下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P159-189 4.5事件标志组第第12学时学时 事件标志组管理实验事件标志组管理实验1.例子程序说明见嵌入式实时操作系统C/OS原理与实践 P184,运行结果见P159图4.202.程序运行后,输入6选择例子程序63.重新编译运行,查看结果4.说明使用事件标志组实现的
16、功能,为什么能实现这样的功能,都使用了哪些数据结构。第第12学时学时 事件标志组管理实验事件标志组管理实验5.实现P190,习题7(在usercode.c中编写三个函数,并修改usercode.h中的声明,修改main.c,重新编译查看效果)补充,各个例子的运行结果展示6下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P191-210 5.1消息邮箱第第13学时学时 消息邮箱管理实验消息邮箱管理实验1.例子程序说明见嵌入式实时操作系统C/OS原理与实践 P208,运行结果见P210图5.72.程序运行后,输入7选择例子程序73.重新编译运行,查看结果4.说明使用消息邮箱实现的功能,为
17、什么能实现这样的功能,都使用了哪些数据结构。第第13学时学时 消息邮箱管理实验消息邮箱管理实验5.实现P230,习题7(在usercode.c中编写三个函数,并修改usercode.h中的声明,修改main.c,重新编译查看效果)补充,各个例子的运行结果展示7下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P2111-229 5.2消息队列第第14学时学时 消息队列管理实验消息队列管理实验1.例子程序说明见嵌入式实时操作系统C/OS原理与实践 P226,运行结果见P229图5.122.程序运行后,输入8选择例子程序83.重新编译运行,查看结果4.说明使用消息队列实现的功能,为什么能实
18、现这样的功能,都使用了哪些数据结构。第第14次实验次实验 消息队列管理实验消息队列管理实验5.实现P230,习题8(在usercode.c中编写三个函数,并修改usercode.h中的声明,修改main.c,重新编译查看效果)补充,各个例子的运行结果展示8下次实验的准备工作阅读嵌入式实时操作系统C/OS原理与实践P231-244 内存管理第第15学时学时 内存管理实验内存管理实验1.例子程序说明见嵌入式实时操作系统C/OS原理与实践 P241,运行结果见P244图6.32.程序运行后,输入9选择例子程序94.说明使用消息队列实现的功能,为什么能实现这样的功能,都使用了哪些数据结构。第第15学时学时 内存管理实验内存管理实验5.实现P244,上机习题8(在usercode.c中编写三个函数,并修改usercode.h中的声明,修改main.c,重新编译查看效果)补充,各个例子的运行结果展示9谢谢!谢谢!