您当前位置:手机评站网 > 手机教程 >

手机评站网今天精心准备的是《驱动程序开发》,下面是详解!

什么叫驱动程序,那是干什么的?

驱动程序,指的是设备驱动程序(Device Driver),是一种可以使计算机和设备进行相互通信的特殊程序。

作用:驱动程序主要作用是计算机系统与硬件设备之间完成数据传送的功能,只有借助驱动程序,两者才能通信并完成特定的功能。驱动程序是介于操作系统与硬件之间的媒介,实现双向的传达,将硬件设备本身具有的功能传达给操作系统,同时也将操作系统的标准指令传达给硬件设备。

扩展资料:

在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。

如果需要外接别的硬件设备,则还要安装相应的驱动程序,如外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Modem甚至ISDN、ADSL的驱动程序。

驱动程序一般可通过三种途径得到,购买的硬件附带有驱动程序;Windows系统自带有大量驱动程序;从Internet下载驱动程序。最后一种途径往往能够得到最新的驱动程序。

参考资料来源:百度百科-驱动程序

如何系统的学习Linux驱动开发

无根之木不活,无基之楼不立,无论是学习哪个领域知识,基础是重中之重。
针对学习linux驱动,我们来仔细谈谈:
个人认为C语言和数据结构就是重中之重!Linux系统最优秀的地方就在于内核。无论是进程调度,内存管理,还是数据的组织形式,而这些算法的基础就是一个高效而精简的数据结构,红黑树也好,内核链表也好,看不懂C语言,搞不清数据结构,基本上谈不上做驱动。基础不扎实不要谈上层建筑,资源不全面就不要谈合作,很简单的道理。
假设楼主的C语言和数据结构都是勉强过关的(分得清指针函数函数指针,能够熟练自定义链表并进行增删改查等链表或树的算法重组)。我们来谈下一个阶段,让我们对类Unix系统的基本操作有一个基本的了解,打开文件,切换路经,更改个密码,填个用户什么的。
接下来我们来谈驱动,做驱动就得有做驱动的样子,不知道楼主之前玩过裸板51或者AVR没有,如果没有,尽快搞通,资源很多,跟着人家把电平配一遍,来个矩阵键盘,组个跑马灯,有成就感的同时也打下了硬件基础,好处大大滴。
基于操作系统的驱动,即必须了解内核对驱动程序的管理方法,怎样划分一个具体的设备,是字符型?块设备?还是别的什么,或者从总线的角度来划分一个设备,i2c也好,USB也罢,还是数据地址控制这么一个三总线形式,都是有必要掌握的东西。
上升到应用,任何一个实践项目中很难会有一个板子让你从零开始写驱动,百分之九十九是拿来改,这就是一个熟练的过程,做到一定多的东西,就会下意识地觉得,这个地方可能会有问题,我需要留意一下。
总结一下,驱动工程师其实也是一种硬件翻译型工程师,其任务就是看懂手册上的表格,然后体现在代码里面。客观地说,我们这个行业门槛较高,队友较少,不过等到真正入门之后,那种成就感是无与伦比的。

怎样从零开始学习WINDOWS下的驱动开发?

请各位不吝赐教,请指导我该先做什么,再做什么.首先介绍一下本人的情况,本人熟悉C/C++,熟悉WINDOWS下的SDK开发以及MFC.现在想要学习一下驱动程序的开发,看一点点关于怎样开发...

请各位不吝赐教,请指导我该先做什么,再做什么.
首先介绍一下本人的情况,本人熟悉C/C++,熟悉WINDOWS下的SDK开发以及MFC.现在想要学习一下驱动程序的开发,看一点点关于怎样开发驱动的东西,但感觉这样学习太乱了,我希望能有一个比较好的学习路线(步骤),以及需要了解相关的原理能内幕.
随便问一下,VXD是用来做什么的?可以用来开发WIN2000的驱动吗?学习驱动开发应该具备哪些基本知识呢?
请指教,最好不要纸上谈兵,谢谢你.
需要什么书,也请提示.

谢谢各位的回答. 展开

我没给windows做过,工作需要给wince做过

VXD是虚拟设备驱动程序,而且是9x平台特有的~ 不能用于NT类平台。NT(当然包括2000)是基于WDM (Win32 Driver Model)

基本知识的话 C和汇编是必须的~最好熟悉windows操作系统的原理

开发工具主要是DriverStudio和Windriver +DDK

推荐一本:Windows2000驱动程序设计指南

