VxWorks设备驱动程序开发指南---驱动程序的分类
8D Spaces
Reliability & Stability & Efficiency
- 目录视图
- 摘要视图
- 订阅
VxWorks设备驱动程序开发指南(三)---驱动程序的分类
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
设备驱动程序的分类
1、Introduction
本章讨论和基于VxBus驱动程序模型的VxWorks设备驱动程序的相关核心概念,并特别剖析了VxBus设备驱动程序框架,主要包括以下信息:
- 设备驱动程序相关的文件和目录结构
- VxBus方法
- VxBus设备驱动程序的生命周期
除此之外,本章还包括了在SMP环境下开发设备驱动程序的guidline。本章解释的一些概念通常适用于所有的Device-Specific Driver。
2、驱动程序类别
关于设备和管理设备的驱动程序最基本的信息就是:这个设备有哪些功能。不同设备可以执行不同的任务,有用于读写磁盘或者其他不易失数据存储器的设备,有用于打印文本或者图形到视频显示器的设备,也有其他用于控制机器人手臂等用途的设备。
对于每一种功能,可能会有多种设备能够实现这一的功能,比如在显示器上显示信息这个功能,显示控制器可以是VGA,也可以是PCIe总线上的有几MRAM buffers的现代显示控制器。但是,不管是哪一种设备,其潜在的目的都是一样的。但是由于功能的相似性,设备驱动程序可以根据设备执行的任务来分为几类,以下是风河公司定义的几种设备驱动程序类别。
2.1 串行设备驱动程序
串行设备驱动程序管理面向终端和使用串行接口(RS232,RS422)的设备,这些设备都被连接到VxWorks的IO系统,并可以在控制台中进行配置,软件可以使用open,read,write,ioctl,close等标准接口来访问这些设备,在VxBus的框架下,串行设备驱动程序的安装目录在:
installDir/vxworks-6.x/target/src/hwif/sio
2.2 存储设备驱动程序
存储设备驱动程序当然是管理那些面向磁盘、磁带、移动闪存和在板闪存的接口,这些设备的一些通用特性有:
- 非易失性
- 访问速度比RAM慢N多倍
- 每个字节的代价比RAM低N多倍
这些设备主要包括ATA disk, SATA disk, SCSI disk, USB flash disk, floppy disk等,在VxBus设备驱动框架下,存储设备驱动程序被安装在以下目录:
installDir/vxworks-6.x/target/src/hwif/storage
2.3 网络接口设备驱动程序
网络接口设备驱动程序当然是管理面向网络硬件的接口啦,网络驱动程序支持的最常见的网络硬件就是以太网,但是网络驱动程序同样也会包括其他类型的网络硬件。典型的网络设备被分为两个主要部分:MAC和PHY,PHY驻留在MII(媒介独立接口),在VxBus框架中,MAC层的驱动程序被安装在以下目录:
installDir/vxworks-6.x/target/src/hwif/end
PHY驱动程序被安装在以下目录:
installDir/vxworks-6.x/target/src/hwif/mii
2.4 非易失性RAM(Non-Volatile RAM)驱动程序
NVRAM主要存储那些要求掉电后不会丢失的信息,NVRAM设备和其他storage设备的主要区别是:NVRAM可以以字节为单位来随即访问数据,而普通的storage设备基本上都是以块为单位访问数据的。一般情况下,NVRAM主要存储那些用于系统配置的信息,比如VxWorks系统的默认启动参数就是存储在NVRAM里面的。在VxBus框架下,NVRAM驱动程序的安装目录在:
installDir/vxworks-6.x/target/src/hwif/nvram
2.5 定时器驱动程序
定时器驱动程序能够提供两类服务,第一是计时和计数,第二是用做系统时钟,比如每隔一定时间中断CPU。在VxBus框架下,定时器驱动程序源文件的安装目录在:
installDir/vxworks-6.x/target/src/hwif/timer
2.6 DMA控制器驱动程序
DMA控制器允许在不需要CPU的干预下拷贝数据,典型的是在设备的缓冲区和系统RAM之间拷贝数据。许多设备为了提高性能,都内置了DMA控制器。但是很多系统也提供DMA控制器,该DMA控制器可以用于多种用途,DMA控制器驱动程序所指的DMA并不是设备的内置DMA控制器,而是系统提供的DMA控制器。在VxBus驱动框架下,DMA控制器驱动程序的安装路径是:
installDir/vxworks-6.x/target/src/hwif/dma
2.7 总线控制器驱动程序
总线控制器的作用是为不同总线类型之间的交互提供通信接口,每个CPU都有专门的对外接口,不考虑CPU类型的情况下,这些接口都被称作PLB(processor local bus),很多设备都是直接与PLB相连的,但是也有很多设备连接到其他总线上的,而这些总线是通过总线控制器挂接到PLB上。在VxBus框架下,总线控制器驱动程序的源码被安装在以下的路径:
installDir/vxworks-6.x/target/src/hwif/busCtlr
总线控制器驱动程序主要通过以下几种方式来管理总线上的设备:第一,负责识别下游总线上的设备;第二,负责配置下游总线上的设备;第三,管理必须的地址映射。
2.8 USB驱动程序
USB功能被划分为两个不同类型:USB HOST适配器和USB Class Drivers。USB HOST适配器是一种总线控制器,其实就是一个桥,它把USB总线通过USB HOST适配器挂接到PLB或者PCI总线。在VxBus框架下,USB HOST适配器的驱动程序安装目录是:
installDir/vxworks-6.x/target/src/hwif/busCtlr/usb/hcd
USB Class Drivers主要包括USB Storage,USB network等,但是在Vx6.8中USB Class Drivers并没有被集成到VxBus的框架下,因此,它们的主要源码目录在:
installDir/vxworks-6.x/target/src/drv/usb
2.9 中断控制器驱动程序
中断控制器的主要任务就是管理中断源,当外部设备向中断控制器请求中断后,中断控制器会在适合时把中断传递给CPU,让CPU处理该中断请求。在VxBus框架下,中断控制器驱动程序的安装目录是在:
installDir/vxworks-6.x/target/src/hwif/intCtlr
中断控制器负责识别哪些设备连接到了中断输入引脚,配置中断输入属性,禁止或者使能中断等。
2.10 多功能驱动程序
很多情况下,一个物理设备包含着多个逻辑设备,比如,一个芯片里面可以包括几个定时器,几个DMA控制器,多个网络接口,USB HOST适配器,PCI总线控制器等。物理设备上的很多逻辑设备很其他地方的设备都是完全一样的,开发一个驱动程序来支持一个芯片上的所有功能是不现实的,如果为一个芯片编写一个包括所有功能的驱动程序,会减少功能配置的灵活性,比如我们如果不需要USB HOST功能,该驱动程序的USB模块同样会驻留在内存中,浪费了系统资源。
因此,推荐的做法是:多功能驱动程序的开发策略应该是使用多个驱动程序来支持某一个芯片,每个驱动程序对应芯片上的一个功能。多功能驱动程序的主要任务是向VxBus提供芯片上有哪些功能、这些功能使用的地址等信息。
2.11 远程处理单元驱动程序
现在计算机系统中,都会提供不同于CPU的用于通用目的的处理单元,比如DSP啊,FPGA啊等,这种远程的处理单元主要用于特殊的应用目的,并受控于CPU,又或者它们也有自己的自治或者半自治系统。在VxBus框架下,远程处理单元驱动程序的安装目录在:
installDir/vxworks-6.x/target/src/hwif/cpu
该驱动程序负责与远程处理单元进行通信,每一个VxBus的远程处理单元都有责任建立和维和与其他远程处理单元的通信通道。
2.12 控制台驱动程序
控制台设备主要是指那些用于图形系统控制的设备,比如鼠标,键盘,显示器等。在VxBus框架下,控制台驱动程序的安装路径在:
installDir/vxworks-6.x/target/src/hwif/console
每种类型的控制台驱动程序管理设备的特定功能,比如键盘驱动程序8042,显示器驱动程序等。
2.13 资源驱动程序
现代的处理器设计都包括一些几种外部设备一起共享的硬件资源,它们主要提供诸如数据路由、地址映射等类的服务。外设都有足够的专用资源,这种专用资源一般都会被看待成外设的一部分。但是,当某些硬件资源不得不被多个外部设备共享时,你必须提供资源管理驱动程序,来为外部设备分配这些硬件资源。在VxBus驱动框架下,资源管理程序的源文件被安装在目录:
installDir/vxworks-6.x/target/src/hwif/resource
资源驱动程序主要是为外部设备分配共享的硬件资源,它也可以用来配置这些硬件资源。
2.14 其他类别的驱动程序
风河还没有为一些常见的设备定义类别,比如AD和DA,机器人控制系统等。
- 顶
- 0
- 踩
- 0
- 上一篇VxWorks设备驱动开发指南(二)--VxBus And VxBus Device Driver
- 下一篇VxWorks驱动程序开发指南(四)--驱动程序的组织结构
我的同类文章
- •PCI总线在VxWorks中的实现2013-01-22阅读1194
- •访问PCIe配置空间using Intel Chipsets2013-01-20阅读1986
参考知识库
-
机器人知识库
138关注|51收录
- 猜你在找
- 网络设备驱动介绍-linux驱动开发第11部分
- input子系统基础之按键-linux驱动开发第8部分
- 嵌入式Linux项目实战:三个大项目(数码相框、摄像头驱动和电源管理),九个衍生项目视频教程
- uboot的硬件驱动部分-2.10.uboot源码分析6
- 驱动框架入门之LED-linux驱动开发第4部分
- Linux下PCI设备驱动程序开发转
- Linux设备驱动程序开发入门
- 《精通Linux设备驱动程序开发》I2C
- Linux下PCI设备驱动程序开发总述
- WDM型USB设备驱动程序开发
暂无评论
- 用 户 名:
- yz2010
- 评论内容:
核心技术类目
- 个人资料
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设备驱动程序开发指南---驱动程序的分类相关推荐
- VxWorks驱动程序开发指南--驱动程序的组织结构
8D Spaces Reliability & Stability & Efficiency 目录视图 摘要视图 订阅 VxWorks驱动程序开发指南(四)--驱动程序的组织结构 20 ...
- VxWorks设备驱动开发指南--VxBus And VxBus Device Driver
8D Spaces Reliability & Stability & Efficiency 目录视图 摘要视图 订阅 VxWorks设备驱动开发指南(二)--VxBus And Vx ...
- 【致敬未来的攻城狮计划】第2期定向赠书《RT-Thread设备驱动开发指南》+ 《GD32 MCU原理及固件库开发指南》
开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(超链接:http://yyds.recan-li.cn)和 瑞萨MCU (超链接:瑞萨电子 (Renesas Electronics ...
- 嵌入式Linux设备驱动程序开发指南9(平台设备驱动)——读书笔记
平台设备驱动 九.平台设备驱动 9.1 平台设备驱动概述 9.2 GPIO驱动 9.2.1 简介 9.2.2 硬件名称 9.2.3 引脚控制器 9.2.4 引脚控制子系统 9.2.5 GPIO控制器驱 ...
- Linux下PCI设备驱动程序开发 --- PCI驱动程序实现(三)
<script type="text/javascript"> </script><script type="text/javascript ...
- 基于VxWorks的BSP开发指南
1 BSP概述 一个成熟的商用操作系统,其被广泛应用的必要条件之一就是能够支持众多的硬件平台,并实现应用程序的硬件无关性.一般来说,这种无关性都是由操作系统实现的. 但对于嵌入式系统来说, ...
- 嵌入式Linux设备驱动程序开发指南17(IIO子系统一)——读书笔记
IIO子系统一 十七.IIO子系统(一) 17.1 简介 17.2 数模转换--DAC实验 17.2.1 IIO缓冲区 17.2.2 触发器 17.2.3 工业I/O事件 17.2.4 iio工具 1 ...
- 嵌入式Linux设备驱动程序开发指南14(Linux设备驱动使用DMA)——读书笔记
Linux设备驱动使用DMA 十四.Linux设备驱动使用DMA 14.1 简介 14.2 缓存一致性 14.3 DMA控制器接口 14.4 流式DMA模块 14.4.1 sdma_sam_m2m.c ...
- 嵌入式Linux设备驱动程序开发指南20(Linux USB设备驱动)——读书笔记
Linux USB设备驱动 二十.Linux USB设备驱动 20.1 USB简介 20.1.1 USB2.0总线拓扑 20.1.2 USB总线枚举和设备布局 20.1.3 USB数据传输 20.1. ...
最新文章
- SecondarySort 原理
- (JavaWeb)ServletContext对象
- 性能测试方案_MeterSphere案例分享丨基于JMeter的性能测试方案演进之路
- OpenGL延迟着色之二
- mysql连接不上远程数据库_Mysql 连接不上远程数据库,求助
- uwsgi怎么通过浏览器访问某个脚本_4个Shell小技巧帮你提高机器学习效率:写好脚本,事半功倍...
- wifi android手机版下载地址,手机随身wifi下载-手机随身WiFi 安卓版v1.6.3-PC6安卓网...
- k8s停止服务_Kubernetes 服务部署最佳实践(二) 如何提高服务可用性
- linux检测不到readline,在Linux中编译Lua时“找不到-lreadline”错误
- STM32 MDK常见错误与解决
- 一篇文章教你学会实现模糊搜索结果的关键词高亮显示
- html中icon小图标大全,iconfont字体图标和各种CSS小图标
- 熊迈摄像头SDK二次开发:登录、截屏、录像等功能
- matlab矩阵对角线上下加减,matlab – 如何在相关矩阵中移动靠近矩阵对角线的较大值...
- 动态获取图片色值,黑点坐标
- 怀旧版大脚插件未能从服务器,魔兽世界怀旧服大脚插件怎么用 大脚插件安装使用攻略...
- linux桌面lxde 安装_Archlinux LXDE 桌面环境安装配置
- Planting Trees Day 植树节 一起去种树
- python中partial的使用规则
- 【Ubuntu安装git与git clone远程仓库】
热门文章
- Unity Shader 之 实现简单的动态过场切换图片的效果
- js解析一段html标签,js怎么解析html标签
- 17.4 bat开启任务和关闭任务(恼人的wpscenter.exe)
- 练剑炉之鬼面劫JAVA游戏_掌上公交如何设置竖向 更改站牌模式
- 阿里云云盘根目录扩容
- SNMP常用OID合集
- 智安网络|为什么说防火墙是我们信息安全的第一道防线?
- .pyx文件编译出错
- Tab 编程,Copilot 让你彻底解放双手,AI 帮你写代码。
- CRMEBv4.X微商城/小程序商城/公众号商城/H5商城系统