您现在的位置是: 首页 > 系统优化 系统优化

硬件驱动程序编写入门_硬件驱动程序编写入门教程

ysladmin 2024-05-15 人已围观

简介硬件驱动程序编写入门_硬件驱动程序编写入门教程       对于硬件驱动程序编写入门的问题,我有一些经验和见解,同时也了解到一些专业知识。希望我的回答对您有所帮助。1.驱动程序是什么2.什么是驱动程序3.嵌入式驱动开发需要学什么4.Windows设备驱动

硬件驱动程序编写入门_硬件驱动程序编写入门教程

       对于硬件驱动程序编写入门的问题,我有一些经验和见解,同时也了解到一些专业知识。希望我的回答对您有所帮助。

1.驱动程序是什么

2.什么是驱动程序

3.嵌入式驱动开发需要学什么

4.Windows设备驱动程序WDF开发的本书内容

5.电脑驱动程序的工作原理

6.驱动程序是什么?

硬件驱动程序编写入门_硬件驱动程序编写入门教程

驱动程序是什么

       驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备进行相互通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。因此,驱动程序被比作“ 硬件的灵魂”、“硬件的主宰”、“硬件和系统之间的桥梁”等。

什么是驱动程序

       嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,冬雪终将化去,春风定会吹来。

       具体步骤如下:

       1、《C语言》第二版 谭浩强 ; 《C程序设计语言》第二版 徐宝文译 机械工业出版社

        你能区分开指针数组和数组指针吗?你知道函数指针吗?

        你能区分开定义一个变量时系统给它分配的空间与用malloc()函数给一个变量分配的空间有什么不一样吗?

       2、《数据结构》C语言版 黄国愉、叶乃青编 清华大学出版社

        你能合上书本,用C语言实现书中的单链表、双链表数据结构吗?

       3、《实用C++程序设计》第二板 中国电力出版社 Steve_Oualline著

        此阶段主要是学习其面向对象的编程思想,加深对C语言和数据结构的理解。

       4、学习单片机,最好能找个前辈带一带。

        你能用51单片机做出一样实际的东西吗?即使它再简单!

        要注意加深对中断的理解。

       5、学习ARM单片机。

        (1)、细读《ARM微控制器基础与实战》周立工编写(注:即使你不用书中的开发板)

        (2)、细读相关芯片的原版英文文档。如:arm920TE.pdf S3C2410_1.2.pdf

       6、学习uCOS!!操作系统。

        (1)、细读《嵌入式实时操作系统uC/OS-!!》第二版 召贝贝译

        你能把uCOS!!移植到自己的平台上吗?

        (2)、能编写在uCOS!!操作系统环境下运行的针对具体硬件的驱动程序

       7、熟悉Linux环境,学习Linux环境编程,学习交叉编程

        (1)、细读《linux命令大全.pdf》

        (2)、细读《GNU Make 使用手册(中译版).pdf》

        (3)、学习创建交叉编程环境.

       8、学习Linux操作系统。

        (1)、《UNIX环境高级编程》

        (2)、细读“joyfire 笔记”,可在“www.qianrushi.com”网站的好书下载栏目获取

        (3)、细读《linux内核完全注释》

        (4)、细读《understanding the linux kernel 2》

        (5)、利用源代码阅读利器工具”Source Insight”进行真正的linux内核原码刨析

        (6)、最后进行内核移植,并能编写在linux操作系统环境下运行的针对具体硬件的驱动程序

       9、学习Linux设备驱动编写。可参考《Linux设备驱动程序》