再给你个DDK的下载地址 http://board.verycd.com/t145717.html

硬件的驱动程序一般是用什么软件编写的?

C语言,C++语言,Java语言,还是说都可以呢???...

C语言,C++语言,Java语言,还是说都可以呢???

一般是用C语言或者汇编写的
驱动可不是想写就能写出来,要对C语言、汇编等语言非常了解呃,而且驱动程序要求非常简洁,而且要涉及硬件底层功能调用,C语言不能完全做到这些。

更多扩展补充

扩展

C++语言,Java语言完全不能写驱动程序吗?

补充

也可以,不过现在用C+,汇编好编写一些,也不是说一定要用这两种才能编写,用其他语言也可,只是目前用这两种的人多一些。

扩展

开始说"一般是用C语言或者汇编写的",后来说“现在用C+,汇编好编写一些”,C+和C可是不一样的啊!!!

补充

多了个+呃

如何配置驱动程序开发环境

安装以上两款软件到电脑
2
打开vs2010
环境配置

3
新建VC 控制台项目(选择为空项目)

配置属性-常规
配置属性-C/C++-常规

配置属性-C/C++-预处理器

配置属性-C/C++-代码生成

配置属性-C/C++-高级

配置属性-链接器-常规
我们看到路径是…\WXP\i386,意思就是针对Windows XP系统和i386架构CPU,如果想编译其他系统,或者其他CPU的驱动,修改此路径即可。

配置属性-链接器-输入

配置属性-链接器-清单文件

配置属性-链接器-系统

配置属性-链接器-高级

做设备驱动程序开发的还有啥前景吗

做设备驱动程序开发的还有啥前景吗...

做设备驱动程序开发的还有啥前景吗

只有软硬件同时进行才最有前途。
等于两条腿走路。
如果一条坏了,还可以用另外一条。
一般最好从单片机开始学起。。
因为单片机既有硬件,又有软件汇编语言。。
最少学会学懂汇编语言,再学其他编程语言就很容易了。。即使从此走向软件编程,也会比其他软件开发人员懂得更深刻。。现在的软件编程多是知其然不知其所以然。
最少要知道一个根本:所有软件开发,都是为硬件服务的。。不管是驱动还是应用开发,如果对硬件没有了解,真正遇到问题都会变成瓶颈,最后要想提高都会从头来补硬件知识的课才能真正成为高级软件开发者

如何取得Windows驱动程序的数字签名?通过之后驱动...

驱动程序的数字签名是电脑硬件和驱动程序可靠性和兼容性的一个标志。原来,早在Windows 9x时代,通过大量的用户调查,微软公司就发现之所以有操作系统蓝屏错误的发生往往与不可靠的硬件和编制不良的驱动程序有关。蓝屏错误的专业术语叫GP错,即General Protect Error,是用户最讨厌看到的东西了,因为一旦出现了这个画面,多数情况意味着用户的数据已经无法挽回了,只有关机重开或者按Reset键“掐人中”了。

让我们来看看GP错与驱动程序的关系。Windows操作系统中把内存划分为核心模式区和用户模式区两部分,在核心模式区内运行操作系统自身的管理代码和硬件驱动程序这些“底层”的软件,而用户模式区内运行的是应用程序,如MS Word或Adobe Photoshop等等。我们日常接触到的软件大都属于应用程序,都运行在用户模式下,包括Windows自身的用户界面也都是运行在用户模式下的。运行在用户模式下的应用程序的共同特点是即使发生了错误,也只影响到这个程序本身,比如Word死掉了,我们可以使用“任务管理器”将它强制关闭,Word中的数据可能丢失但操作系统中其他软件仍可运行,这就是所谓的操作系统保护。这时并不会发生蓝屏错误。但核心模式下的软件一旦发生错误,就会有蓝屏发生了,因为操作系统队核心模式下基本上没有保护,所以就会发生“保护错”(General Protect Error)。

