嵌入式实时操作系统实验手册范本

上传人:l**** 文档编号:127837776 上传时间:2020-04-06 格式:DOC 页数:20 大小:856KB
返回 下载 相关 举报
嵌入式实时操作系统实验手册范本_第1页
第1页 / 共20页
嵌入式实时操作系统实验手册范本_第2页
第2页 / 共20页
嵌入式实时操作系统实验手册范本_第3页
第3页 / 共20页
嵌入式实时操作系统实验手册范本_第4页
第4页 / 共20页
嵌入式实时操作系统实验手册范本_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《嵌入式实时操作系统实验手册范本》由会员分享,可在线阅读,更多相关《嵌入式实时操作系统实验手册范本(20页珍藏版)》请在金锄头文库上搜索。

1、嵌入式实时操作系统实验手册 系 别:电子信息与计算机科学系 专业班级:文电1131、1132文通1141 实验地点:一教203、204 实验时间:9-17周,周三,3、4节 指导教师:荆 蕾 学 期: 2013-2014学年度第二学期目 录 目 录2学时进度安排2实验一 uCOS-II操作系统的文件结构和任务的创建3一、实验目的3二、开发环境介绍3三、实验任务:7实验二 任务的删除8一 实验目的8二 理论知识8三 实验任务:9实验三 信号量的使用10一 实验目的10二 实验原理10三 实验任务:11实验四 互斥型信号量的使用12一 实验目的12二 理论知识12三 实验内容13实验五 消息队列的

2、使用14一 实验目的14二 实验原理14三 实验内容16实验六 信号量集的使用17一 实验目的:17二 实验原理:17三 实验内容19学时进度安排时间实验内容9、11周,周三,3,4节实验一、操作系统的文件结构和任务的创建12周,周三,3,4节实验二、任务的删除13、14周,周三,3,4节实验三、信号量的使用15周,周三,3,4节实验四、互斥型信号量的使用16周,周三,3,4节实验五、消息队列的使用17周,周三,3,4节实验六、信号量集的使用实验一 uCOS-II操作系统的文件结构和任务的创建一、实验目的1.熟悉并掌握基于uC/OS-II的开发工具TurboC3.02.了解uC/OS-II的文

3、件结构、文件之间的依赖关系 。3了解任务创建的方法。二、开发环境介绍(一)为什么选择用TurboC3.0编译UCOS(uC/OS-II)?按照课本(任哲老师)给出的Borland C编译方式,配置起来有些复杂(课本第二章讲了使用Borland C编译的配置方法,请感兴趣的同学自己研究)。所以这里我们选择了配置好的工程文件,使用TurboC3.0编译。Turbo C是Borland公司开发的DOS下16位C语言集成开发工具。有2.0和3.0版本,2.0只支持C语言编译,不支持鼠标操作,而3.0版本可以支持C/C+两种语言编译,而且还支持鼠标和/注释方式;TC2.0是80年代开发的,使用了很多年一

4、直到现在WINDOWS系统才逐渐退出舞台。Turbo C2.0不仅是一个快捷、高效的编译程序,同时还有一个易学、易用的集成开发环境。使用Turbo C2.0无需独立地编辑、编译和连接程序,就能建立并运行C语言程序。因为这些功能都组合在Turbo 2.0的集成开发环境内,并且可以通过一个简单的主屏幕使用这些功能。(二)在开始做之前,请确保您已经有Software文件夹(即ucos源文件和PC上的移植文件)。编译UCOS需要的源文件如下:1. SOURCE文件夹(.Softwareprojectsource)的文件如下:含OS_CORE.C、OS_FLAG.C、OS_MBOX.C、 OS_MEM.

5、C、OS_MUTEX.C、OS_Q.C 、OS_SEM.C、OS_TASK.C、OS_TIME.C、 uCOS_II.c、 uCOS_II.H 等11个文件2. Project文件夹下的文件如下:OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C (三个文件)INCLUDE.H、OS_CFG.H、PC.H、PC.C我们的源程序文件 TEST.COS_CPU_A.ASM汇编语言源程序文件,需要用TASM汇编,即TASM.exe和TASM2MSG.exe这两个文件。Output文件夹中包含了编译生成的OBJ和EXE文件(三)程序的编译和运行步骤该工程文件的使用方法:1、双击TCPP3

6、0E.EXE启动TurboC 3.0 。可以用Alt+Enter切换,使TC全屏。2、在Project 菜单-选择Open Project. ,在弹出的对话框中选择UCOS2.PRJ即为我们已经建立好的工程文件。如下图所示:打开后TC界面可能没什么变化,你可能以为还没打开,可以将Project窗口打开能够看到刚才打开的UCOS2工程包含的文件了3、OK我们开始编译Alt+C选择编译菜单的make编译成功4、Alt+R选择Run菜单下的run执行。(注意:运行的结果如下图所示,但是这个结果是根据Test.c程序的不同而变化的。)5、按ESC键可以返回TC界面,你就可以开始写自己的TEST.C文件

7、了6、如果需要往工程中添加文件,请选择Project菜单-Add item(不需要添加的 将此步骤忽略)添加文件add item添加c文件三、实验任务:1、请通过工程文件来了解uC/OS-II 的文件体系uC/OS-II 包括三个部分:(P13,图1-7)1)核心代码部分,这部分代码与处理器无关,包括七个源代码文件和一个头文件,这七个源代码文件负责的功能分别是内核管理、事件管理、消息队列管理、存储管理、消息管理、信号量处理、任务调度和定时管理。2)设置代码部分,包括两个头文件,用来配置事件控制块的数目以及是否包含消息管理相关代码等。3)处理器相关的移植代码部分,这部分包括一个头文件,一个汇编文