嵌入式驱动开发需要学什么

       什么是驱动程序?

       什么是驱动程序?

       在计算机领域,驱动程序(英文名称:driver)是指一种软件或者程序,用于让计算机系统和硬件设备之间进行交互和通信。

       驱动程序的作用是什么?

       首先,我们知道计算机系统通常需要与硬件设备进行交互才能完成各种任务。例如,如果您想用打印机打印一份文档,就需要与打印机建立连接并发送指令,才能完成打印任务。而驱动程序就是用来实现这种任务的关键。

       驱动程序具体的作用包括以下几个方面:

       1.提供对硬件设备的控制和管理功能:驱动程序通常会提供一些API(ApplicationProgrammingInterface,应用程序接口),例如读取数据、写入数据、设置参数等,以便让应用程序进行针对具体硬件设备的操作。

       2.调节硬件设备和计算机系统之间的通信:驱动程序可以确保数据传输的正确性和可靠性,通过优化数据的传输速度等方式来提高硬件设备的效率。

       3.兼容不同的硬件设备:由于不同的硬件设备具有不同的工作方式和规范,因此驱动程序需要兼容不同的硬件设备,在处理各种类型的硬件设备时保持兼容性。

       驱动程序的分类

       根据不同的硬件设备,驱动程序可以分为不同的类型。例如:

       1.显卡驱动程序:用于调节显示器、投影仪等显示设备的功能,以满足用户对图形和视频的需求。

       2.声卡驱动程序:用于控制音频设备,实现音乐、语音和其他音效的播放功能。

       3.网卡驱动程序:管理计算机系统与局域网、互联网等通信的硬件设备的驱动程序。

       4.存储设备驱动程序:可以帮助计算机系统读取、写入硬盘、U盘、SD卡等存储设备中存储的数据。

       总结

       驱动程序是计算机系统中必不可少的组成部分,它们为硬件设备的操作和管理提供了基础。驱动程序的作用是调节硬件设备和计算机系统之间的通信,为应用程序提供API,控制硬件设备并检测错误问题。了解驱动程序的分类和功能对于计算机用户非常重要,因为这有助于用户维护和优化计算机系统的性能。

Windows设备驱动程序WDF开发的本书内容

       嵌入式驱动开发需要学以下:

       一:C语言

       嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。

       二:Linux基础

       Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。

       三:Linux系统编程

       重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。

       四:Linux网络编程

       计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。

       重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。

       五:数据结构与算法

       数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。

       此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。

       六:C++ 、QT

       C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。

       由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。

       包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。

