嵌入式移植实验三.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式移植实验三

实验三 uC/OS II任务间通信实验 一、实验目的 回顾uC/OS II 在Cortex-M3(LM3S9B2芯片)平台上的移植,以及RS232串口、TFT显示等驱动程序的加载。 回顾μC/OS-II任务管理的基本函数调用,任务堆栈、任务控制块、任务就绪表的结构和作用。 掌握嵌入式操作系统任务间通信的基本原理,熟练使用μC/OS-II中的消息邮箱和消息队列进行任务间的数据交换、数据通信。 掌握消息邮箱和消息队列相关的基本函数以及相关原理。 应用μC/OS-II中的消息邮箱和消息队列处理简单的实际问题。 二、预习要求 1. 基本概念 消息邮箱:多任务操作系统中,需要在任务间传递消息以实现通信,在内存创建一个消息缓冲区用来存放该消息,任务间传递消息时只需要传递消息缓冲区的指针,用来传递消息缓冲区指针的数据结构叫做消息邮箱。 消息队列:它属于间接通信方式,所谓消息就是在内存空间中一段长度可变的缓冲区,其长度和内容均可以由用户定义,其内容可以是实际的数据、数据块的指针或空。对消息内容的解释由应用程序完成。从操作系统观点看,消息没有定义的格式,所有的消息都是字节流,没有特定的含义。从应用观点看,根据应用定义的消息格式,消息被解释成特定的含义。应用可以只把消息当成一个标志,这时消息机制用于实现同步 队列控制块 队列控制块 队列长度 QCB1 队列名或ID Task3 Task4 …… 接收任务等待列表 Task1 Task2 …… 发送任务等待列表 最大 消息 长度 QCB2 …… 消息队列及其相关的参数和支持数据结构 2. 相关函数介绍 1). 创建消息邮箱 OSMBoxCreate() 函数原型: OS_EVENT * OSMboxCreate( void * msg ); 其中:-msg 是消息指针 2). 向邮箱发送消息 OSMboxPost() 和 OSMboxPostOpt() 函数原型: INT8U OSMboxPost( OS_EVENT * pevent, //消息邮箱指针 void * msg   //消息指针 ); INT8U OSMboxPostOpt( OS_EVENT * pevent, //消息邮箱指针 void * msg   //消息指针 INT8U opt //广播选项   ); 其中: opt=OS_POST_OPT_BROADCAST,则广播消息; opt=OS_POST_OPT_NONE,则把消息只向最高优先级等待任务发送 3). 读取消息邮箱 OSMboxPend() 和 OSMboxAccept() 函数原型: void * OSMboxPend( OS_EVENT * pevent, //请求消息邮箱指针 INT16U  timeout, //等待时限 INT8U  * err    //错误信息 ); void * OSMboxAccept( OS_EVENT * pevent //消息邮箱指针    ); 它们的区别在于OSMboxAccept()是无等待的读取模式。 4). 查询邮箱的状态 OSMboxQuery() 5). 删除邮箱 OSMboxDel() 函数原型: OS_EVENT *OSMboxDel( OS_EVENT * pevent, //消息邮箱指针 INT8U opt, //删除选项 INT8U *err //错误信息 ); 6). 和消息队列相关的函数 和详细队列相关的函数与消息邮箱相关的函数类似,罗列如下: 创建消息队列 OSQCreate( ); 请求消息队列 OSQPend( ) 和 OSQAccept( ); 向消息队列发送消息 OSQPost( ) 、OSQPostFront( ) 和 OSQPostOpt(),; 清空消息队列 OSQFlush( ); 删除消息队列 OSQDel( ); 查询消息队列 OSQQuery( ); 三、实验内容 1. 基本部分:主要包括消息队列和消息邮箱的创建、发送消息、接收消息、消息邮箱的查询与删除;消息队列的创建、发送消息到消息队列、从消息队列中接收消息、消息队列的查询与删除等。在它们的创建、删除、查询的过程中,请注意事件控制块ECB的变化,并通过单步调试跟踪变化,并说明理由。 1)在Cortex-M3系统下,移植μC/OS-II操作系统,并通过调整os_cfg.h中的宏定义,裁剪/增加μC/OS-II的相关组件; 2)消息邮箱和消息队列的创建,并通过ECB查看,理解μC/OS-II中消息队列和消息邮箱的工作原理; 3)设计一个多

文档评论(0)

dajia1qi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档