Windows操作系统本身运行在核心模式下的程序往往经过微软公司内部比较系统全面的测试,所以在用户使用中由于Windows核心程序出错而导致蓝屏错误的情况很少。驱动程序是由各个硬件厂家配合他们出品的计算机硬件提供的,多数的名牌大厂也能做到合理的开发和完善的测试,都有着严格的质量控制体系,所以一般也很少出问题。但一些小厂商为了赶开发进度或者降低成本,兼容性测试和质量控制会不够完善,往往会将一些隐含缺陷的驱动程序搭配硬件出售。用户购买了这样的产品就带来了使用中的隐患。微软公司发现多数的蓝屏都是由于这样的原因。这也是杂牌小厂的产品往往质量上不如名牌大厂产品的一个原因。使用不可靠的硬件往往会发生电脑莫名其妙地突然死机、自动重起或者蓝屏。过去人们往往归罪于微软,指责Windows操作系统不稳定,微软感到十分委屈,无端被了不良硬件厂家的黑锅。不过操作系统是电脑最基本的软件平台,微软也应该为整机的稳定性承担必要的责任。为了提高整机系统的稳定性,减少用户对操作系统的指责,微软推出了一个机制来识别“好的”和“不好的”驱动程序,对于一个“好的”驱动程序,则配上一个扩展名为.cat的文件,使用加密算法记录这个驱动程序由哪些文件构成,这些文件是否都是原始文件,是否都没有被修改,这个文件将与这个驱动程序文件放在一起,成为驱动程序的一部分,这个文件就被叫做该驱动程序的数字签名。

那么硬件厂商或开发者自己开发了一个新的驱动程序后,怎样能像一个名牌大厂那样为驱动程序搭配上这样一个文件呢?当前,微软公司对数字签名文件的管理很严格,必须到微软的硬件质量实验室(Windows Hardware Quality Lab,按各单词字头缩写简称为WHQL)去申请才行,幸好这个申请手续并不复杂。微软WHQL推出了一套不断更新的测试软件就叫HCT(Hardware Compatibility Test,即硬件兼容性测试),这个测试工具集可以在微软的网站上免费下载到最新版本,当前刚刚发布了12.1版本,驱动程序的开发人员可以使用HCT这个工具对自己的驱动程序进行测试,如果这些测试项目都能通过,就可以通过因特网向WHQL申请数字签名了,当然微软公司要对每次申请收取250美金的申请费用,不过这笔费用对于一个即将在市场上批量销售的产品就不算多了。

HCT这个测试工具是既复杂又简单的。说它复杂是在于它包含了整机和部件几乎所有方面的测试内容,比如对于Data Center服务器有关的认证测试中最严格的一些项目都要求连续14天的连续运行测试。说它简单,是因为HCT中多数的测试都是自动测试,使用起来很轻松。即使是手工测试,通常也只需要进行一些简单的操作,并且有详细的联机文档可以给测试者提供详尽帮助。从这一点来说,即使是非专业人员也可以拿来使用,所以建议DIY的朋友们在攒完一台新电脑后,立即运行一遍HCT中的System test(系统测试),你的新机好坏就一目了然了。
下面我们就细说一下HCT这个测试工具集。HCT针对测试对象可分为两大类,系统测试和部件测试,系统测试又分为台式机,笔记本和服务器的测试,部件测试则分为声卡、网络设备、打印机、扫描仪等图形图像设备等。HCT测试是十分全面的,即使硬件设备不再以上分类中,那么仍可归类为Unclassified Device,即“未归类设备”。显示卡的测试是个例外,它作为单独的测试工具集DCT并不包含在HCT工具集中,需要单独下载,当前最新的DCT是5.3版本,需要在微软网站上单独下载。

从测试机理来说,HCT包括几个方面的测试,首先是总线方面的测试。计算机内外部件从系统架构上来看都是从属于几个总线上的,如PCI总线、USB总线或1394总线。HCT中就包括对这些总线有关的测试,如针对PCI设备就会有PCI Compliance Test,来检测这个被测硬件是否严格符合PCI规范的各种电气方面和功能方面的要求。如USB设备则有USB Address Descrīption Test、USB Device Framework(CV)等等。