电脑驱动程序的工作原理

       本书主要讨论KMDF,KMDF是WDM的继续,可以把WDM驱动程序转换为KMDF驱动程序。还对UMDF设备驱动程序作了编程入门介绍。

       过去,我研究过如何用DriverStudio开发工具开发Windows下的WDM设备驱动程序,承蒙电子工业出版社的厚爱,出版了《Windows 2000/XP WDM设备驱动程序开发》一书。

       WDF的简单化编程,导致DriverStudio退出了Windows设备驱动程序的开发,将DriverStudio定格在3.2版本。

       从形式上看,KMDF的对象和DriverStudio的类,具有相似的地方。本书的内容安排和《Windows 2000/XP WDM设备驱动程序开发》的基本一致,具体安排如下:

       章 名 主 要 内 容

       第1章 Windows 2000和WDM驱动程序 KMDF是WDM的继续,KMDF构建在WDM之上。对于一些Windows驱动程序的基本概念,初学者仍需要了解,如Windows 2000中的组件、驱动程序种类,以及WDM驱动程序特点等

       第2章 KMDF驱动程序框架 KMDF驱动程序框架由对象和事件回调例程构成。KMDF框架中所有的事物都由对象来表示,各种事件处理都由事件回调例程来完成。学习KMDF编程,主要是学习KMDF的各种对象、对象函数和事件回调例程的编程

       第3章 基本对象 KMDF提供了许多对象,本章只介绍一些基本的对象,如WDFREQUEST对象、WDFQUEUE对象等,还介绍了数据同步访问、字符串操作和QueueSample实例

       第4章 KMDF驱动程序编程入门 介绍Windows Vista下的KMDF驱动程序编程入门,包括KMDF驱动程序编程环境的建立,KMDF的创建、生成及安装过程,以及Win32 Console和MFC两种应用程序的编程

       第5章 KMDF驱动程序和应用程序之间的通信 介绍应用程序与KMDF之间的通信,包括应用程序对KMDF的通信,以及KMDF对应用程序的通信

       第6章 即插即用例程 主要介绍PnP组件、即插即用例程的加载和卸载顺序及PnpPowerSample实例等

       第7章 电源管理 主要介绍系统电源状态与设备电源状态、电源管理控制标志位、设备的唤醒特征和空闲检测、电源管理编程及IdleSample实例等

       第8章 KMDF过滤器驱动程序 描述如何写一个过滤器驱动程序,该驱动程序可位于功能驱动程序的上面或下面,它通过过滤流经它的IRP来修改设备的行为

       第9章 USB设备开发 主要介绍USB设备的配置/接口/端点、USB数据的传输方式、USB描述符、USB编程对象、USB编程(如激活配置与中止配置、同步操作、异步操作)及USBSample实例等

       第10章 PCI设备驱动程序开发 本章就硬件访问、中断处理和DMA传输3个方面展开讨论,并以CY7C09449芯片为例,给出一个经过测试的PCI设备驱动程序实例——PCISample实例。另外,还给出了一个不依靠硬件设备的DMASample实例

       第11章 UMDF驱动程序编程入门 介绍UMDF驱动程序编程入门,包括UMDF驱动程序的创建、生成及安装,以及一个简单的实例编程

       第12章 WinDbg使用介绍 WinDbg是微软提供的一个功能非常强大的调试软件,可以在源代码级别调试Windows下的WDF驱动程序。本章主要介绍用WinDbg调试KMDF和UMDF

       微软推荐的WDF书籍是《Developing Drivers with the Microsoft Windows Driver Foundation》,作者是Penny Orwick和Guy Smith。

       微软提供的学习WDF的中文网站地址是:www. microsoft. com/china/whdc。

       开发工具

       微软提供的WDF驱动程序开发工具包WDK的最新版本是WDK 1.7,可以从其网站下载。

       本书实现WDF驱动程序及应用程序实例所用的工具是:Visual C++ 6.0和WDK 1.7。

       本书配套光盘

       本书配套光盘中含有书中所有实例的驱动程序和应用程序的全部源代码,以及生成的驱动程序和可执行的应用程序。除USBSample和PCISample实例因需要硬件设备的支持,读者无法运行外,其他11个实例均可在Windows XP和Vista下运行。

       本书特点

       编程入门:详细的步骤介绍,初学者的良师益友。

       应用实例:对程序作了必要的注释,了解驱动程序编程的捷径。

       简单实用:KMDF的编程非常简单,Winows硬件开发工程师必须掌握。

       理解深刻:笔者精通Winows设备驱动程序开发和硬件开发,所有实例均为自己创造,每个实例都有其独特意义,笔者用实例诠释自己对KMDF的理解和认识。

       微软推荐的WDF书籍是“理论派”,以讲解理论为主,讲得非常详细和全面;本书是“实战派”,全书以实例为主,用实例带你快速入门。

       善于学习,勤于思考,勇于实践。用这句话与投身硬件开发的青年学子共勉。

       希望这本书能对您现在或将来的工作有所帮助。

       本书得以顺利出版,要特别感谢周利莉的一贯支持;感谢何海洋和赵庆花的支持;感谢陈建波和何亚垒的支持;感谢朱沭红编辑和电子工业出版社。

       由于作者的理论水平有限,书中难免出现差错和遗漏,敬请广大计算机应用开发人员批评指正,

       十年时间,跟踪Windows设备驱动程序的开发,驱动程序VxD->WDM->KMDF,工具VtoolsD->DDK、DriverWorks->WDK,但愿WDF长久。别了WDM,别了DriverStudio。

       缺月挂疏桐,漏断人初静。谁见幽人独往来,缥缈孤鸿影。……

       武安河

       2009年元旦

