8D Spaces

Reliability & Stability & Efficiency

  • 目录视图
  • 摘要视图
  • 订阅

VxWorks设备驱动开发指南(二)--VxBus And VxBus Device Driver

2013-01-24 00:03 2018人阅读 评论(0) 收藏 举报

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

VxBus And VxBus Device Driver

1、Introduction

本章主要介绍与VxBus和VxBus驱动程序相关的一些概念,主要包括VxBus, Instances(实例)等。

2、About VxBus

VxBus对很多朋友来说是一个全新的概念,也包括我,下面介绍一下VxBus。

术语VxBus通常情况下指的是VxWorks中对支持设备驱动程序的一些具体的基础设施,它包括:

(1)允许设备驱动程序自动与设备匹配

(2)为其他软件环境(设备驱动程序之外)访问设备功能提供机制

(3)为VxWorks系统中的设备驱动程序的多样性提供一些必须的支持

(4)另外VxBus有时候也指VxWorks系统的的组件集合,包括WorkBench开发平台vxprj命令行工具,VxWorks镜像项目等

VxBus最核心的功能是组件功能,它把每个设备驱动程序和VxBus支持的模块都抽象成一个组件,所有的这些组件都可以单独在Workbench中进行配置(添加和删除)。在VxWorks6.2以前,设备驱动程序并没有集成vxWorks项目配置中,程序员为了添加和删除对特定设备的支持必须具备足够的BSP、驱动程序开发知识,当设备驱动程序被添加或者删除时,它同样也要求额外的功夫去管理VxWorks工程。作为组件的集合,VxBus通过允许在workBench中选择非常多的驱动程序和支持模块来减少上面提到的大部分工作量,而且它并不要求程序员具备良好的BSP和驱动程序知识,也不要求增删设备驱动时对工程的附加管理等。

VxBus在大多数发行版的BSP中是必须的组件,如果你在去掉Vxbus组件的BSP基础上建立工程,工程一般都不会编译通过。

3、VxBus Device Driver

对于很好的理解VxBus 设备驱动程序,有三个概念非常重要:设备,驱动程序,实例。设备概念大家都很清楚,一般就是指硬件;驱动程序是指使硬件设备能够被操作系统访问的可执行代码和必须的配置信息;每一个驱动程序可以和0或者多个设备相关联,术语实例指的是这种关联的其中一个。这和蓝牙设备配对过程是一样的,驱动程序也要和设备进行配对,系统可以同时存在多个这样的实例。以下是VxBus实例的示意图:

如上图所见,一个设备驱动程序和一个设备配对后形成一个实例。设备驱动程序中的方法构成了一种机制,它为软件其他部分访问硬件设备功能提供支持。当使用驱动程序的一个方法时,发起请求的模块能够询问一个或者多个实例。这种询问可以查询一些如何完成一个动作的信息,也可以请求驱动程序去完成某一个动作。对于上层来说,这些查询主要包括指定实例能否支持这样一个动作,哪些实例能够支持这样一个动作。下图演示了vxworks系统中的一个子系统的device/driver/OS的通信过程。

上图主要包括网络栈和辅助始终两个中间模块,它们都尝试与系统中的硬件进行通信。注意到,实际的系统中,一般会有多个实例和很多中间模块,上图只是实际系统的一个子集而已。

一个实例通过广播它支持的驱动方法使得这些方法都能够被整个VxWorks系统访问。在上图中,网络栈使用vxbDevMethodGet( )方法来查询系统中的每一个实例,在这个例子中,网络栈寻找支持{muxDevConnect}( )设备方法的实例,如果该实例支持该驱动方法,则会返回驱动中实现该方法的函数的指针,如果不支持,则返回NULL。此例中,网络栈找到一个支持该方法的网络接口(Yukon II Network Interface)。上图同样演示了辅助时钟的询问过程,辅助时钟寻找支持{vxbTimerFuncGet}( )驱动方法的实例,并且得知系统中的OpenPic timer instance支持该方法。上图中的虚线表示查询系统中的实例,实现表示得到了一个positive结果(支持)。

上图的OpenPic Timer实例直接询问Interrupt Controller是否支持vxbIntCtlrEnable方法,中断控制器支持该方法,它就会对该询问做出响应。

4 VxBus的设计目标

