2010-06-29 20:37:00 zht_304 阅读数 3739
  • 韦东山升级版嵌入式视频之快速入门

    韦东山老师为啥要录升级版嵌入式视频? 200x年左右,嵌入式Linux在全世界、在中国刚刚兴起。 我记得我2005年进入中兴时,全部门的人正在努力学习Linux。 在2008年,我写了一本书《嵌入式Linux应用开发完全手册》。 它的大概内容是:裸机、U-boot、Linux内核、Linux设备驱动。 那时还没有这样讲解整个系统的书, 芯片厂家Linux开发包也还不完善,从bootloader到内核,再到设备驱动都不完善。 有全系统开发能力的人也很少。 于是这书也就恰逢其时,变成了畅销书。 我也根据这个思路录制了视频:裸机、U-boot、Linux内核、Linux设备驱动。 收获些许名声,带领很多人进入Linux世界。 11年过去了,嵌入式Linux世界发生了翻天覆地的变化 ① 基本系统能用 芯片厂家都会提供完整的U-boot、Linux内核、芯片上硬件资源的驱动。 方案厂家会做一些定制,比如加上某个WIFI模块,会添加这个WIFI模块的驱动。 你可以使用厂家的原始方案,或是使用/借鉴方案商的方案,做出一个“能用”的产品。 ② 基础驱动弱化;高级驱动专业化 基础的驱动,比如GPIO、UART、SPI、I2C、LCD、MMC等,有了太多的书籍、视频、示例代码,修修改改总是可以用的。 很多所谓的驱动工程师,实际上就是“调参工程师”。 我们群里有名的火哥,提出了一个概念:这些驱动就起一个“hardware enable”的作用。 高级的驱动,比如USB、PCIE、HDMI、MIPI、GPU、WIFI、蓝牙、摄像头、声卡。 体系非常复杂,很少有人能讲清楚,很多时候只是一笔带过。 配置一下应用层工具就了事,能用就成。 这些高级驱动,工作中需要专门的人来负责,非常专业。 他们是某一块的专家,比如摄像头专家、音频专家。 ③ 项目为王 你到一个公司,目的是把产品做出来,会涉及APP到内核到驱动全流程。 中小公司玩不起华为中兴的配置,需要的是全面手。 大公司里,只负责很小很小一块的镙丝钉,位置也不太稳固啊。 所以,如果你不是立志成为某方面的专家,那就做一个全栈工程师吧。 ④ 调试很重要 都说代码是3分写7分调,各种调试调优技术,可以为你的升职加薪加一把火。 基于上述4点,我录制的全新视频将有这些特点: 1. 快速入门, 2. 实战项目, 3. 驱动大全, 4. 专题, 5. 授人以渔, 6. 要做任务 另外,我们会使用多款芯片同时录制,先讲通用的原理,再单独讲各个板子的操作。 这些芯片涵盖主流芯片公司的主流芯片,让你学习工作无缝对接。 1.快速入门 入门讲究的是快速,入门之后再慢慢深入, 特别是对于急着找工作的学生,对于业余时间挑灯夜读的工作了的人,一定要快! 再从裸机、U-boot、内核、驱动这样的路线学习就不适合了,时间就拉得太长了。 搞不好学了后面忘了前面。 并且实际工作中并不需要你去弄懂U-boot,会用就行:U-boot比驱动还复杂。 讲哪些内容? 怎么讲呢? 混着讲 比如先讲LED APP,知道APP怎么调用驱动,再讲LED硬件原理和裸机,最后讲驱动的编写。 这样可以快速掌握嵌入式Linux的整套开发流程, 不必像以前那样光学习裸机就花上1、2个月。 而里面的裸机课程,也会让你在掌握硬件操作的同时,把单片机也学会了。 讲基础技能 中断、休眠-唤醒、异步通知、阻塞、内存映射等等机制,会配合驱动和APP来讲解。 这些技能是嵌入式Linux开发的基础。 而这些驱动,只会涉及LED、按制、LCD等几个驱动。 掌握了这些输入、输出的驱动和对应的APP后,你已经具备基本的开发能力了。 讲配置 我们从厂家、从方案公司基本上都可以拿到一套完整的开发环境,怎么去配置它? 需要懂shell和python等配置脚本。 效果效率优先 以前我都是现场写代码、现场写文档,字写得慢,降低了学习效率。 这次,效果与效率统一考虑,不再追求所有东西都现场写。 容易的地方可先写好代码文档,难的地方现场写。 2.实战项目 会讲解这样的涉及linux网关/服务器相关项目(不限于,请多提建议):                      定位为:快速掌握项目开发经验,丰满简历。 涉及的每一部分都会讲,比如如果涉及蓝牙,在这里只会讲怎么使用,让你能写出程序;如果要深入,可以看后面的蓝牙专题。 3. 驱动大全 包括基础驱动、高级驱动。 这些驱动都是独立成章,深入讲解。 虽然基础驱动弱化了,但是作为Linux系统开发人员,这是必备技能,并且从驱动去理解内核是一个好方法。 在讲解这些驱动时,会把驱动的运行环境,比如内核调度,进程线程等概念也讲出来,这样就可以搭建一个知识体系。 没有这些知识体系的话,对驱动的理解就太肤浅了,等于在Linux框架下写裸机,一叶障目,不见泰山。 定位为:工具、字典,用到再学习。 4. 专题 想深入学习的任何内容,都可独立为专题。 比如U-boot专题、内核内存管理专题、systemtap调试专题。

    5035 人正在学习 去看看 韦东山

From: http://blog.sina.com.cn/s/blog_4b024d3201000918.html

PCI与设备驱动开发经典图书

(2007-01-26 22:15:25)
  分类:工程技术类
1.《PCI Express 系统体系结构标准教材》

PCI与设备驱动开发经典图书

本书全面论述了适用于许多系统和外设的当前最流行的第三代外围组件互连技术——PCI Express。内容涵盖设计、验证和测试所需的信息,以及编写底层BIOS和设备驱动程序必需的背景知识。MindShare公司是领先的硬件技术培训公司之一,为几十家公司提供创造性的课程,包括IBM、HP、PLX、Sun和德州仪器等。本书选自该公司的PC系统体系结构系列丛书。
【作    者】(美)Pavi Budruk Don Anderson Tom Shanley 
【出 版 社】电子工业出版社 
【出版日期】2005年11月版次:  
【I S B N】712101794 页数:  
【开    本】小16开印张:  
【原    价】¥62.0
 
2.《PCI总线设备开发宝典》

PCI与设备驱动开发经典图书