驱动程序是什么?

       资料来源: /view/1048.htm一、什么是驱动程序

       根据百度百科:驱动程序,英文名为“Device Driver”,全称为“设备驱动程序”, 是一种可以使计算机和设备通信的特殊程序,可以 说相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 因此,驱动程序被誉为“ 硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。

       刚安装好的系统操作系统,很可能驱动程序安装得不完整。硬件越新,这种可能性越大。菜菜熊之前看到的“图标很大且颜色难看”就是没有安装好驱动的原因。

       在软件测试中:在自底向上测试中,要编写称为测试驱动的模块调用正在测试的模块。测试驱动模块以和将来真正模块同样的方式挂接,向处于测试的模块发送测试用例数据,接受返回结果,验证结果是否正确。

       二、驱动程序的作用

       随着电子技术的飞速发展,电脑硬件的性能越来越强大。驱动程序是直接工作在各种硬件设备上的软件,其“驱动”这个名称也十分形象的指明了它的功能。正是通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果。

       硬件如果缺少了驱动程序的“驱动”,那么本来性能非常强大的硬件就无法根据软件发出的指令进行工作,硬件就是空有一身本领都无从发挥,毫无用武 之地。这时候,电脑就正如古人所说的“万事俱备,只欠东风”,这“东风”的角色就落在了驱动程序身上。如此看来,驱动程序在电脑使用上还真起着举足轻重的 作用。

       从理论上讲,所有的硬件设备都需要安装相应的驱动程序才能正常工作。但像CPU、内存、主板、软驱、键盘、显示器等设备却并不需要安装驱动程序也可以正常工作,而显卡、声卡、网卡等却一定要安装驱动程序,否则便无法正常工作。这是为什么呢?

       这主要是由于这些硬件对于一台个人电脑来说是必需的,所以早期的设计人员将这些硬件列为BIOS能直接支持的硬件。换句话说,上述硬件安装后就 可以被BIOS和操作系统直接支持,不再需要安装驱动程序。从这个角度来说,BIOS也是一种驱动程序。但是对于其他的硬件,例如:网卡,声卡,显卡等等 却必须要安装驱动程序,不然这些硬件就无法正常工作。

       三、驱动程序的界定

       驱动程序可以界定为官方正式版、微软WHQL认证版、第三方驱动、发烧友修改版、Beta测试版。

       1、官方正式版

       官方正式版驱动是指按照芯片厂商的设计研发出来的,经过反复测试、修正,最终通过官方渠道发布出来的正式版驱动程序,又名公版驱动。通常官方正 式版的发布方式包括官方网站发布及硬件产品附带光盘这两种方式。稳定性、兼容性好是官方正式版驱动最大的亮点,同时也是区别于发烧友修改版与测试版的显著 特征。因此推荐普通用户使用官方正式版,而喜欢尝鲜、体现个性的玩家则推荐使用发烧友修改版及Beta测试版。

       2、微软WHQL认证版

       WHQL是Windows Hardware Quality Labs的缩写,是微软对各硬件厂商驱动的一个认证,是为了测试驱动程序与操作系统的相容性及稳定性而制定的。也就是说通过了WHQL认证的驱动程序与Windows系统基本上不存在兼容性的问题。

       3、第三方驱动

       第三方驱动一般是指硬件产品OEM厂商发布的基于官方驱动优化而成的驱动程序。第三方驱动拥有稳定性、兼容性好,基于官方正式版驱动优化并比官 方正式版拥有更加完善的功能和更加强劲的整体性能的特性。因此,对于品牌机用户来说,笔者推荐用户的首选驱动是第三方驱动,第二选才是官方正式版驱动;对 于组装机用户来说,第三方驱动的选择可能相对复杂一点,因此官方正式版驱动仍是首选。

       4、发烧友修改版

       发烧友令笔者首先就联想到了显卡,这是为什么呢?因为一直以来,发烧友很常都被用来形容游戏爱好者。笔者的这个想法也正好和发烧友修改版的诞生 典故相符的,因为发烧友修改版的驱动最先就是出现在显卡驱动上的,由于众多发烧友对游戏的狂热,对于显卡性能的期望也就是比较高的,这时候厂商所发布的显 卡驱动就往往都不能满足游戏爱好者的需求了,因此经修改过的以满足游戏爱好者更多的功能性要求的显卡驱动也就应运而生了。如今,发烧友修改版驱动又名改版 驱动,是指经修改过的驱动程序,而又不专指经修改过的驱动程序。

       5、Beta测试版

       测试版驱动是指处于测试阶段,还没有正式发布的驱动程序。这样的驱动往往具有稳定性不够、与系统的兼容性不够等bug。尝鲜和风险总是同时存在的,所以对于使用Beta测试版驱动的用户要做好出现故障的心理准备。

       四、驱动程序介绍

       驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。

       正因为这个原因,驱动程序在系统中的所占的地位十分重要,一般当操作系统安装完毕后,首要的便是安装硬件设备的驱动程序。不过,大多数情况下,我们并不需要安装所有硬件设备的驱动程序,例如硬盘、显示器、光驱、键盘、鼠标等就不需要安装驱动程序,而显卡、声卡、扫描仪、摄像头、Modem等就需要安装驱动程序。另外,不同版本的操作系统对硬件设备的支持也是不同的,一般情况下版本越高所支持的硬件设备也越多,例如笔者使用了Windows XP,装好系统后一个驱动程序也不用安装。

       设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。

       所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。

       驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia 显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。

       当你在安装新硬件时总会被要求放入“这种硬件的驱动程序”,很多人这时就开始头痛。不是找不到驱动程序的盘片,就是找不到文件的位置,或是根本不知道什么是驱动程序。比如安装打印机这类的硬件外设,并不是把连接线接上就算完成,如果你这时候开始使用,系统会告诉你,找不到驱动程序。怎么办呢?参照说明书也未必就能顺利安装。其实在安装方面还是有一定的惯例与通则可寻的,这些都可以帮你做到无障碍安装。

       在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。如果你需要外接别的硬件设备,则还要安装相应的驱动程序,如:外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Moden甚至ISDN、ADSL的驱动程序。说了这么多的驱动程序,你是否有一点头痛了。下面就介绍Windows系统中各种的不同硬件设备的驱动程序,希望能让你拨云见日。

       在Windows 9x下,驱动程序按照其提供的硬件支持可以分为:声卡驱动程序、显卡驱动程序、鼠标驱动程序、主板驱动程序、网络设备驱动程序、打印机驱动程序、扫描仪驱动程序等等。为什么没有CPU、内存驱动程序呢?因为CPU和内存无需驱动程序便可使用,不仅如此,绝大多数键盘、鼠标、硬盘、软驱、显示器和主板上的标准设备都可以用Windows自带的标准驱动程序来驱动,当然其它特定功能除外。如果你需要在Windows系统中的DOS模式下使用光驱,那么还需要在DOS模式下安装光驱驱动程序。多数显卡、声卡、网卡等内置扩展卡和打印机、扫描仪、外置Modem等外设都需要安装与设备型号相符的驱动程序,否则无法发挥其部分或全部功能。驱动程序一般可通过三种途径得到,一是购买的硬件附带有驱动程序;二是Windows系统自带有大量驱动程序;三是从Internet下载驱动程序。最后一种途径往往能够得到最新的驱动程序。

       供Windows 9x使用的驱动程序包通常由一些.vxd(或.386)、.drv、.sys、.dll或.exe等文件组成,在安装过程中,大部分文件都会被拷贝到“Windows\ System”目录下。

       五、驱动程序的开发

       驱动程序的开发工作是很具挑战性的,因为必须配合著硬件与软件上相当明确与高级的平台技术。由于大多数的驱动程序(device drivers)运行在内核模式(kernel mode),软件的错误经常造成系统严重的不稳定,例如蓝屏(blue screen),这跟过去的用户模式(user mode)下的程序设计(例如Delphi、VB、Java)有明显的差异性。

       Windows平台

       为了大量减轻驱动程序开发人员的负担,微软不断的改进驱动程序的开发软件与架构,从早期复杂深晦的VxD,到Windows XP上的Windows Driver Model(以下简称WDM)开发架构,如今Windows Driver Foundation(以下简称WDF)已成为新一代的Windows平台驱动程序发展架构,这个架构大量简化了驱动程序的开发流程,更符合面向对象的精神,此架构包含了UserMode Driver Framework 与 Kernel Mode DriverFramework两种开发模式。在开发Windows平台上的驱动程序之前,必须先安装DDK包,目前DDK最新版本为5600,同时支持WDM与WDF两种架构。

       Linux平台

       Linux作为UNIX的一个变种,继承了UNIX的设备管理方法,将所有的设备是具体的文件,通过文件系统层对设备进行访问。 这种设备管理方法可以很好地做到“设备无关性”,可以根据硬件外设的更新进行方便的扩展。

       Linux中的设备大致可以分为三类:字符设备,块设备,网络设备。

       字符设备没有缓冲区,以字节为单位顺序处理数据,不支持随机读写。常见的字符设备如普通打印机、系统的串口、终端显示器、嵌入式设备中的简单按键、手写板等。

       块设备是指在输入输出时数据处理以块为单位的设备,一般都采用缓冲技术,支持数据的随机读写。典型的块设备有硬盘、光驱等。

       字符设备和块设备面向的上一层是文件系统层。对用户来说,块设备和字符设备的访问接口都是一组基于文件的系统调用,如read, write等。

       网络设备与块设备和字符设备不同,网络设备面向的上一层是网络协议层。设备文件是一个唯一的名字(如eth0),在文件系统中不存在对应的节点项。内核和网络驱动程序之间的通信使用的是一套和数据包传输相关的函数,而不是read, write等。

       每一个设备都有一对主设备号、次设备号的参数作为唯一的标识。主设备号标识设备对应的驱动程序;次设备号用来区分具体驱动程序的实例。主设备号的获取可以通过动态分配或指定的方式。在嵌入式系统中外设较少,一般采用指定的方式。

       n [编辑本段]驱动程序的一般安装顺序  驱动程序安装的一般顺序:主板芯片组(Chipset)→显卡(VGA)→声卡(Audio)→网卡(LAN)→无线网卡(Wireless LAN)→红外线(IR)→触控板(Touchpad)→PCMCIA控制器(PCMCIA)→读卡器(Flash Media Reader)→调制解调器(Modem)→其它(如电视卡、CDMA上网适配器等等)。不按顺序安装很有可能导致某些软件安装失败。

       第一步,安装操作系统后,首先应该装上操作系统的Service Pack(SP)补丁。我们知道驱动程序直接面对的是操作系统与硬件,所以首先应该用SP补丁解决了操作系统的兼容性问题,这样才能尽量确保操作系统和驱动程序的无缝结合。

       第二步,安装主板驱动。主板驱动主要用来开启主板芯片组内置功能及特性,主板驱动里一般是主板识别和管理硬盘的IDE驱动程序或补丁,比如Intel芯片组的INF驱动和VIA的4in1补丁等。如果还包含有AGP补丁的话,一定要先安装完IDE驱动再安装AGP补丁,这一步很重要,也是很多造成系统不稳定的直接原因。

       第三步,安装DirectX驱动。这里一般推荐安装最新版本,目前DirectX的最新版本是DirectX 9.0C。可能有些用户会认为:“我的显卡并不支持DirectX 9,没有必要安装DirectX 9.0C”,其实这是个错误的认识,把DirectX等同为了Direct3D。DirectX是微软嵌在操作系统上的应用程序接口(API),DirectX由显示部分、声音部分、输入部分和网络部分四大部分组成,显示部分又分为Direct Draw(负责2D加速)和Direct 3D(负责3D加速),所以说Direct3D只是它其中的一小部分而已。而新版本的DirectX改善的不仅仅是显示部分,其声音部分(DirectSound)——带来更好的声效;输入部分(Direct Input)——支持更多的游戏输入设备,并对这些设备的识别与驱动上更加细致,充分发挥设备的最佳状态和全部功能;网络部分(DirectPlay)——增强计算机的网络连接,提供更多的连接方式。只不过是DirectX在显示部分的改进比较大,也更引人关注,才忽略了其他部分的功劳,所以安装新版本的DirectX的意义并不仅是在显示部分了。当然,有兼容性问题时另当别论。

       第四步,这时再安装显卡、声卡、网卡、调制解调器等插在主板上的板卡类驱动。

       第五步,最后就可以装打印机、扫描仪、读写机这些外设驱动。

       这样的安装顺序就能使系统文件合理搭配,协同工作,充分发挥系统的整体性能。

       另外,显示器、键盘和鼠标等设备也是有专门的驱动程序,特别是一些品牌比较好的产品。虽然不用安装它们也可以被系统正确识别并使用,但是安装上这些驱动程序后,能增加一些额外的功能并提高稳定性和性能 [编辑本段]Windows中的inf文件  Windows怎样知道安装的是什么设备,以及要拷贝哪些文件呢?答案在于.inf文件。.inf是从Windows 95时代开始引入的一种描述设备安装信息的文件,它用特定语法的文字来说明要安装的设备类型、生产厂商、型号、要拷贝的文件、拷贝到的目标路径,以及要添加到注册表中的信息。通过读取和解释这些文字,Windows便知道应该如何安装驱动程序。目前几乎所有硬件厂商提供的用于Windows 9x下的驱动程序都带有安装信息文件。事实上,.inf文件不仅可用于安装驱动程序,还能用来安装与硬件并没有什么关系的软件,例如Windows 98支持“Windows更新”功能,更新时下载的系统部件就是利用.inf文件来说明如何安装该部件的。

       在安装驱动程序时,Windows一般要把.inf文件拷贝一份到“Win-dows\Inf”或“Windows\Inf\Other”目录下,以备将来使用。Inf目录下除了有.inf文件外,还有两个特殊文件Drvdata.bin和Drvidx.bin,以及一些.pnf文件,它们都是Windows为了加快处理速度而自动生成的二进制文件。Drvdata.bin和Drvidx.bin记录了.inf文件描述的所有硬件设备,也许朋友们会有印象:当我们在安装某些设备时,经常会看到一个“创建驱动程序信息库”的窗口,此时Windows便正在生成这两个二进制文件。

       Windows 9x专门提供有“添加新硬件向导”(以下简称硬件向导)来帮助使用者安装硬件驱动程序,使用者的工作就是在必要时告诉硬件向导在哪儿可以找到与硬件型号相匹配的.inf文件,剩下的绝大部分安装工作都将由硬件安装向导自己完成。

       给硬件设备安装驱动程序对Windows 9x用户来说并不是一件陌生事,在安装或重装Windows时需要安装驱动程序,在购买了某些新硬件之后也需要安装驱动程序。如果驱动程序安装不正确,系统中某些硬件就可能无法正常使用。虽然Windows 9x支持即插即用,能够为用户减轻不少工作,但由于PC机的设备有非常多的品牌和型号,加上各种新产品不断问世,Windows不可能自动识别出所有设备,因此在安装很多设备时都需要人工干预。 资料来源: /view/1048.htm

       驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备进行相互通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。因此,驱动程序被比作“ 硬件的灵魂”、“硬件的主宰”、“硬件和系统之间的桥梁”等。

       好了,今天关于“硬件驱动程序编写入门”的话题就到这里了。希望大家能够通过我的讲解对“硬件驱动程序编写入门”有更全面、深入的了解,并且能够在今后的生活中更好地运用所学知识。