8、件和一个C 代码文件,在uC/OS-II 的移植过程中,用户所需要关注的就是这部分文件。请大家区分下:该工程中的各个文件分别属于上述哪一个部分?2、uC/OS-II 任务的创建,使用函数OSTaskCreate()想让C/OS-管理用户的任务,用户必须要先建立任务。用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务:OSTaskCreate() 或 OSTaskCreateExt()。OSTaskCreate()与C/OS是向下兼容的,OSTaskCreateExt()是OSTaskCreate()的扩展版本,提供了一些附加的功能。用两个函数中的任何一个都可以建立任务。我们常用的是

9、OSTaskCreate()函数。任务可以在多任务调度开始前建立,也可以在其它任务的执行过程中被建立。在开始多任务调度(即调用OSStart()前,用户必须建立至少一个任务。任务不能由中断服务程序(ISR)来建立。OSTaskCreate()需要四个参数:task是任务代码的指针,pdata是当任务开始执行时传递给任务的参数的指针,ptos是分配给任务的堆栈的栈顶指针prio是分配给任务的优先级。1)请编写一个有3个任务的应用程序,每个任务均会在显示器上显示一个字符,让3个任务具有不同的等待时间,观察并解释该程序运行的时候任务被调度的情况。2)当第一个任务运行了20次的时候,让第一个任务请求挂

10、起第二个任务、当第一个任务运行到40次的时候,恢复第二个任务。请编写程序解决上面两个问题,并且要给出对于现象的解释。实验二 任务的删除一 实验目的掌握任务删除操作所使用的方法。二 理论知识删除任务,就是将该任务处于 睡眠 状态。 并不是说任务的代码真的被删除了,只是任务的代码不再被操作系统调用。也就是删除该任务的任务控制块即可。 通过调用OSTaskDel( )就可以完成删除任务自身或除了空闲任务之外的其他任务的操作。l 如果删除自身,则使用OSTaskDel(OS_PRIO_SELF);l 如果删除其它任务,则使用OSTaskDel(被删除任务的优先级);任务不能由请求删除方直接删除,会导致

11、被删除任务所使用的有些临时空间不能释放。所以请求删除任务方只是提出删除请求,被删除方收到请求后将自己删除。双方通信使用的是 被删除方任务控制块的成员OSTCBDelReq(双方都可以访问),访问该成员使用的函数为OSTaskDelReq (prio)。例程:请求删除方 可以这么写:while ( OSTaskDelReq ( prio ) != OS_TASK_NOT_EXIST ) OSTimeDly(1);/ 延时等待,直到被删除任务已被删除解释:prio为被删除任务的优先级。请求删除方使用该函数,可以将OSTCBDelReq成员的值置为:OS_TASK_DEL_REQ;该函数如果返回值为

12、OS_TASK_NOT_EXIST意味着该被删除的任务已经删除掉。被删除方程序可以这么写:if ( OSTaskDelReq ( OS_PRIO_SELF ) = OS_TASK_DEL_REQ ) 释放资源和动态内存的代码; OSTaskDel( OS_PRIO_SELF );else 其它应用代码;这里,被删除方使用OSTaskDelReq(OS_PRIO_SELF)函数,返回的是其任务控制块中的成员OSTCBDelReq的数值。所以如果该值= OS_TASK_DEL_REQ,意味着已经有任务提出删除该任务的请求,要释放资源,将自己删除掉。三 实验任务:创建两个任务MyTask、 YouT

13、ask, MyTask任务显示“M”, YouTask任务显示“Y”,使任务MyTask显示了30个M之后,提出删除YouTask请求,YouTask收到请求后,延时5s之后删除自身。请参考例题3-10 。实验三 信号量的使用一 实验目的1) 掌握在基于嵌入式实时操作系统C/OS-II的应用中,任务使用信号量的一般原理。二 实验原理1. 信号量C/OS-II中的信号量由两部分组成:1) 一个是信号量的计数值,它是一个16位的无符号整数(0 到65,535之间);2) 另一个是由等待该信号量的任务组成的任务等待表。用户要在OS_CFG.H中将OS_SEM_EN开关量常数置成1,这样C/OS-II

14、才能支持信号量。关于信号量计数值:在使用一个信号量之前,首先要建立该信号量,也即调用OSSemCreate()函数,对信号量的初始计数值赋值。1) 如果信号量是用来表示一个或者多个事件的发生,那么该信号量的初始值应设为0。2) 如果信号量是用于对共享资源的访问,那么该信号量的初始值应设为1(例如,把它当作二值信号量使用)。3) 如果该信号量是用来表示允许多个任务访问这个共同的资源,那么该初始值显然应该是n,并把该信号量作为一个可计数的信号量使用。C/OS-II提供了5个对信号量进行操作的函数。它们是:OSSemCreate(),OSSemPend(),OSSemPost(),OSSemAccept()和OSSemQuery()函数。2、建立一个信号量, OSSemCreate()首先,它从空闲任务控制块链表中得到一个空事件控制块。接着,用信号量的初始值对任务控制块进行初始化最后,OSSemCreate()返回给调用函数一个指向任务控制块的指针。以后对信号量的所有操作,如OSSemPend(), OSSemPost(), OSSemAccept()和OSSemQuery()都是通过该

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号