详细介绍开发PCI总线设备的过程中所涉及的实际问题,包括PCI总线设备的电源分配、元器件的选择、配置芯片代码的编写、原理图和PCB图的设计、驱动程序与应用程序的设计以及安装和调试等。从实践的角度出发,循序渐进,深浅得当。读者从本书中既能学习到PCI总线的基本知识,也能学习到PCI总线设备开发和调试等实践知识。附带光盘包含PCI总线设备的基本SCH图、PCI9052芯片的封装图、使用DDK开发PCI总线设备驱动程序的源代码、中间层DLL程序、PCI总线设备的上层应用程序的源代码以及驱动程序的INF源代码等。本书可作为高等院校本科和研究生的计算机教材使用,也可作为从事PCI总线硬件、软件设计与安装和调试等工作的通信、控制、电子技术人员和工程师人员的参考书籍。 
【作者】 尹勇 李宇[同作者作品] 
【出版社】 北京航空航天大学出版社 
【书号】 7-81077-540-5
【开本】 16开
【页码】 328
【出版日期】 2005-2-1 
【版次】 1-1   
3.《PCI局部总线及其应用》
PCI与设备驱动开发经典图书
 
PCI(外设部件互连)是当今个人计算机的主流总线结构,是微型计算机中处理器/存储器与外围控制部件、扩展卡之间的互连接口。PCI局部总线规范是互连机构的协议,也是电气和机械配置的规范。本书分为9章,涵盖了PCI局部总线规范2.2版及其最新进展,详细介绍了PCI局部总线的原理和操作,内容包括PCI局部总线的基本概念、信号的定义、总线的操作、电气规范、机械规范、配置空间、66 MHz规范、BIOS和PCI-PCI桥等。书中通过大量的时序波形和实例对PCI局部总线的实际应用进行了深入浅出的阐述。编者根据编写《PCI局部总线开发者指南》(2.0版)和使用PCI局部总线的经验,对书中的内容作了周密安排。本书体系合理、概念清晰、逻辑性强、通俗易懂。本书是对PCI局部总线规范使用的全面详细的指南,凡是具有一定计算机基础的读者都能通过学习本书掌握PCI局部总线的基本内容。本书是所有从事PCI局部总线硬件、软件设计与测试人员的一本难得的参考书,也可作为相关专业本科和研究生的教材。
【作者】 李贵山 陈金鹏 
来源:(http://blog.sina.com.cn/s/blog_4b024d3201000918.html) - PCI与设备驱动开发经典图书_cutedeer_新浪博客
【书号】 756060486A
【出版社】西安电子科技大学出版
【开本】 16开
 
4.《Windows 2000/XP WDM设备驱动程序开发》

PCI与设备驱动开发经典图书


本书主要介绍用DriverStudio开发工具开发Windows 2000/XP下的WDM设备驱动程序的原理及编程方法。本书详细介绍了WDM基本程序框架的编程,IRP的基本概念及编程,WDM和应用程序之间的通信、即插即用、电源管理、WMI的编程技术,IRP串行处理、过滤器驱动程序,WDM访问硬件设备、处理硬件中断、实现DMA操作的编程技术,以及大量的基本编程技术,还有USB接口和PCI接口设备驱动程序WDM的开发。
【作者】武安河等
【出版社】电子工业出版社
【ISBN】7-5053-8647-6
【出版日期】2003年4月
【页数】 421 
【原价】¥45
 
5.《Windows2000驱动程序开发大全(第1卷)设计指南》
  《Windows2000驱动程序开发大全(第2卷)参考手册》

PCI与设备驱动开发经典图书      PCI与设备驱动开发经典图书

 【原书名】microsoftwindows2000driverdevelopmentkit
【原出版社】microsoftpress 
【作者】(美)microsoftcorporation 
【译者】周明全译等 
【丛书名】微软公司核心技术书库 
【出版社】机械工业出版社 
【书号】7-111-08954-5 
【页码】1342 
【出版日期】2001-9-1 
【版次】1-1 
 
2013-11-19 11:31:52 Liuyawei_ 阅读数 2547
  • 韦东山升级版嵌入式视频之快速入门

    韦东山老师为啥要录升级版嵌入式视频? 200x年左右,嵌入式Linux在全世界、在中国刚刚兴起。 我记得我2005年进入中兴时,全部门的人正在努力学习Linux。 在2008年,我写了一本书《嵌入式Linux应用开发完全手册》。 它的大概内容是:裸机、U-boot、Linux内核、Linux设备驱动。 那时还没有这样讲解整个系统的书, 芯片厂家Linux开发包也还不完善,从bootloader到内核,再到设备驱动都不完善。 有全系统开发能力的人也很少。 于是这书也就恰逢其时,变成了畅销书。 我也根据这个思路录制了视频:裸机、U-boot、Linux内核、Linux设备驱动。 收获些许名声,带领很多人进入Linux世界。 11年过去了,嵌入式Linux世界发生了翻天覆地的变化 ① 基本系统能用 芯片厂家都会提供完整的U-boot、Linux内核、芯片上硬件资源的驱动。 方案厂家会做一些定制,比如加上某个WIFI模块,会添加这个WIFI模块的驱动。 你可以使用厂家的原始方案,或是使用/借鉴方案商的方案,做出一个“能用”的产品。 ② 基础驱动弱化;高级驱动专业化 基础的驱动,比如GPIO、UART、SPI、I2C、LCD、MMC等,有了太多的书籍、视频、示例代码,修修改改总是可以用的。 很多所谓的驱动工程师,实际上就是“调参工程师”。 我们群里有名的火哥,提出了一个概念:这些驱动就起一个“hardware enable”的作用。 高级的驱动,比如USB、PCIE、HDMI、MIPI、GPU、WIFI、蓝牙、摄像头、声卡。 体系非常复杂,很少有人能讲清楚,很多时候只是一笔带过。 配置一下应用层工具就了事,能用就成。 这些高级驱动,工作中需要专门的人来负责,非常专业。 他们是某一块的专家,比如摄像头专家、音频专家。 ③ 项目为王 你到一个公司,目的是把产品做出来,会涉及APP到内核到驱动全流程。 中小公司玩不起华为中兴的配置,需要的是全面手。 大公司里,只负责很小很小一块的镙丝钉,位置也不太稳固啊。 所以,如果你不是立志成为某方面的专家,那就做一个全栈工程师吧。 ④ 调试很重要 都说代码是3分写7分调,各种调试调优技术,可以为你的升职加薪加一把火。 基于上述4点,我录制的全新视频将有这些特点: 1. 快速入门, 2. 实战项目, 3. 驱动大全, 4. 专题, 5. 授人以渔, 6. 要做任务 另外,我们会使用多款芯片同时录制,先讲通用的原理,再单独讲各个板子的操作。 这些芯片涵盖主流芯片公司的主流芯片,让你学习工作无缝对接。 1.快速入门 入门讲究的是快速,入门之后再慢慢深入, 特别是对于急着找工作的学生,对于业余时间挑灯夜读的工作了的人,一定要快! 再从裸机、U-boot、内核、驱动这样的路线学习就不适合了,时间就拉得太长了。 搞不好学了后面忘了前面。 并且实际工作中并不需要你去弄懂U-boot,会用就行:U-boot比驱动还复杂。 讲哪些内容? 怎么讲呢? 混着讲 比如先讲LED APP,知道APP怎么调用驱动,再讲LED硬件原理和裸机,最后讲驱动的编写。 这样可以快速掌握嵌入式Linux的整套开发流程, 不必像以前那样光学习裸机就花上1、2个月。 而里面的裸机课程,也会让你在掌握硬件操作的同时,把单片机也学会了。 讲基础技能 中断、休眠-唤醒、异步通知、阻塞、内存映射等等机制,会配合驱动和APP来讲解。 这些技能是嵌入式Linux开发的基础。 而这些驱动,只会涉及LED、按制、LCD等几个驱动。 掌握了这些输入、输出的驱动和对应的APP后,你已经具备基本的开发能力了。 讲配置 我们从厂家、从方案公司基本上都可以拿到一套完整的开发环境,怎么去配置它? 需要懂shell和python等配置脚本。 效果效率优先 以前我都是现场写代码、现场写文档,字写得慢,降低了学习效率。 这次,效果与效率统一考虑,不再追求所有东西都现场写。 容易的地方可先写好代码文档,难的地方现场写。 2.实战项目 会讲解这样的涉及linux网关/服务器相关项目(不限于,请多提建议):                      定位为:快速掌握项目开发经验,丰满简历。 涉及的每一部分都会讲,比如如果涉及蓝牙,在这里只会讲怎么使用,让你能写出程序;如果要深入,可以看后面的蓝牙专题。 3. 驱动大全 包括基础驱动、高级驱动。 这些驱动都是独立成章,深入讲解。 虽然基础驱动弱化了,但是作为Linux系统开发人员,这是必备技能,并且从驱动去理解内核是一个好方法。 在讲解这些驱动时,会把驱动的运行环境,比如内核调度,进程线程等概念也讲出来,这样就可以搭建一个知识体系。 没有这些知识体系的话,对驱动的理解就太肤浅了,等于在Linux框架下写裸机,一叶障目,不见泰山。 定位为:工具、字典,用到再学习。 4. 专题 想深入学习的任何内容,都可独立为专题。 比如U-boot专题、内核内存管理专题、systemtap调试专题。

    5035 人正在学习 去看看 韦东山
2013-11-19 11:29

学Windows驱动开发书籍介绍

一、总述 1.1分类 驱动程序按操作系统平台可分为两大类:Windows 系列与 Linux/Unix系统。而在Windows平台中又包含两大类:VxD(Virtual X Device)与WDM(Windows Driver Model),前者运行于Windows 3.1/95/98/ME,后者运行于Windows 98/ME/2000/XP。Windows NT4.0平台上的KMD驱动程序仅比WDM少了能量管理与即插即用功能而矣。当然,在Windows 2000平台上的驱动程序除WDM外,还有文件系统驱动、NDIS(Network Driver Interface Specific)驱动等等其它类型的驱动程序,但在下面的书籍推荐与介绍中我们将主要围绕WDM进行。 1.2 目的 我首先想问你:你为什么准备学习开发驱动程序?也就是说你学习开发驱动程序的目的是什么? 从事驱动程序的开发可获得较高的收入。那么让你失望了。这行业同其它IT行业一样,收入高的属于少数技术水平高与开发经验丰富的人,虽然作驱动开发的人少,与你竞争的人也少,但相应的就业面(也就需求)也相对狭窄。 我是个硬件工程师,仅仅想作个驱动来调试硬件。那你可以学习使用WinDriver这个软件工具,它简单易用,上手快,对内核知识不需很多。只是据说效率上欠缺一些,不过我没具体测试过。 老板让我作个驱动程序;我想通过学习驱动程序开发了解操作系统;……好像也不需要这么多理由吧,那就让我继续吧。 1.3 开发环境的建造 首先安装好Windows操作系统; 然后安装VC(Virtual C++),一般来说需要VC6.0版本,好像最新的XP DDK不需要事先安装VC,但我没试过; 如果是Windows NT4.0,还需要安装Platform SDK; 然后到微软的网站下载相应的DDK(Driver Development Kits)开发包,比如你安装的是Windows 2000,你就一定只能安装2000DDK。不过,最新的XP DDK可不提供免费下载,只在MSDN中提供,微软总是不忘记赚钱。 最后,为调试方便,最好安装SoftIce,这个第三方软件支持单机调试,如果使用微软提供的WinDbg,还需要两台机器进行调试。 有些人还想安装Numega公司的Numega DriverStudio套件,我倒不太喜欢其中的DriverWork,它实际就是把DDK重新封装了。反而影响我们对程序流程的理解与调试。 - 14 -

Austin Ji

初学驱动开发书籍介绍

1.4 编写驱动程序的原则 大部分编程问题都不得可分成两部分:机制(mechanism,即需要提供什么样的功能)与策略(Policy,如何使用这些功能)。程序员编写驱动程序时就特别注意:编写访问硬件的内核代码时不要给用户强加任何策略。因为不同的用户有不同的需求,驱动程序应该处理如何使硬件可用的问题,而将怎样使用硬件的问题留给上层应用。(--摘自《LINUX设备驱动程序》) 1.5 计算机已知的挑选原则 现在计算机书籍种类非常多,也是良莠不齐,我一般在挑选本着下面几条原则: a. 尽量选用外国人写的书。也不能说是崇洋媚外,毕竟我们现在所使用的操作系统基本上都是老外们编写的,那当然他们将自己的经验写出来也比我们丰富一些吧。还有就是中国人实在不争气,常见中国人写的书由“某某 编著”,这一个“编”字就可以到处Copy & Paste。 b. 选用有名的出版社。国内的机械工业出版社、清华大学出版社等等,国外的如微软公司、O’Reilly等 1.6 购买方式 常有人想买某本书却买不到,或是到书店没看到此书。其实现在完全可以到网上买书,挑选方便快捷,品种丰富齐全,而且一般都有优惠,只是你若在小城市,从寄出货款到拿到书可需要点耐心,想当年我可是等了足有两个星期。具体的网址自己上网查询,省得有广告嫌疑。 - 14 -

Austin Ji

初学驱动开发书籍介绍

二、推荐的书目 2.1 《C程序设计》 我首先推荐的就是这本谭浩强的《C程序设计》,如果你的C语言非常熟练,那么你就跳过这一节,否则的话,你还是从你的教科书中找出这本,再仔细读两遍。一本书写出来十多年还有人用,这可是在IT技术更新换代飞速的年代,能作到这一点也足可见它的经典。虽然安装时需要VC,但在编写驱动程序时却用的是Ansi C,还不是C++,也不需要VC的集成开发环境。当然你也可以为方便使用VC的集成开发环境,并将代码封装成C++。 C程序设计(第二版) 出版社: 清华大学出版社 译作者: 谭浩强 国标编号: ISBN 7-302-03806-6/TP.2205 出版日期: 1999年12月 定价: RMB 26.00 页数: 388 内容简介: C语言是国内外广泛使用的计算机语言,是计算机应用人员应掌握的一种程序设计工具。 本书第一版于1991年出版,全书针对初学者的特点,精心策划、准确定位、概念清晰、例 题丰富、深入浅出,受到专家和读者的一致好评。普遍认为它是学习C语言的好教材,被全国大多数高校选用。几年来发行量达270万册,创同类书发行量的全国纪录。被电子工业部评为部级优秀教材一等奖。 根据发展的需要,作者对本书进行了修订,加强了算法,按C的新标准改写全书各章,增加了C++的初步知识。 本书内容新颖、体系合理、逻辑性强、文字流畅、通俗易懂,是学习C语言的理想教材。凡具有计算机初步知识的读者都能读懂本书。本书可作为高等学校各专业的正式教材,也是一本自学的好教材。 评论: 想必是大家C语言的教科书吧,大家都知道内容的,我也就不多评论这本书,但我想这本书的发行量在世界的电脑科技书刊界上都应该是前十位吧,要知道谭浩强的《BASIC程序设计》可是世界上科技书刊发行量最大的。 备注:“内容简介”是原书自带的内容介绍,“评论”才是我作出的评价。 - 14 -

Austin Ji

初学驱动开发书籍介绍

2.2 《Windows 2000内部揭密》 有时怨不得作Unix/Linux的人瞧不起作Windows的人,因为前者对操作系统的了解比后者更为深入一些。随便翻开一本Linux开发的书籍,上面就有关Cache、文件系统、IPC(进程间通信)等等内容,而Windows这方面的书籍是少之又少,大概与Microsoft的绝不公开源码有关,而能写得通俗易懂又这么精彩就更少了,很幸运,我们找到了这本书。如果你英文流利的话,最好看原版书Inside Microsoft Windows 2000 , Third Edition。 Windows 2000内部揭密 出版社: 机械工业出版社 译作者: (美)Mark E.Russinovich著 詹剑锋等译 国标编号: ISBN 7-111-09100-0/TP.2018 出版日期: 2001年10月 定价: RMB 69.00 页数: 568 内容简介: 本书深入揭示Windows 2000内部结构和运行机制,涉及Windows 2000最基础的系统组件和基本概念。主要内容包括系统体系结构、系统机制、管理机制、内存管理、安全机制、I/O系统、文件系统、网络体系等。本书用大量实验展示了Windows 2000的内核,有效地使读者深刻地理解Windows 2000系统,充分利用该系统进行应用开发。配套光盘包含本书电子版,以及展示Windows 2000内核的工具。 评论: 作为编写上层服务或是界面程序的Programer,你可以不了解操作系统内的机制与流程,但你是在编写驱动程序,是工作在Ringe 0,你的Bug会导致系统的崩溃,所以你必须掌握(至少也要了解)Windows系统的知识。 这本书对内存管理、I/O系统、高速缓存、文件系统、网络等作了详细的描述,由于Windows本身的封闭性,能这么详实、准确地介绍Windows 2000操作系统的内部的书真是少有。虽然这里没有哪一章是单独介绍驱动程序的,但实际它无处不在,特别是在I/O系统这章介绍得更为详尽。 当然,这本书不是教你如何编写程序的,所以此书基本上没有代码实现的例子,但它教你使用几种工具来观察、调试内核。

2.3 《Microsoft Windows 驱动程序模型设计》 这本书太经典了,虽然价钱上是贵了一点,但你多读几遍,就会发现物超所值。要知道它的实际作者是Walter Oney(个人网站www.oneysoft.com),他写的书从来都不会让人失望的。据说在今年年底,他将出版本书的第二版。 - 14 -

Austin Ji

初学驱动开发书籍介绍

Microsoft Windows 驱动程序模型设计 出版社: 北京大学出版社 译作者: Microsoft公司 国标编号: ISBN 7-900629-34-3/TP.28 出版日期: 2000年9月 定价: RMB 98.00 页数: 626 (1CD) 内容简介: 本书是《微软编程圣典丛书(影印版)》之一,讲述Windows 98和Windows 2000下的驱动程序模型设计,内容涉及WDM、内存和数据结构管理、注册和文件访问、多任务和多处理器环境中的驱动程序开发、I/O处理、设备读写、WMI、USB体系结构下的设备驱动程序开发等。为了增加本书的实用性,特以配套光盘的形式提供了丰富的程序实例、驱动程序创建向导、处理即插即用和电源管理中的细节问题的库,以及本书的电子版。 本书由微软公司组织专家编写,具有相当的技术深度,是中、高级程序员必备的参考书。 评论: 这本书堪称经典之作,详细介绍了关于WDM驱动程序的方方面面,由浅及深地讲述了驱动程序中的I/O Request Packet、即插即用、读/写数据、能源管理等,并用专题讲述过滤驱动程序、日志、定时器、USB及驱动程序的安装/卸载等内容。在结合代码讲述时,也不象有些书一附代码就是几十页,他一般是一段代码不超过一页,对这段代码的解释往往不止一页。 这么说,这本书既可是菜鸟级人物的快速上手的教科书,也可以是高手的速查手册。 对了,还忘了这本书所附光盘上的一个非常非常好的东东WDMWiz.awx。你是不是要问这个有什么用?有不少初学者不喜欢nmake式的命令行编译,也有初学者不知怎么样才能构造驱动程序的框架,用这个东东,就可以在VC这个集成开发环境中象开发一个界面程序一样,一步步按照你的需要搭建出一个驱动程序的框架,而且就在VC这个IDE中就可以编译了。 要说这本书有什么不足,那就是他没包含文件系统驱动与网络驱动(NDIS),还有就是它是 In English(不过,网上有人翻译成中文)。 - 14 -

Austin Ji

初学驱动开发书籍介绍

三、一般驱动开发书籍 下面这几本书籍专讲WDM驱动程序的,写得都还可以,虽然并不十分出色,但也不算差。而且他们所讲述的内容大同小异,所以,你只要拥有其中的一本或是两本就足够了。 3.1 Windows 2000设备驱动程序设计指南(原书第2版) Windows 2000设备驱动程序设计指南 出版社: 机械工业出版社 译作者: [美]Art Baker,Jerry Lozano著 施诺等译 国标编号: ISBN 7-111-09283-X/TP.2077 出版日期: 2001年9月 定价: RMB 58.00 页数: 359 (1CD) 内容简介: 本书全面讲述了驱动程序模型、内核模式编程和硬件接口等方面的知识,可作为驱动程序开发的自学教材使用。全书共分17章和三个附录,第1-5章讨论编写设备驱动程序所需的基础知识。包括Windows 2000体系结构,Windows 2000 I/O管理程序等内容。第 6-13章是本书的核心内容,讨论了Windows 2000驱动程序开发的所有内容。第14-15章讨论设备驱动程序构造方面的高级主题,包括使用系统线程、分层、过滤和驱动程序类别等。最后两章讨论驱动程序的安装和调试。附录部分讨论了驱动程序开发所需的参考信息,列出了Windows 2000符号文件安装、故障检验码等内容。 评论: 这本书是《Windows NT设备驱动程序设计指南》的第二版,只是增加了PnP与能源管理方面的内容,其余的章节对原有内容改动不大。这本书较适合初学者,方方面面的内容都讲了一些,从硬件的基础知识、内存分配到全双工、定时器、日志记录,甚至还包括如何测试、调试与安装驱动程序。 特别是其中一章:高层驱动程序,详细讲述了在分层驱动中高层驱动程序如何工作以及如何与下层驱动通信,这些对过滤驱动也是极有帮助的。而在其它书上这点讲述得较为简单。 但在内容叙述上不够系统,组织结构有点乱,部分内容也不够深入,而且还有点小错误。 - 14 -

Austin Ji

初学驱动开发书籍介绍

3.2 WINDOWS NT与WINDOWS 2000设备驱动及开发 WINDOWS NT与WINDOWS 2000设备驱动及开发出版社: 电子工业出版社 译作者: [美]Peter G.Viscarola等著 新智工作室译 国标编号: ISBN 7-5053-5953-3/TP.3118 出版日期: 2000年6月 定价: RMB 60.00 页数: 490 内容简介: 本书从结构设计和实用的角度出发,对Windows NT和Windows 2000的标准核心模式驱动程序做了深刻描述。它不仅解释了如何设计和开发这些驱动程序,而且介绍了怎样去编辑、连接和编译它们。 本书将重点集中在标准核心模式驱动程序上,从简单的并行或串行端口设备驱动到复杂的以DMA为基础的实时视频加密设备驱动,本书介绍的标准核心模式驱动程序都是首屈一指的。全书有四大部分,第一部分介绍了Windows NT的结构,第二部分详述了管理器及设备驱动程序,第三部分叙述了替换式NT驱动程序结构,第四部分主要介绍了Windows 2000与NT4.0设备驱动程序的差别 评论: 呵呵,这本书实在不好评论。因为我没有那么多money买这么多书,只好听听大家的评价,我以后再补上吧。 据说写得不错,就是翻译得不好。

3.3 WINDOWS WDM设备驱动程序开发指南 WINDOWS WDM设备驱动程序开发指南 出版社: 机械工业出版社 译作者: [美]Chris Cant 译:孙义 马莉波 国雪飞 国标编号: ISBN 7-111-07709-1 出版日期: 2000年1月 定价: RMB 56.00 页数: 403 - 14 -

Austin Ji

初学驱动开发书籍介绍

内容简介: 本书主要介绍Windows 98和Windows 2000新的驱动程序模型(WDM)。描述了WDM设备驱动程序的结构、功能和开发方法;通过实际的设备驱动程序例子,说明WDM设备驱动程序的实现技术、测试和调试方法;介绍了本书提供的一个调试软件DebugPrint;说明如何在客户驱动程序中使用USB驱动程序接口(USBDI)访问USB设备,以及如何利用HID类驱动程序以标准方法访问多种输入设备。 评论: 这本书一般化吧,一时我也想不起他有哪点特别好的地方。

3.4 Windows设备驱动程序(VxD与WDM)开发实务 Windows设备驱动程序(VxD与WDM)开发实务出版社: 电子工业出版社 译作者: 武安河 周利莉 国标编号: ISBN 7-5053-6924-5/TP.3943 出版日期: 2001年9月 定价: RMB 36.00 页数: 300 (1CD) 内容简介: 本书主要介绍了用VtoolsD开发Windows 95/98/Me下的非标准设备(指自己开发的,如数据采集卡等设备)驱动程序VxD的原理及编程方法。本书详细介绍了VxD的基本概念、VxD程序、VxD和Win32应用程序之间的通信,及VxD访问硬件设备,处理硬件中断,实现DMA操作,完成即插即用(PnP)功能的函数和类库,并详细介绍了VtoolsD开发工具的使用和如何用VtoolsD开发Windows下的PCI设备驱动程序VxD。 本书还介绍了用DriverWorks开发Windows 98/NT/2000下的驱动程序WDM的原理及编程方法。 本书附有大量的编程实例,并附赠一张光盘,内含全部实例源代码便于读者学习和掌握 评论: 有不少初学者是用DriverWorks开发驱动程序的,而上面介绍的都是直接用DDK开发的。这本书就是教你如何使用Numega DriverStudio开发套件中的VtoolsD与DriverWork开发PCI卡驱动程序。 - 14 -

Austin Ji

初学驱动开发书籍介绍

四、相关推荐书目 4.1 Windows 核心编程 虽然叫核心编程,并不是指在内核模式(Kernel Mode)下编程,还是在用户态(User Mode)中,不过比较贴近底层的编程。其实它与驱动程序编程并无紧密的关系,之所以推荐,是因为有部分程序员是要将驱动程序、API(Appplication Program Interface)、测试程序一套都要作下来,那么这本书对你编制API就大有帮助。 WINDOWS WDM设备驱动程序开发指南 出版社: 机械工业出版社 译作者: (美)Jeffrey Richter著 王建华等译 国标编号: ISBN 7-111-07945-0/TP.1427 出版日期: 2000年5月 定价: RMB 86.00 页数: 689 内容简介: 本书是讲解Windows操作系统内部机制的专著,作者从基本概念入手,全面系统地介绍了Windows的各种基本构件,如进程、线程、DLL和内存管理等,并列举了大量应用程序,精辟地分析了构件的使用方法,为掌握Windows编程技巧提供了一条有效的捷径。对于不同水平的Windows编程人员来说,本书都具有极好的参考价值 评论: 一般客户都需要对硬件的并发处理,有时可在驱动程序内解决,但有时驱动程序内不好处理时,就需要上层应用程序来处理。好好看看此书关于进程、线程、互斥、事件等概念的描述,再来解决时就可以得心应手了。 再结合前面几本书中讲述的Windows内核层的运行机制,认真思考本书应用层中的内核对象、进程、线程等知识,相信你会对Windows将有更深一层的理解。 本书中还专有几节讲述使用DLL(Dynmic Linked Librea)技术编写API。 - 14 -

Austin Ji

初学驱动开发书籍介绍

4.2 LINUX设备驱动程序(第二版) LINUX设备驱动程序(第二版) 出版社: 中国电力出版社 译作者: ALESSANDRO RUBINI等著 魏永明等译 国标编号: ISBN 7-5083-1294-5 出版日期: 2002年11月 定价: RMB 69.00 页数: 565 内容简介: 本书面向的读者是那些想在Linux操作系统下支持各种计算机外设,或者想开发新的硬件并在Linux下运行的人们。Linux是Unix市场中增长最快的部分,并且在许多应用领域获得了广泛的支持。现在,人们越来越清楚地认识到Linux是嵌入式系统的一个极佳平台,本书第二版已经成为该领域的经典之作。本书作者将以往那些口述式的经验和知识、或者隐晦的源代码注释上升为系统地讲述各种设备驱动程序编写方法的著作。 Linux内核的2.4版在设备驱动程序方面发生了重大变化,它简化了许多工作,但同时提供了许多精细的新功能,可让驱动程序更加高效、灵活。本书第二版透彻地讲述了这些变化,并介绍了许多新的处理器和总线结构。 评论: 我没有搞错,虽然你是作Windows下的驱动程序,但驱动程序对硬件的操作都是相同的,只是各平台驱动程序的结构有区别罢了。而且Linux下有大量的驱动程序源码可供参考。 一般来讲Linux的书籍都比同类的Windows的书籍更为底层一些,这本书也不例外,它对硬件知识也涉及到不少,比如PCI、ISA总线等等。 所以说,这本书对你理解操作系统与驱动程序的关系、驱动程序与硬件的关系有很大的帮助。 最后,很有可能老板就对你说:Windows 系列的驱动程序写好后,再把Linux、SCO Unix的驱动程序也写一下吧。 - 14 -

Austin Ji

初学驱动开发书籍介绍

五、烂书曝光 既然好书,就有烂书。我这个“烂”字并不是说它真的很差,误人子弟,只是形容与他的价钱相比,不能作到物有所值。 5.1 Microsoft Windows 2000驱动程序设计指南 这本书狂贵,还有它的中文翻译版,分成上下册,价格就更是高达300多元。 Microsoft Windows 2000驱动程序设计指南(影印版) 出版社: 北京大学出版社 译作者: Microsoft公司 国标编号: ISBN 7-900629-08-4/TP.09 出版日期: 2000年6月 定价: RMB 228.00 页数: 1742 内容简介: 本书是《微软Windows 2000驱动程序开发丛书(影印版)》之一,讲述编写Windows 2000与Windows 98驱动程序所需的各种技术。主要内容有:驱动程序开发环境与驱动程序BUILD实用程序,应用Windows 2000驱动程序检验器建立、测试和调试Windows 2000驱动程序,创建WDM驱动程序,Windows 2000特殊的即插即用和电源管理特性,如何支持设备的设置和安装,以及编写内核模式、图形和网络驱动程序。 本书由微软公司的专家编写,技术深入,权威性强,是Windows 2000驱动程序开发人员必备的参考书。 评论: 如果你想显示你知识的“渊博”,或你感觉你的手腕和肩膀酸痛,那你可将它置于案头,每有人路过你的办公桌时,总会注意到这本厚达150mm的书籍,看到里面满篇的洋文,他总会别样的目光看看你;而且在你劳累时,还可把它当哑铃锻炼身体。 仅从它的目录看,会发现它的内容既广泛又详实,又是Microsoft出版的,但我为什么会上面那样说呢,因为它的内容简直就是DDK文档的翻版,不信你再将它的目录与DDK文档的目录对比。忘记告诉你,以上两个目的的前提是:你是公款购买。 结论:MicroSoft出版的书也不全是经典的,这本就是垃圾。 - 14 -

Austin Ji

初学驱动开发书籍介绍

5.2 VC++.NET开发驱动程序详解――Windows 2000/XP VC++.NET开发驱动程序详解 ――Windows 2000/XP 出版社: 北京希望电子出版社 译作者: 郭益昆 国标编号: ISBN 7-900088-76-8 出版日期: 2002年4月 定价: RMB 42.00 页数: 360 (1CD) 内容简介: 本书是一本介绍Windows 2000 Professional和Windows XP的核心驱动程序的专著。提供了多种核心程序模型,极大地方便了读者的学习和应用。 本书内容由6部分组成,第1部分为核心模式基础,主要内容有系统与驱动,对I/O、I/O对象和IRPs进行分层、调度方法和优先级、系统定义的对象与驱动的关系、基本驱动结构。第2部分为核心流驱动,主要讲述了核心流驱动的概念、流小驱动、音频驱动、音频小端口驱动、视频捕获驱动以及DVD驱动模型设计。第3部分为即插即用,主要内容有PnP需要的驱动支持,增加新PnP设备的步骤。第4部分为电源管理,包括电源管理的含义及其实现步骤。第5部分为Windows 2000的管理机制。第6部分为调试与开发驱动程序,介绍了10个调试工具以及如何使用VC++.NET开发驱动程序。 本书结构清晰,逻辑严密,内容环环相扣,不但是从事用VC++.NET进行开发与应用的广大编程人员的技术指导书,同时也可作为大专院校计算机专业、非专业师生重要的参考读物。 本版CD为驱动程序源代码。 评论: 一看书名就知道此书不会有多好。一般来讲,开发驱动与VC的联系并不多,只是借用了VC的连接器与编译器(若是98DDK或95DDK编译VxD驱动时,可以不用VC,而用Borland C++来替代,如果是XP DDK那就连VC都不需要了),所有的DDK对VC的版本要求最高也就是VC6.0,没有特别要求VC.Net;我也没听说使用VC++.Net编译驱动可以增添某些新功能或是有什么优势,那明显这是一本跟风书。 实际上也是,我那天到东方书城初看到这本书就翻了翻,好象还不错,但越看越觉得似曾相熟,不知为什么总感觉象是《Windows 2000 驱动程序模型设计》的某些章节的翻译。 结论:有机会在书店里翻一下就可以了。 - 14 -

Austin Ji

评论
发布
500/0
 
a
b
c
d
e
f
2016-03-16 14:55:36 CharlesSimonyi 阅读数 33040
  • 韦东山升级版嵌入式视频之快速入门

    韦东山老师为啥要录升级版嵌入式视频? 200x年左右,嵌入式Linux在全世界、在中国刚刚兴起。 我记得我2005年进入中兴时,全部门的人正在努力学习Linux。 在2008年,我写了一本书《嵌入式Linux应用开发完全手册》。 它的大概内容是:裸机、U-boot、Linux内核、Linux设备驱动。 那时还没有这样讲解整个系统的书, 芯片厂家Linux开发包也还不完善,从bootloader到内核,再到设备驱动都不完善。 有全系统开发能力的人也很少。 于是这书也就恰逢其时,变成了畅销书。 我也根据这个思路录制了视频:裸机、U-boot、Linux内核、Linux设备驱动。 收获些许名声,带领很多人进入Linux世界。 11年过去了,嵌入式Linux世界发生了翻天覆地的变化 ① 基本系统能用 芯片厂家都会提供完整的U-boot、Linux内核、芯片上硬件资源的驱动。 方案厂家会做一些定制,比如加上某个WIFI模块,会添加这个WIFI模块的驱动。 你可以使用厂家的原始方案,或是使用/借鉴方案商的方案,做出一个“能用”的产品。 ② 基础驱动弱化;高级驱动专业化 基础的驱动,比如GPIO、UART、SPI、I2C、LCD、MMC等,有了太多的书籍、视频、示例代码,修修改改总是可以用的。 很多所谓的驱动工程师,实际上就是“调参工程师”。 我们群里有名的火哥,提出了一个概念:这些驱动就起一个“hardware enable”的作用。 高级的驱动,比如USB、PCIE、HDMI、MIPI、GPU、WIFI、蓝牙、摄像头、声卡。 体系非常复杂,很少有人能讲清楚,很多时候只是一笔带过。 配置一下应用层工具就了事,能用就成。 这些高级驱动,工作中需要专门的人来负责,非常专业。 他们是某一块的专家,比如摄像头专家、音频专家。 ③ 项目为王 你到一个公司,目的是把产品做出来,会涉及APP到内核到驱动全流程。 中小公司玩不起华为中兴的配置,需要的是全面手。 大公司里,只负责很小很小一块的镙丝钉,位置也不太稳固啊。 所以,如果你不是立志成为某方面的专家,那就做一个全栈工程师吧。 ④ 调试很重要 都说代码是3分写7分调,各种调试调优技术,可以为你的升职加薪加一把火。 基于上述4点,我录制的全新视频将有这些特点: 1. 快速入门, 2. 实战项目, 3. 驱动大全, 4. 专题, 5. 授人以渔, 6. 要做任务 另外,我们会使用多款芯片同时录制,先讲通用的原理,再单独讲各个板子的操作。 这些芯片涵盖主流芯片公司的主流芯片,让你学习工作无缝对接。 1.快速入门 入门讲究的是快速,入门之后再慢慢深入, 特别是对于急着找工作的学生,对于业余时间挑灯夜读的工作了的人,一定要快! 再从裸机、U-boot、内核、驱动这样的路线学习就不适合了,时间就拉得太长了。 搞不好学了后面忘了前面。 并且实际工作中并不需要你去弄懂U-boot,会用就行:U-boot比驱动还复杂。 讲哪些内容? 怎么讲呢? 混着讲 比如先讲LED APP,知道APP怎么调用驱动,再讲LED硬件原理和裸机,最后讲驱动的编写。 这样可以快速掌握嵌入式Linux的整套开发流程, 不必像以前那样光学习裸机就花上1、2个月。 而里面的裸机课程,也会让你在掌握硬件操作的同时,把单片机也学会了。 讲基础技能 中断、休眠-唤醒、异步通知、阻塞、内存映射等等机制,会配合驱动和APP来讲解。 这些技能是嵌入式Linux开发的基础。 而这些驱动,只会涉及LED、按制、LCD等几个驱动。 掌握了这些输入、输出的驱动和对应的APP后,你已经具备基本的开发能力了。 讲配置 我们从厂家、从方案公司基本上都可以拿到一套完整的开发环境,怎么去配置它? 需要懂shell和python等配置脚本。 效果效率优先 以前我都是现场写代码、现场写文档,字写得慢,降低了学习效率。 这次,效果与效率统一考虑,不再追求所有东西都现场写。 容易的地方可先写好代码文档,难的地方现场写。 2.实战项目 会讲解这样的涉及linux网关/服务器相关项目(不限于,请多提建议):                      定位为:快速掌握项目开发经验,丰满简历。 涉及的每一部分都会讲,比如如果涉及蓝牙,在这里只会讲怎么使用,让你能写出程序;如果要深入,可以看后面的蓝牙专题。 3. 驱动大全 包括基础驱动、高级驱动。 这些驱动都是独立成章,深入讲解。 虽然基础驱动弱化了,但是作为Linux系统开发人员,这是必备技能,并且从驱动去理解内核是一个好方法。 在讲解这些驱动时,会把驱动的运行环境,比如内核调度,进程线程等概念也讲出来,这样就可以搭建一个知识体系。 没有这些知识体系的话,对驱动的理解就太肤浅了,等于在Linux框架下写裸机,一叶障目,不见泰山。 定位为:工具、字典,用到再学习。 4. 专题 想深入学习的任何内容,都可独立为专题。 比如U-boot专题、内核内存管理专题、systemtap调试专题。

    5035 人正在学习 去看看 韦东山
搞Windows驱动开发是一件痛苦的事情,特别是初学Windows驱动开发。有的人觉得Windows驱动开发就是把开发包WDK下载下来,然后只要掌握了C/C++语言,接下来无非就是类库调来调去,像调用MFC、QT之类的库那样,看着书和MSDN上的文档来就行了。等真正接触以后才发现根本不是那么一回事,痛苦源于以下几点:

痛苦一:中文资料太少
讲Windows驱动开发的,无论是中文书籍还是网上的中文资料,都很少,手把手从零到精通的更是不用说了。仅有的少量中文资料,有的还比较旧,讲的是DDK、NT式驱动,新手拿着WDK8.1、WDK10面对Win8、Win10系统很难跟着学习,而且现在的WDK,在WDM上又出现了了WDF,而WDF又分KMDF(内核模式驱动)和UMDF(用户模式驱动),对于UMDF(用户模式驱动)中文资料就更少了。而且驱动开发不像应用开发,需要先对操作系统原理有一定了解,不然遇到“I/O管理器”、“输入输出请求包”、“软件中断”、“符号链接”、”派遣函数“等名词和概念都不知所云,是寸步难行的。

解决方法:
①其实MSDN上已经提供了大量的文档和示例程序,对KMDF、UMDF等进行了详细的讲解,甚至还提供了手把手教你来的视频教程,可惜它们都是英文的,对于我等英语不好的程序员来说真是坐车不买票——白搭。最近越来越觉得英语不好是阻碍一个程序员进步最大的绊脚石,我们不谈什么算法,不谈什么数学功底了,首先要成为一个合格的码农,需要熟练使用各种编程语言和对应的各种工具库,而大部分的库都只有英文文档,不能流畅阅读这些文档的话,寸步难行。在成为了合格的码农,能熟练使用各种现成的工具库搭积木般的开发出应用程序后,才能去谈各种算法,各种数学知识的代入,才能去谈如何从一个码农升级为软件工程师。显然,当前摆在我面前最迫切的问题是如何成为一个合格的码农,先养活自己,再去考虑如何为社会主义做贡献,如何推动人类科技进步。学习英语确实应该赶快提上日程并立即执行、坚持执行了。英语好的人真的是把WDK拿来就像用MFC那样轻松,看着文档和示例程序,那些个API调来调去,一个完整的驱动程序就出来了。这不是吹牛,我之前在一家公司工作的时候,公司有个项目的一个模块需要在Ring0上实现,需要编写Windows内核驱动,然而公司里没有一个人会,于是老大将这个模块交给了他的一个朋友去做。他的这个朋友是中国人,在美国微软总部工作,英语水平怎么样就不用说了,总之人家以前从来没搞过驱动开发,看了文档和示例代码后,利用3天的业余时间就完成了这个模块,拿到了15K RMB的报酬,着实让人佩服,让人羡慕。真的,学好英语,不说“听说写”,只要能流畅阅读各种英文技术资料,完全是另一个世界,学什么、做什么都得心应手。
MSDN上的驱动开发资料入口:https://msdn.microsoft.com/zh-cn/windows/hardware
MSDN上手把手教你来的视频教程:https://msdn.microsoft.com/zh-cn/windows/hardware/gg454522

②抓住仅有的几本中文书籍,细细研读。关于Windows驱动开发的中文书籍大概有那么几本:
Windows驱动开发技术详解》(强烈推荐先看这本)
WindowsWDM设备驱动程序开发指南》(比较老了,2000年出版的,以win98、win2000为目标系统)
Windows设备驱动程序WDF开发》(为数不多讲WDF的)
《Windows 7设备驱动程序开发》(为数不多讲WDF的,且比较新,这本书的英文版是2010年出版的,中文译版是2012年出版的)
《竹林蹊径:深入浅出windows驱动开发》
《寒江独钓:Windows内核安全编程》
《天书夜读:从汇编语言到Windows内核编程》
《Windows内核安全与驱动开发》(是《天书夜读》和《寒江独钓》的合订本以及升级版)
后面的这四本其实不太适合作为入门书籍,而适合作为进阶书籍,对一些基础的概念和原理的讲解没有《Windows驱动开发技术详解》那么多

痛苦二:开发工具链不好用
对于我等刚学编程时用的就是VisualStudio以及各种智能提示智能感知的插件,甚至还有代码生成器的辅助的程序员来说,习惯了VisualStudio傻瓜化的一切,代码可以自动生成,窗体应用程序可以拖控件,甚至连网页都能拖控件。很难接受只有文本编辑器和命令行工具的开发环境,很多时候连代码编辑器不能智能提示都无法忍受,更不说手动调用cl.exe link.exe,写起代码来就像有一万只蚂蚁在身上爬。
在之前很长的一段时间里,VC6.0和VisualStudio里是没有创建驱动项目的选项的,更没有直接由IDE生成的HelloWorld,如果不想手动cl.exe link.exe,如果想在IDE中写代码,需要自己建一个空项目,然后手动配置编译器指令、链接器指令、包含目录、库目录等等,然后把书上的HelloWorld复制过来,然后可能还会遇到各种问题。生成好驱动程序文件后,还要手动拷贝到虚拟机中,借助工具或inf文件手动安装,然后要改系统配置,进入内核调试模式,然后要设置调试接口,比如使用COM串口调试的话要在虚拟机上设置,把COM串口映射到主机的命名管道,然后还不能在VC中调试,只能用Windbg来调试。总之每修改一下代码,需要手工进行很多步骤才能开始调试,非常麻烦。而且即便照着网上或书上的步骤来配置,在不同的环境下也会遇到各种奇怪的问题,搞起来颇为头疼。

解决方法:
①有个名为VisualDDK的第三方软件,使得这个事情方便了很多。VisualDDK装好后会给VisualStudio安装一个插件,使得在VisualStudio中可以通过这个插件新建驱动项目,并且自带HelloWorld,然后把VisualDDK Monitor装到虚拟机中,两边配置一下,接下来只要在VisualStudio这边生成驱动文件,VisualDDK会自动传给虚拟机中的系统进行安装,并且可以直接在VisualStudio中下断点调试了。不过这个软件在安装和配置过程中,也需要不少步骤,有时候也会出现一些配置不对的问题,偶尔也略感头疼,且稳定性和兼容性不是非常好。此方式适用于VisualStudio2010及以下版本,WDK7.1及以下版本。对于更高的版本,不建议用VisualDDK,因为可以继续往下看,下面有更激动人心的办法。
VS2010+VMWare8+VisualDDK1.5.6配置教程:http://techird.blog.163.com/blog/static/1215640362011112385241568/

②激动人心的就是,从VisualStudio2012开始,从WDK8.0开始,微软在里面整合了一套类似VisualDDK但比VisualDDK好用很多的工具。从那以后,开发Windows驱动程序就和开发Windows应用程序一样方便了,只需在虚拟机中安装一个EXE,然后在VisualStudio中输入它的IP、用户名、密码就OK了,接下来你只需新建一个WDK项目,点生成,VisualStudio会自动把驱动文件传给虚拟机中的系统并自动安装,然后点调试,就能在VisualStudio中单步调试了。是不是爽爆了,而且配置和设置都不复杂,MSDN上还有手把手教你配置的高清视频教程!
具体可以看我写的另一篇文章:
Win8.1+VS2013+WDK8.1+VirtualBox or VMware驱动开发环境配置》:http://blog.csdn.net/charlessimonyi/article/details/50904956

痛苦三:没有库可用
假如有一天老板叫你开发一个软件,允许你使用你擅长的任意一门语言,C/C++/C#/JAVA/Python等。但是附加了一个条件:不能使用任何第三方库,不能使用标准库!你有什么感想。What!标准库都不能用?那还写个毛。是的,没错,开发Windows驱动程序,几乎什么库都用不了,包括标准库。因为我们平时常用的第三方库或标准库,它的实现其实都是调用系统API,在Windows上调用的是Window API,即uer32.dll、kernel32.dll、gdi32.dll等等提供的API函数。但是这些API函数属于应用层API,无法在驱动程序中使用,因为驱动程序跑在内核层。所以只要一个库的实现上调用了系统API,就无法在驱动程序中使用。少数库还是可以使用的,比如math.h中的各种数值计算函数。不过仅剩的可用的库太少了,很多时候你都需要从新发明轮子。甚至连C语言中的malloc、free,C++中的new、delete,你都需要自己去实现。

解决方法:
①自己发明轮子就自己发明轮子,虽然没有现成库可用,但有内核层下的系统API可用,很多和应用层的API很相似,你想要的功能基本都可以通过这些API实现。

②咬咬牙,把苦水往肚子里咽。搞驱动开发的人很少,苦尽甘(qian)来


本文由CharlesSimonyi发表于CSDN博客:http://blog.csdn.net/charlessimonyi/article/details/50904854转载请注明出处

没有更多推荐了,返回首页