VxWorks系统是针对实时和嵌入式应用而设计的操作系统,这就会对设备驱动程序的设计施加了一些限制。总的来说,大部分VxWorks设备驱动程序的主要目标是满足目标系统的实时性能要求。一般说来,如果一个设备驱动程序不允许目标系统上的应用运行在实时环境下,那么在VxWorks系统中使用该驱动程序是个错误的选择,必须考虑更换设备驱动程序,取决于具体的应用,这可能是一个硬性要求,也可能是较为重要的考虑性因素。

对于VxWorks设备驱动程序,内存空间是另外一个限制。很多嵌入式应用的可用内存有限,再者由于请求页面调度到磁盘并不符合实时操作的特性,内存限制就显得非常重要。

在VxWorks环境中,标准的软件需求同样重要,这些需求包括驱动程序的灵活性,代码的可维护性,代码的可读性以及设备驱动程序的可配置性。

4.1 性能

设备驱动程序必须以优异的性能运行以匹配实时内核的能力。以性能为目标的设计意味着以下几点:

(1)通常要求以合适的方式使用DMA和中断,这要求你的routine必须嵌套在一个最优的层次(效率和可维护性),过多嵌套会导致效率低下,过少嵌套导致代码维护性低

尽管如此,为了保持小的代码尺寸和使得你的驱动程序易于理解,必须在性能需求和合适使用routine之间做出权衡。

(2)让中断延时更小,为了做到这点,我们必须着重关注中断服务程序。系统的整体性能与设备驱动程序的性能同等重要。

对于一些特殊应用,牺牲上面的某些性能目标来编写VxWorks设备驱动程序,是可以接受的。例如,为非实时应用的系统编写设备驱动程序,你可能在你的设备驱动程序设计中倾向于牺牲实时系统性能。但是,由于某些比如代码重用的问题,风河公司强烈建议不要采用这种做法。实时性能和内存空间对所有的VxWorks设备驱动程序来讲都是一个重要的关注点。

4.2 可维护性和可读性

软件工程中涉及到的大部分劳动非维护莫属,所以任何为了降低维护负担的努力都是值得的。通过坚持编码标准和撰写描述文档,都可以使得你的代码容易被人理解和维护。低质量的文档对于维护过程来讲就像是没有文档一样。任何新开发的设备驱动程序的文档被除了作者之外至少一个人阅读过。

4.3 方便配置

你的设备驱动程序不应该限制最终用户的选择和需求,不要对可支持的设备数量或者其他特性强加某些限制,在你的原始设备驱动程序中,也许不能够支持所有的硬件特性或者操作模式,但是你的设计不能够排除以后对设备某些特性的支持。

4.4  性能测试

所有的设备驱动程序都必须被测试达到预期的行为,同样所有的设备驱动程序也都必须被测试达到预期的性能。除了编写设备驱动程序的功能,还要编写测试设备驱动程序功能的例程,这主要包括在你的代码中插入调试信息和支持基准测试,如果基准测试不可用,你必须考虑编写一个。在不考虑设备类型的情况下,你可以考虑测试性能和预期的行为。通常情况下,高层次的调试代码,例如性能测试期间使用的调试代码,必须很好的编写,最好能被#ifdef/#endif语句包含,并留在源码中以减少将来的调试负担。

4.5 代码尺寸

在嵌入式实时操作系统市场,代码尺寸非常重要。通过结构性的设计可以减小代码尺寸,但是与此同时,减小代码尺寸可能会带来性能损失。作为一个开发人员,必须权衡你的设计以提供足够的性能,并且不会导致过大的代码尺寸。

0
0
  • 上一篇VxWorks 设备驱动开发指南(一)--Getting Started
  • 下一篇VxWorks设备驱动程序开发指南(三)---驱动程序的分类

参考知识库

操作系统知识库

5729关注|2210收录

软件测试知识库

4417关注|318收录

嵌入式开发知识库

4743关注|2673收录

猜你在找
input子系统基础之按键-linux驱动开发第8部分
uboot的硬件驱动部分-2.10.uboot源码分析6
Linux设备驱动开发入门
驱动应该怎么学-linux驱动开发第1部分
Android底层技术:HAL驱动开发
USB设备驱动开发-USB Gadget Driver一
linux ------ 设备驱动模型之二bus device driver
LINUX设备驱动之设备模型四--device&driver&bus二
简单字符设备驱动driver of simple char device
Linux内核部件分析--设备驱动模型之device-driver
查看评论

  暂无评论