再一类是驱动程序开发有关的测试,如ChkINF测试来检查驱动程序安装配置文件inf文件是否符合标准要求,对于想取得数字签名的驱动程序,该Inf文件必须包含一行catalogfile=xxx.cat,这是指出应有一个数字签名文件与这个驱动程序对应,因为这个cat文件来自微软公司,所以在HCT测试时还没有这个文件,但也要保留这样一行,因为如果一旦获得了数字签名文件,那么经过测试的这些文件就都不能有任何更改了,包括inf文件,所以一定要在取得数字签名文件前就在inf文件中增加这样一行。
另一类是有关功能方面的测试,如打印机测试会包括打印各种文本、图形图像的测试,Modem测试会包括传真和各种数据传送等与该设备功能有关的测试。
还有一类是ACPI有关的测试。ACPI是Advanced Computer Power Interface的缩写和简称。ACPI使PC机支持待机、休眠等各种省电状态,使用这些功能还能够改善开机速度,给用户带来很大的方便,但这一类功能也是当前设备支持较差的一个方面。很多设备对待机和休眠功能的支持都不完善,DIY者们尤其应该注意。
为新开发的硬件驱动程序申请数字签名,就要满足上述4大类的HCT测试项的严格检测,可以看出,即使不申请数字签名,应用这些测试到电脑硬件的研发环节中,对提高产品质量也是十分重要的。微软公司为鼓励硬件开发者通过WHQL测试来提高硬件及其驱动程序的兼容性和可靠性,还为WHQL申请者提供一系列的增值服务,目前通过WHQL测试的硬件产品,不但可以得到数字签名,取得最终用户更大的信任,还可以授权使用一个漂亮的徽标,这个徽标叫Designed for Windows Logo,译成中文就是“针对Windows而设计”徽标,这样购买带有数字签名的高质量硬件,用户并不需要去安装该硬件的驱动程序来检查它是否包含数字签名,而可以容易地从硬件产品的包装盒上一目了然地了解该产品的质量情况,有点像咱们国家的食品质量安全认证QS标志。我现在购买包装食品都要看是否有QS标志,它表示该食品的生产环节是符合国家有关的食品卫生标准的,是符合市场准入的质量要求的。同样选购心爱的电脑硬件也要看看它的包装盒上是否有Designed for Windows 标志。用户也可以在很多品牌电脑上看到这样的标志,这说明这个型号的整机是通过WHQL认证的,很多大企业采购电脑时都是以这个标志为基准的,但广大用户要注意的是,目前市场上的品牌电脑也是良莠不齐,包括很多知名品牌,他们的电脑也都没有这个标志,对于这样的产品,用户选购时可要三思而行呀。
从驱动程序开发的角度来说,要通过完整的WHQL测试也还是很有难度的,这是因为,HCT测试中不但包含了在标准场景下对驱动程序的检验,还包括一些苛刻条件下的测试,比如说所有驱动程序HCT测试中都包括的Driver Verifier Test Driver Path Exerciser Test测试,都是模拟在极端条件下,驱动程序的健壮性。Driver Verifier Test会像驱动程序发送大量的异常数据,驱动程序必须依照Windows的驱动程序开发的标准模型对这些异常数据进行妥善的处理,否则HCT测试是过不去的。这种测试,模仿了用户长期使用中可能遇到的偶然情况,如果驱动程序处理不好,就会发生蓝屏死机之类的故障,虽说是小概率事件,但是被谁遇到都不会愉快。而一般的常规测试都很难发现这类问题。不过对于这一类的问题可以通过建立一套双机互连的调试系统来实施跟踪调试 ,立即发现出问题的代码段,依照驱动程序开发包(DDK)的要求修正就可以了。另外一个好消息是虽然WHQL认证的机构在美国微软,但微软中国技术中心现在对国内的厂商和驱动程序开发者提供一些免费的与WHQL有关的支持。如果有什么特别的难题不易处理,可以与他们联络得到来自微软内部的支持。

数字签名可以简单地鉴别出“可靠”与“不可靠”驱动程序,所以DIY们在网上下载驱动时应尽可能选择WHQL认证的驱动程序。购买电脑硬件产品时,应应该了解清楚该硬件是否是经过Windows硬件质量认证的,是否有Designed for Windows标志。驱动程序的数字签名给硬件厂商带来了挑战,却为最终用户带来了实惠。

驱动程序 都是用什么语言写的!

什么语言写驱动最好啊现在普遍都是用什么写的驱动!...

什么语言写驱动最好啊
现在普遍都是用什么写的驱动!

现在好像都是用c,c++写的
以前用汇编,太慢了,所以现在改变了
但是如果对速度要求很厉害的函数,还必须用汇编
比如显卡驱动

