浅析ucosII设备驱动的设计与实现.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅析ucosII设备驱动的设计与实现

浅析uc/os_II设备驱动的设计与实现 设备驱动程序是任何操作系统的必不可少的、最必威体育官网网址的一个组成部分,它们实现了计算机系统所有附属设备的一个标准接口,它包含与硬件直接相关的设备驱动。从广义上说,“驱动程序”是指一些函数的集合,这些函数都能对硬件设备进行操作。驱动程序的概念在没有固定的操作系统的时候,是一个比较模糊的定义。简单地理解就是提供了一个软件到硬件(也可以是虚拟硬件)操作的函数。通常主要应该包括:设备初始化、设备的读写(输入输出)、设备的控制等信息。在μC/OS-Ⅱ下没有统一的设备驱动接口——不像windows或者linux下通过设备文件的定义模式,所以,把一些对硬件操作是通过一般的函数来完成的,叫成“驱动程序”也不为过。   1. 简介   外设驱动程序是实时内核和硬件之间的接口,是连接底层硬件和内核的纽带。   编写驱动程序模块应满足以下主要功能:   ① 对设备初始化;   ② 把数据从内核传送到硬件和从硬件读取数据;   ③ 读取应用程序传送给设备的数据和回送应用程序请求的数据;   ④ 监测和处理设备出现的异常。由于在μC/OS-Ⅱ下没有统一的设备驱动接口,在该操作系统中设备驱动的设计和实现主要是通过一些对硬件操作的函数来完成。   2. μC/OS-Ⅱ操作系统启动过程中的硬件初始化   基于μC/OS-II的应用系统工作时,首先把CPU初始化;接着进行操作系统初始化,主要完成任务控制块(TCB)初始化、TCB优先级表初始化、空任务的创建等;然后开始创建新任务,并可在新创建的任务中再创建其他的新任务;最后调用OSSTART()函数启动多任务调度。   当μC/OS-Ⅱ实际移植到具体的硬件平台中时,系统初始化时还要进行硬件的初始化。主函数是系统启动首先执行的一个函数,在启动μC/OS—Ⅱ之前,要屏蔽所有中断,并对全局变量初始化,防止运行出错。硬件初始化主要包括中断初始化,串口、键盘、显示等设备初始化。μC/OS—Ⅱ的初始化通过调用OSInit()函数,为OS分配任务队列、优先级状态表和准备状态表,初始化全局变量,并且创建一个空循环任务。接下来,在启动μC/OS—Ⅱ前调用OSTaskCreate()创建所有用户任务,并置准备态,创建任务时,要指定每个任务的优先级、堆栈大小和位置、任务函数入口。调用OS2Start()启动μC/OS—Ⅱ。从就绪队列中找到优先级最高的任务,作为当前任务执行。流程如图所示。   3. μC/OS-Ⅱ操作系统对硬件的操作和控制   3.1 函数控制硬件    前面已经提到过,不像其他的操作系统,在μC/OS—Ⅱ中没有统一的设备驱动接口,因此对硬件的操作和控制可以通过函数来完成。在启动过程中完成硬件初始化后,系统创建一个空循环任务,然后就可以调用OSTaskCreate()创建用户任务,在任务用户任务中选择要控制的硬件,选择最佳的控制方法,调用用户自己编写的函数来完成。 图 系统启动流程   3.2 BSP   BSP(板级支持包)是介于底层硬件和操作系统之间的软件层次,它完成系统上电后最初的硬件和软件初始化,并对底层硬件进行封装,使得操作系统不再面对具体的操作。 为μC/OS-Ⅱ编写一个简单的 BSP。它首先设置CPU内部寄存器和系统堆栈,并初始化堆栈指针,建立程序的运行和调用环境;然后可以方便地使用C语言设置硬件的配置环境,并编制相应的操作函数,为操作系统调用提供统一的接口;在CPU、板级和程序自身初始化完成后,就可以把CPU的控制权交给操作系统了。   4. 实际应用举例   既然在μC/OS-Ⅱ下没有统一的设备驱动接口,系统对硬件的控制是通过一些对硬件操作的函数来完成的。下面以在μC/OS-Ⅱ实时内核下驱动程序读取A/D的三种方法,分析在实际的工程实践中μC/OS-Ⅱ设备驱动的设计和实现,以及在设计过程中应注意的一些问题。 以一个单片机数据采集系统为例,硬件环境基于C8051F015单片机。A/D转换是单片机数据采集系统的重要组成部分,实时内核下A/D驱动程序的实现过程主要取决于A/D转换器的转换时间。我们首先比较和分析μC/OS-Ⅱ下A/D采样数据的三种方法;其次介绍C8051F015单片机A/D模数转换器的配置及特点;最后,在μC/OS-II内核移植到8位单片机C8051F015的基础上,介绍编写A/D驱动程序的一般思路和方法。   4.1 μC/OS-II实时内核下的A/D读取方法   实时内核下,驱动程序采用什么方法读取A/D采样数据是首先考虑的问题。许多因素将影响读取A/D,如A/D的转换时间、模拟值的转换频率、输入通道数等,但最主要的是取决于A/D的转换时间。典型的A/D转换电路由模拟多路复用器(M U X)、放大器和模数转换器(ADC)三部分组成。下面描述读取A/D的

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档