发表评论
  • 用 户 名:
  • yz2010
  • 评论内容:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

核心技术类目
全部主题 Hadoop AWS 移动游戏 Java Android iOS Swift 智能硬件 Docker OpenStack VPN Spark ERP IE10Eclipse CRM JavaScript 数据库 Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IISFedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTCcoremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech PerlTornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap

  • 个人资料
  •  
    8度空间
     
    • 访问:36778次
    • 积分:660
    • 等级: 
    • 排名:千里之外
    • 原创:29篇
    • 转载:3篇
    • 译文:2篇
    • 评论:6条
  • Blog
    • 常高伟的专栏
    • (ITRA)团队
    • 计算机视觉小菜鸟的专栏
    • 计算机视觉最新资讯网
  • 文章搜索
  • 文章分类
  • C++(5)
  • Code Optimization(0)
  • HardWare(4)
  • Buses(3)
  • 954(1)
  • vxworks(3)
  • vxbus(1)
  • 软件使用tips(1)
  • 文章存档
    • 2013年03月(2)
    • 2013年01月(9)
    • 2012年01月(2)
    • 2011年08月(1)
    • 2011年07月(5)
      展开
  • 阅读排行
  • Fisher 线性分类器(1)----Fisher准则函数(4003)
  • 基于OpenCV的三次多项式曲线拟合(3536)
  • VxWorks设备驱动开发指南(二)--VxBus And VxBus Device Driver(2016)
  • 访问PCIe配置空间using Intel Chipsets(1984)
  • VxWorks驱动程序开发指南(四)--驱动程序的组织结构(1693)
  • VxWorks设备驱动程序开发指南(三)---驱动程序的分类(1213)
  • PCI总线在VxWorks中的实现(1193)
  • 贝叶斯定理及典型应用(1069)
  • VxWorks 设备驱动开发指南(一)--Getting Started(1000)
  • 三角形的平移&旋转&缩放程序(基于OPENCV)(966)
  • 评论排行
  • Fisher 线性分类器(1)----Fisher准则函数(3)
  • 三角形的平移&旋转&缩放程序(基于OPENCV)(1)
  • 谷歌研发人脸识别手机应用 拍照可获个人信息(1)
  • NVRAM 和FLASH的区别(1)
  • 采用递归去掉string里面的所有空格(0)
  • 以二进制输出整型数(0)
  • Matlab GUI设计相关(0)
  • 运动目标检测、阴影检测及目标跟踪中用得到的标准测试视频下载(0)
  • Depth of Field Math(0)
  • Adjust structure size to power of two(0)
  • 推荐文章

    • * 云计算的那些事儿之计算虚拟化
    • * 微服务--分布式事务的实现方法及替代方案
    • * 你应该知道的 Android 数据库更新策略
    • * HDFS副本放置节点选择的优化
    • * CSDN日报20170416 ——《为什么程序员话少钱多死得早?》
    • * 凡人视角C++之string(上)
  • 最新评论
  • NVRAM 和FLASH的区别

    yanpeifeng2011: 你好,最近也在学习Vxworks,近期需要写一个NVRam驱动,对于系统中vxbFileNvRam....

  • 谷歌研发人脸识别手机应用 拍照可获个人信息

    keshi1990: 现在的科技都发展这么快了,仅凭一张照片就能获得个人信息,有点神奇。。。

  • Fisher 线性分类器(1)----Fisher准则函数

    S20070319: 楼主,将fisher应用到说话人识别中,F比,来衡量MFCC参数(一般都取12维也就是12列)中各维...

  • Fisher 线性分类器(1)----Fisher准则函数

    S20070319: 楼主,请教个问题啊,用fisher准则来衡量说话人识别中特征参数(MFCC)的有效性时,是一维的情况...

  • Fisher 线性分类器(1)----Fisher准则函数

    8度空间: 在一维Y空间是指y = wx + wo, 它把X映射到Y空间。

  • 三角形的平移&旋转&缩放程序(基于OPENCV)

    8度空间: 如果页面没代码,请点击expand code!!

公司简介|招贤纳士|广告服务|联系方式|版权声明|法律顾问|问题报告|合作伙伴|论坛反馈
网站客服杂志客服微博客服webmaster@csdn.net400-600-2320|北京创新乐知信息技术有限公司 版权所有|江苏知之为计算机有限公司|江苏乐知网络技术有限公司
京 ICP 证 09002463 号|Copyright © 1999-2016, CSDN.NET, All Rights Reserved 

VxWorks设备驱动开发指南--VxBus And VxBus Device Driver相关推荐

  1. VxWorks设备驱动程序开发指南---驱动程序的分类

    8D Spaces Reliability & Stability & Efficiency 目录视图 摘要视图 订阅 VxWorks设备驱动程序开发指南(三)---驱动程序的分类 2 ...

  2. 【致敬未来的攻城狮计划】第2期定向赠书《RT-Thread设备驱动开发指南》+ 《GD32 MCU原理及固件库开发指南》

    开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(超链接:http://yyds.recan-li.cn)和 瑞萨MCU (超链接:瑞萨电子 (Renesas Electronics ...

  3. Linux 设备驱动开发 —— 设备树在platform设备驱动中的使用

    关与设备树的概念,我们在Exynos4412 内核移植(六)-- 设备树解析 里面已经学习过,下面看一下设备树在设备驱动开发中起到的作用 Device Tree是一种描述硬件的数据结构,设备树源(De ...

  4. 【正点原子MP157连载】第二十章 字符设备驱动开发-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  5. 【正点原子MP157连载】第二十二章 新字符设备驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  6. Windows CE设备驱动开发之电源管理

    4.7电源管理 电源管理模块管理设备电源,从而全面改进操作系统的电源使用效率:它所有设备的电源使用,同时能与不支持电源管理的应用程序及驱动程序共存. 使用电源管理可以有效的减少目标设备的电源消耗,同时 ...

  7. 【物联网中间件平台-04】YFIOs驱动开发指南

    文档名称 YFIOs驱动开发指南 版本 V1.0.0 作者 叶帆 日期 2012-12-25 历史 文档列表 http://www.sky-walker.com.cn/MFRelease/YF_doc ...

  8. 正点原子ALPHA_字符设备驱动开发总结

    linux分为内核态和用户态,他两不能直接访问,必须通过"中间商"联系,关系如下: 用户空间:应用程序 | |系统调用(陷入) | 内核:linux驱动 Linux驱动的重点就是驱 ...

  9. 《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)网购链接

    <Linux设备驱动开发详解:基于最新的Linux 4.0内核> china-pub   天猫     dangdang   京东 China-pub 8月新书销售榜 推荐序一 技术日新月 ...

最新文章

  1. pip install lxml失败原因
  2. cordova打包app后发请求出现 Provisional headers are shown的问题
  3. 企业“数据压力锅”即将爆炸,CIO该如何防止爆锅?
  4. 一看就懂的例子告诉你用react-redux的正确姿势
  5. jdk的ServiceLoader
  6. 让Linux使用malloc申请更多的内存
  7. 线上MYSQL同步报错故障处理总结 实现同步不一致进行邮件报警
  8. M文件-函数的参数-传值还是传址/检查输入参数的个数/传递参数/输出参数
  9. mapreduce程序调用各个类的功能
  10. LeetCode 127. Word Ladder
  11. 关于计算流体力学,你知道多少?
  12. 20181018 考试记录
  13. REUSE_ALV_GRID_DISPLAY_LVC-可编辑单元格
  14. 树莓派 11 bullseye镜像官方源和国内源
  15. 美元指数是什么,为什么会对伦敦金有影响
  16. 低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端
  17. ap 目标检测算法map_目标检测算法的评估指标:mAP定义及计算方式
  18. javassist编程指南==读、写字节码
  19. 考研复试(控制工程专硕)及大学本科(物联网工程)知识点回顾(四)——数字电子技术
  20. win7配色方案_自制的基于rime的简体拼音输入方案,尽可能接近搜狗拼音

热门文章

  1. wps永久关闭wpscenter
  2. 通过一个很实用的例子让你学会T-SQL编程的基本语法和思想
  3. 金山快盘的安全性太差了
  4. RRT+reeds-shepp
  5. 题目描述:输入一个正整数 n (100 =< n <= 200000000), 输出是否为dancing number,及n的位数。
  6. 万向锁问题详解,以Unity为例
  7. 基于GeoHash算法的四大经纬度计算方案
  8. copilot使用教程-全新版
  9. 虚拟主机搭建网站(虚拟主机怎么搭建网站)
  10. 串口转网口的线怎么做