如何学习android 驱动开发

 随着智能手机的飞跃发展,特别是Android智能机的爆炸性发展,Android驱动工程师是越来越受欢迎的一个职位,而且是一个非常值得人期待的职位,因为可能你参与研发的一款手机就能改变了很多人的生活,所以,进阶吧,Android驱动程序猿,那怎样成为一名优秀的Android驱动程序猿,我来发表一下我的意见吧,希望各位网友不要轻易拍砖。

  Android驱动的基础知识
  首先作为Android驱动程序猿,你必须清楚的了解你要做的是什么,平时需要用到的基础知识,对Android的基本框架的了解还是非常的有必要,对linux下的编程基础也需要了解,因为严格来说,Android驱动是基于Linux驱动,个人强烈推荐阅读Linux Device Driver 3rd版,这本书讲了Linux下设备驱动的基础知识,作为Android驱动程序猿,你需要能最好读懂这本书,而且是反复的阅读这本书,因为我发现每次重新读这本书,都有新的收获,这本书很值得一读,强烈五星级推荐;而且还要会基本的C编程,能很好的读懂和编写一些C程序,而且懂一些基础的Java那就更好了,因为Framework层的代码与驱动层的代码联系也比较紧密,稍微懂一些Java代码,你会发现你对整个驱动框架的了解会更加的熟悉,相关的Linux编译脚本和Linux编译体系,因为商业开发的一些原因,Android本身的文件架构体系可能会被一些编译脚本而改变,加入新设备驱动,你需要了解整个的驱动编译体系,那样书写驱动程序也会更加的清晰!
  \
  Android/Linux相关驱动框架知识
  为详细了解一下Android驱动程序员需要会的技术,我特意百度了各家Android驱动程序员招聘需求对Android程序猿的要求,选择哪几家呢,国产手机的代表,中兴,华为,酷派,联想,小米,魅族,VIVO都是非常不错的国产手机厂商,而且研发的Android智能手机越来越好,我甚至还专门去看了一下新兴Android智能机公司,包括锤子手机官网的Android驱动工程师招聘需求,One Plus One的官网连个加入我们的链接都木有,创业型的公司不知道是人才暂时饱和,还是啥原因,居然没有招聘信息,汇总发现,这些公司要求差异不是特别大,出了需要基本的Android调试能力,你还需要对Android各模块驱动框架的了解,比如,某锤科技的Android驱动工程师招聘需求,大伙可以去试试,锤子手机号称是在做最好的手机,比目前的旗舰手机都要好一点点,加入它,还蛮有期待的! \ 某米公司的Android驱动工程师也需要Android/Linux相关的知识,中兴和联想的Android招聘需求就比较笼统了,估计是大公司的缘故吧, \ 中兴的官网居然开始找不到驱动工程师的招聘,我的个神,废了我好大劲,才找到相关的招聘信息! \
  相关的硬件知识和通信知识
  Android驱动平时工作就是调试各种外围设备,是直接跟硬件打交道的职位,需要你看的懂电路原理图,了解基本的显示原理和基本的摄像头成像原理等等,这是跟你平时工作非常相关的基础知识,做Android智能手机,你也需要了解基本的通信相关知识,射频原理和基本的Modem相关知识,只有懂相关的硬件知识和通讯设备相关的基础知识,你才可以写出更好的Android驱动程序,才能调试出更满意的效果!

  热爱驱动开发和不断学习
  其实这点是非常的重要,应该摆在第一位,首先是你必须喜欢这份工作,你才可以做的更好,兴趣是最好的老师,这句话是真心的大实话,而目前的社会状态是什么赚钱,就一窝蜂的冲去做那个,结果,最后可能做的很不开心,然后,钱也没捞到;如今,我的大学同学很有一部分都放弃了所学的专业对口工作,有去卖保险的,有去工厂做普工的,有去做销售的,有去吃铁饭碗的,当然职业肯定不分贵贱好坏,我说这一点,主要是建议大家去坚持最初的梦想!我的梦想就是做出一款可以改变人们生活的移动终端,让这个世界因为我而有一点点的不同,童鞋们,一起坚持梦想吧! 此外,做Android驱动工程师需要的是不断的学习,时刻保持着一股激情,不断的学习才能更好的完成日常的驱动开发任务,并能保持对开发的的敏锐感觉,我觉得乔布斯的:Stay hungry,Stay foolish说的很好,一直被当做是我的座右铭,来激励我坚持做一个更好的Android驱动工程师,写这篇博客的目的就是分享我的一些小看法,日后我还是会不断更新我的博客,分享一些驱动开发相关的文档和博客,和广大的驱动程序猿一起进步!

来源: 手机评站

热门手机排行榜

  1. 1Redmi K20¥1999
  2. 2vivo Z5x¥1398
  3. 4realme X¥1499
  4. 5vivo X27¥3598
  5. 6一加 6¥3199
  6. 9荣耀 Magic2¥3799
  7. 10三星 Note9¥6999

Copyright © 2016-2019 手机评站网(www.pingzhan.net)版权所有

业务联系: