版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式实时操作系统嵌入式实时操作系统 C/OS原理与实践原理与实践 - - 实验教程实验教程单 位:计算机科学学院计算机科学系计算机科学学院计算机科学系 教 师:李婷李婷时 间:2016实验前言 实验参考书:嵌入式实时操作系统C/OS原理与实践2012 电子工业出版社 实验前需学习对应部分 实验中对得到的结论需进行分析并交报告,做到知其然而知其所以然 对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学时学时 内存管理实验内存管理实验第第1616
3、学时学时 观摩在观摩在ARM7ARM7上的移植上的移植第1学时 跑第一个任务 本实验的目的是了解嵌入式实时操作系统COS代码结构,将其跑起来得到直观的认识。实验步骤实验步骤1. 将包含全部实验代码的压缩文件解压缩2. 将VC6开发环境打开3. 打开ucosexperiment目录下的ucos_vc.dsw 4. 用全部编译(rebuild all)编译程序,运行程序,根据窗口提示输出,获得感性认识!5. 根据教材P246页图7.1及7.1.1和7.1.2的内容,写出文件目录结构的说明,说明嵌入式实时操作系统COS都由哪些部分组成第1学时 跑第一个任务6. VC环境下,在工程上点鼠标右键,查看工
4、程的设计7. 打开main.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任务的创建第3学时 任务的创建掌握任
7、务创建的过程步骤1. 去掉前面的断点,找到main.c中OSTaskCreate(FirstTask, 0, &TaskStk5TASK_STK_SIZE-1, 5);函数,设置断点,并按F5调试运行,运行代码的时候输入1,在运行到断点时,按F11追进函数内部,再按F10单步运行,与书上51页进行比较。2. 画出该函数运行完成后的就绪表和就绪组,任务控制块空闲链表和任务链表。第3学时 任务创建的过程3. 记录所有过程,说明OSTaskCreate都做了哪些工作,任务FirstTask的任务控制块实体是什么,在创建结束时其任务控制块的内容又是什么。记录下来。4. 试着自己编写一个带输出的
8、简单的函数,然后使用OSTaskCreate创建这个函数,修改MAIN.c,在输入1的时候创建这个函数。自己编写的函数保存在usercode.c中,并注意在usercode.h中添加函数声明。修改完成后重新编译执行。下次实验的准备工作 阅读嵌入式实时操作系统C/OS原理与实践P44-50操作系统的初始化第4学时 操作系统初始化步骤1. 找到操作系统初始化函数OSInit,在其中设置断点,并按F5调试运行,观察OSInit执行的过程,与书上44页2.3操作系统的初始化进行比较,记录OSINIT都做了什么工作2. 画出OSINIT后的就绪表和就绪组,任务控制块空闲链表和任务链表(参考书上2.1,2
9、.2,2.3)3. 记录所有过程,说明OSINIT之后系统的状况下次实验的准备工作 阅读嵌入式实时操作系统C/OS原理与实践P95-97任务延时函数OSTimeDly第5学时 让任务阻塞式延时掌握操作系统的初始化过程步骤1. 不改动代码,输入参数1,全速运行,打开WINDOWS任务管理器,查看,如图。第5学时 让任务阻塞式延时2.修改代码,使用阻塞式延时,查看书上95页3.2.3,修改延时代码第5学时 让任务阻塞式延时3. 重新编译,运行。使用任务管理器查看系统利用率。第5学时 让任务阻塞式延时4.记录实验过程,说明发生这种变化的原理。 下次实验前准备:继续看2.1,加深对操作系统采用的重要数
10、据结构的理解第6学时 两个任务交替运行1. 编译运行代码,输入选项2运行程序2. 运行查看结果第6学时 两个任务交替运行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. 查看
11、在main.c,说明两个用户任务的堆栈都是什么,堆栈的地址是怎么传递给任务创建函数的。3. 在OS_Sched函数中设置断点。跟踪调试,说明OS_Sched实现了哪些功能,画出流程图4. 继续调试OS_TASK_SW,根据书章2.1中对堆栈的描述,论述压栈和退栈的处理过程。下次实验的准备 预习嵌入式实时操作系统C/OS原理与实践P83-84多任务的启动为下次试验做准备第8学时 理解多任务的启动1. 使用原始代码2. 查看在main.c,在OSStart();处设置断点。3. 调试模式运行,跟踪进OSStart,然后单步运行。参考P83-85分析代码。5. 画出OSStart流程图4. 说明OS
12、Start的功能,说明多任务启动的标志是什么下次实验的准备工作 阅读嵌入式实时操作系统C/OS原理与实践P67-72任务的挂起和恢复第9学时 任务的挂起和恢复1. 编译运行代码,输入选项3继续运行程序2. 运行查看结果第9学时 任务的挂起和恢复3. 查看代码,说明为什么得到这样的运行结果4. 对任务代码进行修改,得到不同的结果5. 改变任务的优先级,查看运行结果,说明输出的不同之处,说明原因下次实验的准备工作 阅读嵌入式实时操作系统C/OS原理与实践P102-129 事件管理的重要数据结构,事件管理程序,信号量管理补充,各个例子的运行结果展示3第10学时 信号量管理实验1. 编译运行代码,输入
13、选项4继续运行程序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. 重新编译运行,查看结果4.
14、说明使用互斥信号量实现的功能,为什么能实现这样的功能,都使用了哪些数据结构。5. 说明为什么解决了优先级反转的问题第11学时 互斥信号量管理实验5. 自己设计一个使用时间标志组的例子,编程实现并运行,记录结果。补充,各个例子的运行结果展示5下次实验的准备工作 阅读嵌入式实时操作系统C/OS原理与实践P159-189 4.5事件标志组第12学时 事件标志组管理实验1. 例子程序说明见嵌入式实时操作系统C/OS原理与实践 P184,运行结果见P159图4.202. 程序运行后,输入6选择例子程序63. 重新编译运行,查看结果4. 说明使用事件标志组实现的功能,为什么能实现这样的功能,都使用了哪些数
15、据结构。第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. 说明使用消息邮箱实现的功能,为什么能实现这样的功能,都使用了哪些数据结构。第13学时 消息邮箱管理实验5.
16、实现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. 说明使用消息队列实现的功能,为什么能实现这样的功能,都使用了哪些数据结构。第14次实验 消息队列管理实验5. 实现P230,习题8(在usercode.c中编写三个函数,并修改usercode.h中的声明,修改main.c,重新编译查看效果)补充,各个例子的运行结果展示8下次实验的准备
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年教师岗押题卷及答案
- 2026年青岛西海岸新区教育体育系统公开招聘工作人员(74人)建设考试参考题库及答案解析
- 2026日照市消防救援支队政府专职消防队员招录建设笔试参考题库及答案解析
- 2026河南新乡市新鼎高级中学教师招聘2人建设考试参考题库及答案解析
- 2026年陕投集团校园招聘岗位表(陕西能源凉水井矿业有限责任公司)建设考试备考题库及答案解析
- 2026福建省农业科学院作物研究所编外科研管理助理招聘1人建设笔试备考试题及答案解析
- 2026年白山市事业单位公开招聘高层次和急需紧缺人才(1号)(125人)建设笔试参考题库及答案解析
- 2026辽宁省妇幼保健院招聘高层次和急需紧缺人才14人(第二批)建设考试参考题库及答案解析
- 2026潍坊第二人民医院招聘(3人)建设笔试备考试题及答案解析
- 2026江西南昌大学附属眼科医院招聘6人(第二批)建设笔试备考试题及答案解析
- 涂料生产与涂装作业指导书
- 代耕代种合同范本
- 内分泌与代谢系统疾病常见症状或体征的护理内科护理学第七章讲解
- 《智能网联汽车云控系统 第1部分 系统组成及基础平台架构》
- 旅行社企业章程范本
- 弹性延迟退休协议书示范文本
- 2025年湖南出版集团招聘笔试参考题库含答案解析
- 氧化铝制取全套教学教程整套课件全书电子教案
- 肩关节超声检查
- 算力工厂建设指南白皮书 2024
- 跨学科知识建构:内涵特征、概念模型和实践原则
评论
0/150
提交评论