精华内容
下载资源
问答
  • 初学驱动开发书籍介绍 一、总述........................................................................................................................2 1.1分类..........................................

    Windows NT Device Driver Development

    初学驱动开发书籍介绍 

     
    一、总述........................................................................................................................2 
    1.1分类................................................................................................................2 
    1.2 目的...............................................................................................................2 
    1.3 开发环境的建造...........................................................................................2 
    1.4 编写驱动程序的原则...................................................................................3 
    1.5 计算机已知的挑选原则...............................................................................3 
    1.6 购买方式.......................................................................................................3 
    二、推荐的书目............................................................................................................4 
    2.1 《C 程序设计》...........................................................................................4 
    2.2 《Windows 2000内部揭密》.....................................................................5 
    2.3 《Microsoft Windows 驱动程序模型设计》.............................................5 
    三、一般驱动开发书籍................................................................................................7 
    3.1 Windows 2000设备驱动程序设计指南(原书第2版)..........................7 
    3.2 WINDOWS NT与WINDOWS 2000设备驱动及开发..............................8 
    3.3 WINDOWS WDM设备驱动程序开发指南................................................8 
    3.4  Windows 设备驱动程序(VxD与WDM)开发实务...............................9 
    四、相关推荐书目......................................................................................................10 
    4.1  Windows  核心编程...............................................................................10 
    4.2   LINUX设备驱动程序(第二版)............................................................11 
    五、烂书曝光..............................................................................................................12 
    5.1 Microsoft Windows 2000驱动程序设计指南............................................12 
    5.2 VC++.NET开发驱动程序详解——Windows 2000/XP...........................13 
    六、后记......................................................................................................................14 

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

    二、推荐的书目 
    2.1 《C程序设计》 
    我首先推荐的就是这本谭浩强的《C 程序设计》,如果你的 C语言非常熟练,那么你就
    跳过这一节,否则的话,你还是从你的教科书中找出这本,再仔细读两遍。一本书写出来十
    多年还有人用,这可是在 IT 技术更新换代飞速的年代,能作到这一点也足可见它的经典。
    虽然安装时需要 VC,但在编写驱动程序时却用的是Ansi C,还不是 C++,也不需要 VC的
    集成开发环境。当然你也可以为方便使用VC 的集成开发环境,并将代码封装成 C++。 

     2.2 《Windows 2000 内部揭密》 
    有时怨不得作 Unix/Linux 的人瞧不起作 Windows 的人,因为前者对操作系统的了解比
    后者更为深入一些。随便翻开一本 Linux 开发的书籍,上面就有关 Cache、文件系统、IPC
    (进程间通信)等等内容,而 Windows这方面的书籍是少之又少,大概与Microsoft的绝不
    公开源码有关,而能写得通俗易懂又这么精彩就更少了,很幸运,我们找到了这本书。如果
    。 
    你英文流利的话,最好看原版书Inside Microsoft Windows 2000 , Third Edition

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

    三、一般驱动开发书籍 
    下面这几本书籍专讲 WDM 驱动程序的,写得都还可以,虽然并不十分出色,但也不
    算差。而且他们所讲述的内容大同小异,所以,你只要拥有其中的一本或是两本就足够了。 
    3.1 Windows 2000 设备驱动程序设计指南(原书第 2 版) 
    3.2 WINDOWS NT与 WINDOWS 2000 设备驱动及开发 
    3.3 WINDOWS WDM设备驱动程序开发指南 
    3.4  Windows 设备驱动程序(VxD与 WDM)开发实务 

    四、相关推荐书目 
    4.1  Windows  核心编程 
    虽然叫核心编程,并不是指在内核模式(Kernel Mode)下编程,还是在用户态(User Mode)
    中,不过比较贴近底层的编程。其实它与驱动程序编程并无紧密的关系,之所以推荐,是因
    为有部分程序员是要将驱动程序、API(Appplication Program Interface)、测试程序一套都要
    作下来,那么这本书对你编制API就大有帮助。 
    4.2  LINUX 设备驱动程序(第二版) 

    五、烂书曝光 
    既然好书,就有烂书。我这个“烂”字并不是说它真的很差,误人子弟,只
    与他的价钱相比,不能作到物有所值。 
    5.1 Microsoft Windows 2000 驱动程序设计指南 
      这本书狂贵,还有它的中文翻译版,分成上下册,价格就更是高达300多元。 
    5.2 VC++.NET开发驱动程序详解——Windows 2000/XP 

    六、后记 
    总有些初学者问:看些什么相关书籍才好呢?去年就在 DriverDevelop.com
    上简单地写过一个书评,可惜后来的一次事故造成该帖子丢失,然后就决心重写
    一次。尤其是前一阵子,对于论坛里的帖子我都没怎么回答过,甚是惭愧呀,就
    用这个补过一下吧。 

    展开全文
  • 内容简介本书由浅入深,全面、系统地介绍了linux驱动开发技术,提供了大量实例供读者实战演练。另外,作者在实例讲解中详细分析了各种重要的理论知识,让读者能够举一反三。本书共分3篇。第1篇介绍了linux驱动开发...

    73b26dc04c42

    内容简介

    本书由浅入深,全面、系统地介绍了linux驱动开发技术,提供了大量实例供读者实战演练。另外,作者在实例讲解中详细分析了各种重要的理论知识,让读者能够举一反三。

    本书共分3篇。第1篇介绍了linux驱动开发概述、嵌入式处理器和开发板、构建嵌入式驱动程序开发环境、构建嵌入式linux操作系统、第一个驱动程序、简单的字符设备驱动程序等内容;第2篇介绍了设备驱动中的并发控制、阻塞和同步机制、中断与时钟机制、内存访问等内容;第3篇介绍了设备驱动模型、rtc实时时钟驱动程序、看门狗驱动程序、iic设备驱动程序、lcd设备驱动程序、触摸屏设备驱动程序、输入子系统驱动程序、块设备驱动程序、usb设备驱动程序等内容。

    作者专门为本书重点内容录制了教学视频,以提高读者的学习效率。另外,本书还赠送了大量的linux拓展学习视频。这些视频和本书源代码需要读者自行下载,下载地址见封面提示。

    本书重点突出,涉及面广,实用性强,从基本知识到核心原理,再到实例开发,几乎涉及linux驱动开发的所有重要知识。本书适合所有想学习linux驱动开发的入门人员阅读,也适合作为驱动工程师的参考书,对于linux驱动开发的专业开发人员也有很高的参考价值。

    目录

    第1篇 linux驱动开发基础

    第1章 linux驱动开发概述 2

    1.1 linux设备驱动的基本概念 2

    1.1.1 设备驱动程序概述 2

    1.1.2 设备驱动程序的作用 2

    1.1.3 设备驱动的分类 3

    1.2 linux操作系统与驱动的关系 4

    1.3 linux驱动程序开发 4

    1.3.1 用户态和内核态 5

    1.3.2 模块机制 5

    1.3.3 编写设备驱动程序需要了解的知识 6

    1.4 编写设备驱动程序的注意事项 6

    1.4.1 应用程序开发与驱动程序开发的差异 6

    1.4.2 gun c开发驱动程序 7

    1.4.3 不能使用c库开发驱动程序 7

    1.4.4 没有内存保护机制 7

    1.4.5 小内核栈 8

    1.4.6 重视可移植性 8

    1.5 linux驱动的发展趋势 9

    1.5.1 linux驱动的发展 9

    .1.5.2 驱动的应用 9

    1.5.3 相关学习资源 9

    1.6 小结 10

    第2章 嵌入式处理器和开发板简介 11

    2.1 处理器的选择 11

    2.1.1 处理器简述 11

    2.1.2 处理器的种类 11

    2.2 arm处理器 13

    2.2.1 arm处理器简介 14

    2.2.2 arm处理器系列 14

    2.2.3 arm处理器的应用 16

    2.2.4 arm处理器的选型 16

    2.2.5 arm处理器选型举例 19

    2.3 s3c2440开发板 20

    2.3.1 s3c2440开发板简介 20

    2.3.2 s3c2440开发板的特性 20

    2.4 小结 22

    第3章 构建嵌入式驱动程序开发环境 23

    3.1 虚拟机和linux安装 23

    3.1.1 在windows上安装虚拟机 23

    3.1.2 在虚拟机上安装linux 27

    3.1.3 设置共享目录 28

    3.2 代码阅读工具source insight 29

    3.2.1 source insight简介 30

    3.2.2 阅读源代码 30

    3.3 小结 33

    第4章 构建嵌入式linux操作系统 34

    4.1 linux操作系统的介绍 34

    4.1.1 linux操作系统 34

    4.1.2 linux操作系统的优点 35

    4.2 linux内核子系统 36

    4.2.1 进程管理 36

    4.2.2 内存管理 37

    4.2.3 文件系统 37

    4.2.4 设备管理 37

    4.2.5 网络功能 38

    4.3 linux源代码结构分析 38

    4.3.1 arch目录 38

    4.3.2 drivers目录 39

    4.3.3 fs目录 39

    4.3.4 其他目录 40

    4.4 内核配置选项 41

    4.4.1 配置编译过程 41

    4.4.2 常规配置 42

    4.4.3 模块配置 44

    4.4.4 块设备层配置 44

    4.4.5 cpu类型和特性配置 45

    4.4.6 电源管理配置 47

    4.4.7 总线配置 49

    4.4.8 网络配置 50

    4.4.9 设备驱动配置 53

    4.4.10 文件系统配置 60

    4.5 嵌入式文件系统基础知识 62

    4.5.1 嵌入式文件系统 62

    4.5.2 嵌入式系统的存储介质 63

    4.5.3 jffs文件系统 64

    4.5.4 yaffs文件系统 64

    4.6 构建根文件系统 64

    4.6.1 根文件系统概述 65

    4.6.2 linux根文件系统目录结构 65

    4.6.3 busybox构建根文件系统 66

    4.7 小结 71

    第5章 构建第一个驱动程序 72

    5.1 开发环境配置之内核升级 72

    5.1.1 为什么升级内核 72

    5.1.2 内核升级 73

    5.1.3 make menconfig的注意事项 75

    5.2 hello world驱动程序 77

    5.2.1 驱动模块的组成 77

    5.2.2 hello world模块 78

    5.2.3 编译hello world模块 79

    5.2.4 模块的操作 81

    5.2.5 hello world模块加载后文件系统的变化 82

    5.3 模块参数和模块之间通信 83

    5.3.1 模块参数 83

    5.3.2 模块的文件格式elf 83

    5.3.3 模块之间的通信 84

    5.3.4 模块之间的通信实例 85

    5.4 将模块加入内核 88

    5.4.1 向内核添加模块 88

    5.4.2 kconfig 88

    5.4.3 kconfig的语法 89

    5.4.4 应用实例:在内核中新增加add_sub模块 92

    5.4.5 对add_sub模块进行配置 94

    5.5 小结 95

    第6章 简单的字符设备驱动程序 96

    6.1 字符设备驱动程序框架 96

    6.1.1 字符设备和块设备 96

    6.1.2 主设备号和次设备号 97

    6.1.3 申请和释放设备号 98

    6.2 初识cdev结构 99

    6.2.1 cdev结构体 99

    6.2.2 file_operations结构体 101

    6.2.3 cdev和file_operations结构体的关系 102

    6.2.4 inode结构体 103

    6.3 字符设备驱动的组成 103

    6.3.1 字符设备加载和卸载函数 103

    6.3.2 file_operations结构体和其成员函数 104

    6.3.3 驱动程序与应用程序的数据交换 105

    6.3.4 字符设备驱动程序组成小结 106

    6.4 virtualdisk字符设备驱动 106

    6.4.1 virtualdisk的头文件、宏和设备结构体 106

    6.4.2 加载和卸载驱动程序 107

    6.4.3 cdev的初始化和注册 108

    6.4.4 打开和释放函数 109

    6.4.5 读写函数 110

    6.4.6 seek()函数 111

    6.4.7 ioctl()函数 113

    6.5 小结 113

    第2篇 linux驱动开发核心技术

    第7章 设备驱动中的并发控制 116

    7.1 并发与竞争 116

    7.2 原子变量操作 116

    7.2.1 原子变量操作 116

    7.2.2 原子整型操作 117

    7.2.3 原子位操作 119

    7.3 自旋锁 120

    7.3.1 自旋锁概述 120

    7.3.2 自旋锁的使用 120

    7.3.3 自旋锁的使用注意事项 122

    7.4 信号量 122

    7.4.1 信号量概述 122

    7.4.2 信号量的实现 123

    7.4.3 信号量的使用 123

    7.4.4 自旋锁与信号量的对比 125

    7.5 完成量 126

    7.5.1 完成量概述 126

    7.5.2 完成量的实现 126

    7.5.3 完成量的使用 127

    7.6 小结 128

    第8章 设备驱动中的阻塞和同步机制 129

    8.1 阻塞和非阻塞 129

    8.2 等待队列 130

    8.2.1 等待队列概述 130

    8.2.3 等待队列的实现 130

    8.2.3 等待队列的使用 131

    8.3 同步机制实验 132

    8.3.1 同步机制设计 132

    8.3.2 实验验证 136

    8.4 小结 137

    第9章 中断与时钟机制 138

    9.1 中断简述 138

    9.1.1 中断的概念 138

    9.1.2 中断的宏观分类 139

    9.1.3 中断产生的位置分类 140

    9.1.4 同步和异步中断 140

    9.1.5 中断小结 140

    9.2 中断的实现过程 141

    9.2.1 中断信号线(irq) 141

    9.2.2 中断控制器 141

    9.2.3 中断处理过程 142

    9.2.4 中断的安装与释放 142

    9.3 按键中断实例 144

    9.3.1 按键设备原理图 144

    9.3.2 有寄存器设备和无寄存器设备 144

    9.3.3 按键设备相关端口寄存器 145

    9.4 按键中断实例程序分析 147

    9.4.1 按键驱动程序组成 147

    9.4.2 初始化函数s3c2440_buttons_init() 147

    9.4.3 中断处理函数isr_button() 148

    9.4.4 退出函数s3c2440_buttons_exit() 149

    9.5 时钟机制 150

    9.5.1 时间度量 150

    9.5.2 时间延时 150

    9.6 小结 151

    第10章 内外存访问 152

    10.1 内存分配 152

    10.1.1 kmalloc()函数 152

    10.1.2 vmalloc()函数 153

    10.1.3 后备高速缓存 155

    10.2 页面分配 156

    10.2.1 内存分配 156

    10.2.2 物理地址和虚拟地址之间的转换 159

    10.3 设备i/o端口的访问 160

    10.3.1 linux i/o端口读写函数 160

    10.3.2 i/o内存读写 160

    10.3.3 使用i/o端口 164

    10.4 小结 166

    第3篇 linux驱动开发实用实战

    第11章 设备驱动模型 168

    11.1 设备驱动模型概述 168

    11.1.1 设备驱动模型的功能 168

    11.1.2 sysfs文件系统 169

    11.1.3 sysfs文件系统的目录结构 170

    11.2 设备驱动模型的核心数据结构 171

    11.2.1 kobject结构体 171

    11.2.2 设备属性kobj_type 175

    11.3 注册kobject到sysfs中的实例 179

    11.3.1 设备驱动模型结构 179

    11.3.2 kset集合 180

    11.3.3 kset与kobject的关系 181

    11.3.4 kset相关的操作函数 182

    11.3.5 注册kobject到sysfs中的实例 183

    11.3.6 实例测试 187

    11.4 设备驱动模型的三大组件 188

    11.4.1 总线 188

    11.4.2 总线属性和总线方法 192

    11.4.3 设备 194

    11.4.4 驱动 196

    11.5 小结 198

    第12章 rtc实时时钟驱动 199

    12.1 rtc实时时钟硬件原理 199

    12.1.1 rtc实时时钟 199

    12.1.2 rtc实时时钟的功能 199

    12.1.2 rtc实时时钟的工作原理 201

    12.2 rtc实时时钟架构 205

    12.2.1 加载卸载函数 205

    12.2.2 rtc实时时钟的平台驱动 206

    12.2.3 rtc驱动探测函数 207

    12.2.4 rtc实时时钟的使能函数s3c_rtc_enable() 210

    12.2.5 rtc实时时钟设置频率函数s3c_rtc_setfreq() 211

    12.2.6 rtc设备注册函数 rtc_device_register() 212

    12.3 rtc文件系统接口 214

    12.3.1 文件系统接口rtc_class_ops 214

    12.3.2 rtc实时时钟打开函数s3c_rtc_open() 215

    12.3.3 rtc实时时钟关闭函数s3c_rtc_release() 216

    12.3.4 rtc实时时钟获得时间函数s3c_rtc_gettime() 216

    12.3.5 rtc实时时钟设置时间函数s3c_rtc_settime() 218

    12.3.6 rtc驱动探测函数s3c_rtc_getalarm() 219

    12.3.7 rtc实时时钟设置报警时间函数s3c_rtc_setalarm() 220

    12.3.8 rtc设置脉冲中断使能函数s3c_rtc_setpie() 222

    12.3.9 rtc时钟脉冲中断判断函数s3c_rtc_proc() 222

    12.4 小结 223

    第13章 看门狗驱动程序 224

    13.1 看门狗硬件原理 224

    13.1.1 看门狗 224

    13.1.2 看门狗工作原理 224

    13.2 平台设备模型 226

    13.2.1 平台设备模型 226

    13.2.2 平台设备 227

    13.2.3 平台设备驱动 229

    13.2.4 平台设备驱动的注册和注销 230

    13.2.5 混杂设备 231

    13.2.6 混杂设备的注册和注销 232

    13.3 看门狗设备驱动程序分析 232

    13.3.1 看门狗驱动程序的一些变量定义 232

    13.3.2 看门狗模块的加载和卸载函数 233

    13.3.3 看门狗驱动程序探测函数 234

    13.3.4 设置看门狗复位时间函数s3c2410wdt_set_heartbeat() 235

    13.3.5 看门狗的开始函数s3c2410wdt_start()和停止函数

    s3c2410wdt_ stop() 237

    13.3.6 看门狗驱动程序移除函数s3c2410wdt_remove() 238

    13.3.7 平台设备驱动s3c2410wdt_driver中的其他重要函数 238

    13.3.8 混杂设备的file_operations中的函数 239

    13.3.9 看门狗中断处理函数s3c2410wdt_irq() 242

    13.4 小结 243

    第14章 iic设备驱动程序 244

    14.1 iic设备的总线及其协议 244

    14.1.1 iic总线的特点 244

    14.1.2 iic总线的信号类型 245

    14.1.3 iic总线的数据传输 245

    14.2 iic设备的硬件原理 246

    14.3 iic设备驱动程序的层次结构 247

    14.3.1 iic设备驱动的概述 248

    14.3.2 iic设备层 248

    14.3.3 i2c_driver和i2c_client的关系 251

    14.3.4 iic总线层 251

    14.3.5 iic设备层和总线层的关系 253

    14.3.6 写iic设备驱动的步骤 253

    14.4 iic子系统的初始化 254

    14.4.1 iic子系统初始化函数i2c_init() 254

    14.4.2 iic子系统退出函数i2c_exit () 254

    14.5 适配器驱动程序 255

    14.5.1 s3c2440对应的适配器结构体 255

    14.5.2 iic适配器加载函数i2c_add_adapter() 257

    14.5.3 idr机制 257

    14.5.4 适配器卸载函数i2c_del_adapter() 260

    14.5.5 iic总线通信方法s3c24xx_i2c_algorithm结构体 260

    14.5.6 适配器的传输函数s3c24xx_i2c_doxfer() 262

    14.5.7 适配器的中断处理函数s3c24xx_i2c_irq() 265

    14.5.8 字节传输函数i2s_s3c_irq_nextbyte() 267

    14.5.9 适配器传输停止函数s3c24xx_i2c_stop() 269

    14.5.10 中断处理函数的一些辅助函数 270

    14.6 iic设备层驱动程序 270

    14.6.1 iic设备驱动模块加载和卸载 271

    14.6.2 探测函数s3c24xx_i2c_probe() 272

    14.6.3 移除函数s3c24xx_i2c_remove() 274

    14.6.4 控制器初始化函数s3c24xx_i2c_init() 275

    14.6.5 设置控制器数据发送频率函数s3c24xx_i2c_clockrate() 276

    14.7 小结 278

    第15章 lcd设备驱动程序 279

    15.1 framebuffer概述 279

    15.1.1 framebuffer的概念 279

    15.1.2 framebuffer与应用程序的交互 280

    15.1.3 framebuffer显示原理 280

    15.1.4 lcd显示原理 281

    15.2 framebuffer的结构分析 281

    15.2.1 framebuffer架构和其关系 281

    15.2.2 framebuffer驱动程序的实现 282

    15.2.3 framebuffer架构及其关系 283

    15.3 lcd驱动程序分析 288

    15.3.1 lcd模块的加载和卸载函数 288

    15.3.2 lcd驱动程序的平台数据 290

    15.3.3 lcd模块的探测函数 291

    15.3.4 移除函数 295

    15.4 小结 296

    第16章 触摸屏设备驱动程序 297

    16.1 触摸屏设备工作原理 297

    16.1.1 触摸屏设备概述 297

    16.1.2 触摸屏设备的类型 297

    16.1.3 电阻式触摸屏 298

    16.2 触摸屏设备硬件结构 298

    16.2.1 s3c2440触摸屏接口概述 298

    16.2.2 s3c2440触摸屏接口的工作模式 299

    16.2.3 s3c2440触摸屏设备寄存器 300

    16.3 触摸屏设备驱动程序分析 303

    16.3.1 触摸屏设备驱动程序组成 303

    16.3.2 s3c2440触摸屏驱动模块的加载和卸载函数 304

    16.3.3 s3c2440触摸屏驱动模块的探测函数 305

    16.3.4 触摸屏设备配置 308

    16.3.5 触摸屏设备中断处理函数 309

    16.3.6 s3c2440触摸屏驱动模块的remove()函数 314

    16.4 测试触摸屏驱动程序 314

    16.5 小结 316

    第17章 输入子系统设计 317

    17.1 input子系统入门 317

    17.1.1 简单的实例 317

    17.1.2 注册函数input_register_device() 319

    17.1.3 向子系统报告事件 323

    17.2 handler注册分析 328

    17.2.1 输入子系统的组成 328

    17.2.2 input_handler结构体 328

    17.2.3 注册input_handler 329

    17.2.4 input_handle结构体 330

    17.2.5 注册input_handle 331

    17.3 input子系统 332

    17.3.1 子系统初始化函数input_init() 333

    17.3.2 文件打开函数input_open_file() 333

    17.4 evdev输入事件驱动分析 335

    17.4.1 evdev的初始化 335

    17.4.2 evdev设备的打开 337

    17.5 小结 340

    第18章 块设备驱动程序 341

    18.1 块设备简介 341

    18.1.1 块设备总体概述 341

    18.1.2 块设备的结构 342

    18.2 块设备驱动程序的架构 344

    18.2.1 块设备加载过程 344

    18.2.2 块设备卸载过程 345

    18.3 通用块层 346

    18.3.1 通用块层 346

    18.3.2 alloc_disk()函数对应的gendisk结构体 346

    18.3.3 块设备的注册和注销 349

    18.3.4 请求队列 349

    18.3.5 设置gendisk属性中的block_device_operations结构体 350

    18.4 不使用请求队列的块设备驱动 351

    18.4.1 不使用请求队列的块设备驱动程序的组成 352

    18.4.2 宏定义和全局变量 352

    18.4.3 加载函数 353

    18.4.4 卸载函数 355

    18.4.5 自定义请求处理函数 355

    18.4.6 驱动的测试 356

    18.5 i/o调度器 359

    18.5.1 数据从内存到磁盘的过程 359

    18.5.2 块i/o请求(bio) 360

    18.5.3 请求结构(request) 363

    18.5.4 请求队列(request_queue) 364

    18.5.5 请求队列、请求结构、bio等之间的关系 365

    18.5.6 四种调度算法 365

    18.6 自定义i/o调度器 367

    18.6.1 virtual_blkdev块设备的缺陷 367

    18.6.2 指定noop调度器 368

    18.6.3 virtual_blkdev的改进实例 368

    18.6.4 编译和测试 369

    18.7 脱离i/o调度器 370

    18.7.1 请求队列中的bio处理函数 370

    18.7.2 通用块层函数调用关系 371

    18.7.3 对virtual_blkdev块设备的改进 373

    18.7.4 编译和测试 376

    18.8 块设备的物理结构 377

    18.8.1 为virtual_blkdev块设备添加分区 377

    18.8.2 对新的virtual_blkdev代码的分析 378

    18.8.3 编译和测试 379

    18.8.4 分区数的计算 381

    18.8.5 设置virtual_blkdev的结构 382

    18.8.6 编译和测试 384

    18.9 小结 387

    第19章 usb设备驱动程序 389

    19.1 usb概述 389

    19.1.1 usb概念 389

    19.1.2 usb的特点 390

    19.1.3 usb总线拓扑结构 391

    19.1.4 usb驱动总体架构 391

    19.2 usb设备驱动模型 395

    19.2.1 usb驱动初探 395

    19.2.2 usb设备驱动模型 397

    19.2.3 usb驱动结构usb_driver 399

    19.3 usb设备驱动程序 404

    19.3.1 usb设备驱动加载和卸载函数 404

    19.3.2 探测函数probe()的参数usb_interface 405

    19.3.3 usb协议中的设备 406

    19.3.4 端点的传输方式 412

    19.3.5 设置 413

    19.3.6 探测函数storage_probe() 415

    19.4 获得usb设备信息 418

    19.4.1 设备关联函数associate_dev() 418

    19.4.2 获得设备信息函数get_device_info() 419

    19.4.3 得到传输协议get_transport()函数 420

    19.4.4 获得协议信息函数get_protocol() 421

    19.4.5 获得管道信息函数get_pipes() 422

    19.5 资源的初始化 425

    19.5.1 storage_probe()函数调用过程 425

    19.5.2 资源获取函数usb_stor_acquire_resources() 426

    19.5.3 usb请求块(urb) 427

    19.6 控制子线程 430

    19.6.1 控制线程 431

    19.6.2 扫描线程usb_stor_scan_thread() 433

    19.6.3 获得lun函数usb_stor_bulk_max_lun() 434

    19.7 小结 441

    展开全文
  • 中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些最佳实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计最佳实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。...

    1、《领域驱动设计》

     

    领域驱动设计

     

     

    内容简介  · · · · · ·

    《领域驱动设计:软件核心复杂性应对之道》是领域驱动设计方面的经典之作。全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些最佳实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计最佳实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。《领域驱动设计:软件核心复杂性应对之道》适合各层次的面向对象软件开发人员、系统分析员阅读。

    作者简介  · · · · · ·

    Eric Evans “领域驱动设计之父”,世界杰出软件建模专家。他创建了Domain Language公司,致力于帮助公司机构创建与业务紧密相关的软件。他在世界各地宣讲领域驱动设计(Domain-Driven Design,DDD)的思想,开设课程,参加会议,接受专访,拥有大批的追随者。从20世纪80年代开始,他就以设计师和程序员的双重身份参与过许多大型面向对象系统的设计和开发,涉及各种复杂的业务和技术领域。同时,他还培训和指导过许多开发团队开展极限编程实践。

     

    2、《实现领域驱动设计》

    实现领域驱动设计

     

    内容简介  · · · · · ·

    领域驱动设计(DDD)是教我们如何做好软件的,同时也是教我们如何更好地使用面向对象技术的。它为我们提供了设计软件的全新视角,同时也给开发者留下了一大难题:如何将领域驱动设计付诸实践?Vaughn Vernon 的这本《实现领域驱动设计》为我们给出了全面的解答。

    《实现领域驱动设计》分别从战略和战术层面详尽地讨论了如何实现DDD,其中包含了大量的最佳实践、设计准则和对一些问题的折中性讨论。《实现领域驱动设计》共分为14 章,在DDD 战略部分,《实现领域驱动设计》向我们讲解了领域、限界上下文、上下文映射图和架构等内容,战术部分包括实体、值对象、领域服务、领域事件、聚合和资源库等内容。一个虚构的案例研究贯穿全书,这对于实例讲解DDD 实现来说非常有用。

    《实现领域驱动设计》在DDD 的思想和实现之间建立起了一座桥梁,架构师和程序员均可阅读,同时也可以作为一本DDD 参考书。

    作者简介  · · · · · ·

    作者:Vaughn Vernon是一个经验丰富的软件工匠,在软件设计、开发和架构方面拥有超过25年的从业经验。他提倡通过创新来简化软件的设计和实现。从20世纪80年代开始,他便开始使用面向对象语言进行编程;在 20世纪 90年代早期,他便在领域建模中应用了领域驱动设计,那时他使用的是Smalltalk语言。他在很多业务领域都有从业经验,包括航空、环境、地理、保险、医学和电信等领域。同时,Vaughn在技术上也取得了很大的成功,包括开发可重用的框架和类库等。他在全球范围之内提供软件咨询和演讲,此外,他还在许多国家教授《实现领域驱动设计》的课程。你可以通过www.VaughnVernon.co访问到他的最新研究成果。他的Twitter:@VaughnVernon。

     3、《领域驱动设计精粹》

    领域驱动设计精粹

     

    内容简介  · · · · · ·

    领域驱动设计(DDD)是时下软件设计领域中的热门话题,它通过指导我们构建领域模型,来表达丰富的软件功能需求,并由此实现可以满足用户真正需要的软件。然而在实践过程中,由于不同的角色对于DDD的核心概念和主要工具的理解不同,常常会造成协作上的不一致。为了帮助和指导面向对象的开发人员、系统分析人员和设计人员更加合理地组织工作,各有侧重、有条不紊地进行复杂系统的开发,并有效地建立丰富而实用的领域模型,《领域驱动设计精粹》的作者Vaughn Vernon将自己近年来在领域驱动设计领域的理解进一步提炼,并将本书以精粹的形式呈现给广大的读者。

    《领域驱动设计精粹》的内容包括:DDD对于广大读者的意义、从战略层面进行设计、从战术层面进行设计,以及相关的辅助工具。

    当然,仅仅通过此书的阅读无法深入地掌握领域驱动设计的精髓,无论你是什么经验水平或角色,请阅读本书并在项目...

    4、《复杂软件设计之道:领域驱动设计全面解析与实战》

    复杂软件设计之道

     

    内容简介  · · · · · ·

    领域驱动设计简称DDD,《复杂软件设计之道:领域驱动设计全面解析与实战》前6章全面解析了DDD的分析方法和技术架构,包括领域驱动设计基础、领域驱动战略设计(有界上下文和统一语言)、聚合设计、实体和值对象、CQRS架构和事件溯源,第7章使用经典的货物运输系统案例进行了完整、详细的综合演示。

    《复杂软件设计之道:领域驱动设计全面解析与实战》同时引入了DDD的*新发展成果,如事件风暴建模,并以此建模方式替代传统的DDD建模方式讲解了多个案例。还涉及大量软件系统实现相关的技术和架构,读者在学习DDD的同时,也可以掌握这些技术、架构在DDD实现中的灵活应用。

    另外,每个概念或方法的讲解过程都穿插了具体实例,以方便读者结合实例进行学习;第2~7章每章*后都有总结与拓展,将本章涉及的案例和知识进行总结,并引入国际DDD专家的心得经验,试图告诉读者一条DDD实战中行...

     5、《领域驱动设计精简版》

    领域驱动设计精简版

     

    如何设计能深刻反映业务领域的领域模型?领域模型设计的未来发展方向是什么?……本书是Eric Evans的《领域驱动模型》一书的精简版,让你在短时间内理解领域驱动设计的内容。这本书没有介绍任何新的概念,它只是概要总结了领域驱动设计的本质,抽取了Eric Evans原书中关于这一主题的大部分内容,以及其他相关资料。这本书可以让你快速了解领域驱动设计的基础知识,但不能替代Eric书中提供的大量事例和案例研究或者Jimmy书中提供的动手事例等。

    展开全文
  • | 项目 | 价格 | | — | — | | Computer | $1600 | | Phone | $12 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》 开源分享完整内容戳这里 | | Pipe | $1 | 三种构建脚本 ...

    | 项目 | 价格 |

    | — | — |

    | Computer | $1600 |

    | Phone | $12

    《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

    开源分享完整内容戳这里

    |

    | Pipe | $1 |

    三种构建脚本


    Gradle的脚本都是配置型脚本。每一种脚本类型实际上都是某个具体的gradle的API中的类对象的委托,脚本执行对应的其实是其委托的对象的配置。在一个完整的gradle的构建体系中,总共有三种类型的构建脚本,同时也分别对应着三种委托对象

    | 脚本类型 | 委托对象 |

    | — | — |

    | Init script | Gradle |

    | Settings script | Settings |

    | Build script | Project |

    init.gradle

    对应的就是上面的Init script,实际上就是Gradle对象的委托,所以在这个init

    脚本中调用的任何属性引用以及方法,都会委托给这个 Gradle 实例。

    Init script的执行发生在 构建开始之前,也是整个构建最早的一步。

    配置Init scrip的依赖

    每个脚本的执行都可以配置当前脚本本身执行所需要的依赖项。Init

    scrip的配置如下:

    initscript {

    repositories {

    mavenCentral()

    }

    dependencies {

    classpath group: ‘org.apache.commons’, name: ‘commons-math’, version: ‘2.0’

    }

    }

    使用Init scrip

    要使用一个定义好的Init scrip,主要有以下几个方式

    • 在执行gradle命令的时候,通过-I--init-script命令选项指定脚本的路径 这种方式可以针对具体的一次构建。

    • 把一个init.gradle文件放到 USER_HOME/.gradle/` 目录

    • 把一个文件名以.gradle结尾的文件放到Gradle

    settings.gradle

    对应的是Settings script脚本类型,是Settings对象的委托。在 脚本中调用的任何属性引用以及方法,都会委托给这个 Settings实例。

    Settings script的执行发生在gradle的构建生命周期中的 初始化阶段。Settings脚本文件中声明了构建所需要的配置,并用以实例化项目的层次结构。在执行settings脚本并初始化Settings对象实例的时候,会自动的构建一个根项目对象rootProject并参与到整个构建当中。(rootProject默认的名称就是其文件夹的名称,其路径就是包含setting脚本文件的路径)。

    因此,在settings的脚本文件中,我们可以访问使用的对象包括:

    • Settings`对象

    • Gradle`对象

    • ProjectDescriptor`对象

    获取settings文件

    在gradle中,只要根项目/任何子项目的目录中包含有构件文件,那么就可以在相应的位置运行构建。而判断一个构建是否是多项目的构建,则是通过寻找settings脚本文件,因为它指示了子项目是否包含在多项目的构建中。

    查找settings文件的步骤如下:

    1. 在与当前目录同层次的master目录中搜索setting文件

    2.如果在1中没有找到settings文件,则从当前目录开始在父目录中查找settings文件。

    当找到settings文件并且文件定义中包含了当前目录,则当前目录就会被认为是多项目的构建中的一部分。

    build.gradle

    对应的就是前面提到的Build script脚本类型,是gradle中Project对象的委托。在脚本中调用的任何属性引用以及方法,都会委托给这个

    Project 实例。

    配置脚本依赖

    展开全文
  • 1:硬件相关:简单的数字电路要懂,看的懂电路图(这个很简单),能根据电路找到相应Camera硬件连接的GPIO,并...你要找本Linux驱动相关看看,比如《linux设备驱动程序》知道简单的linux设备驱动写法;当然工作...
  • 禾川伺服驱动器说明

    千次阅读 2021-01-30 16:02:09
    请绝对不要用手触及伺服驱动器的.......- 感谢您使用本产品,本使用操作手册提供 LCDA 系列伺服驱动器的相关信 息。内容包括: 伺服驱动器和伺服电机的安装与检查 伺服驱动器的组成说明 试运行操作的......(a) 130ST-M...
  • DDD领域驱动设计——Domain Driven Design入门书籍 控制复杂性的关键是有一个好的领域模型,这个模型不应该仅仅停留在领域的表面,而是要透过表象抓住领域的实质结构,从而为软件开发人员提供他们所需的支持。 领域...
  • SD伺服驱动器说明

    千次阅读 2020-12-30 13:59:12
    SDXXX系列交流伺服是本公司自主研发的新一代交流伺服驱动器,主要采用最新的IRMCK201作为核心运算单元,并采用了复杂可编程器件EPLD及三菱智能功率模块,具有集成度高,体积小,响应速度快,保护完善,可靠性高等一...
  • 松下伺服驱动器说明.pdfPanasonicMinas A4 系列 AC 伺服驱动器说明Minas A4 系列驱动器技术资料选编 i目 录1.规格型号说明 ...
  • 交流伺服电机驱动器使用说明1.特点16位CPU+32位DSP三环(位置、速度、电流)全数字化控制脉冲序列、速度、转矩多种指令及其组合控制转速、转矩实时动态显示完善的自诊断保护功能,免维护型产品交流同步全...
  • MITSUBISHI三菱J2S数字交流伺服安装调试说明(2003.11版本)三菱J2S数字交流伺服调试说明书目 录1....三菱J2S伺服驱动器的参数和性能优化调整1三菱J2S数字交流伺服调试说明1.三菱J2S连接示意图MR-J2S-100A(...
  • Linux USB Driver BasicsIntroductionDrivers are software components that operating systems use to providehardware specific services to applications. This webpage attempts to documentthe basics of USB d...
  • 从实习,跳槽,再到试用、转正,也做过一些项目,算是在Linux驱动开发这一行入了门。 一些简单的外设自己也有能力编写了,但一些复杂的驱动还是需要原厂支持。每到这个时候,就感觉自己特别的废物,就会想到,...
  • 字符设备驱动开发

    2021-08-04 15:17:28
    文章目录一、字符设备驱动简介1. file_operations二、字符设备驱动开发步骤1.驱动模块的加载和卸载2.字符设备注册与注销3.实现设备的具体操作函数4.添加LICENSE和作者信息三、linux设备号1.设备号的组成2.设备号的...
  • 《数智驱动新增长》读书笔记

    千次阅读 2021-11-22 13:13:56
    《数智驱动新增长》小结   1、网络协同和数据智能将会成为企业未来的核心竞争力。   2、数智化转型的5个关键行动    (1)基础设施云化(上云)   ①实现资源算力按需付费拓展,降低公司的成本;   ②无需从0...
  • 本书与其他同类相关书籍相比,更加接近当前嵌入式Linux设备驱动开发的工程实践,非常适合一线开发者阅读。 ——宋宝华知名Linux开发者、海思高级顾问 学习Linux驱动程序的设计是熟悉和理解Linux内核的最佳途径。本书...
  • V4L2驱动程序架构.pdf

    2021-05-19 04:13:02
    1 V4L21 V4L2简介11 VV44LL22video4linux2(V4L2)是Linux内核中关于视频设备的内核驱动,它为Linux中视频设备访问提供了通用接口,在Linux系统中,V4L2驱动的Video设备节点路径通常/dev/video/中的videoXV4L2驱动对...
  • 2.2.1. WIFI驱动功能定义 5 2.2.2. WIFI安全定义 6 2.3. 系统资源需求与依赖 7 2.3.1. 硬件资源框图 7 2.3.2. 软件资源 8 2.4. 软件设计方案 8 2.4.1. WIFI驱动框架结构 8 2.4.2. LIBWIFI模块驱动软件方框图 10 2.4....
  • 第二部分:模型驱动设计的构造块 开发一个好的领域模型是一门艺术。而模型中各个元素的实际设计和实现则相对系统化。将领域设计与软件系统中的其他关注点分离会使设计与模型之间的关系非常清晰。根据不同的特征来...
  • 图书目录第1章 概述 1第2章 内核模块 62.1 第一个内核模块程序 72.2 内核模块的相关工具 102.3 内核模块一般的形式 112.4 将多个源文件编译生成一个内核模块 132.5 内核模块参数 152.6 内核模块依赖 172.7 关于内核...
  • 前言第一篇 Android的前世今生——Android概述篇第1章 Android的前世今生1.1 Android的起源1.2 开放手机联盟1.3 开源与相关协议1.4 系统的升级与发展第2章 Android体系结构2.1 四层空间基本结构2.2 Android代码目录...
  • 2、Linux基础 包括Linux内核基础、嵌入式Linux系统、内核驱动开发基础以及Linux系统优化。Linux内核基础:深入理解Linux内核。 Linux系统优化:Optimizing Embedded Linux System: 泰晓科技 - 嵌入式系统优化 3、...
  • Linux驱动开发2:字符设备驱动之我的第一个字符设备Linux驱动开发模板 在本章节,我们从Linux驱动开发中最基础的字符设备驱动开发开始,重点学习Linux下字符设备开发框架,本章会以一个虚拟的设备为例,讲解如何进行...
  • 伺服驱动器 CTB BK Servo

    千次阅读 2020-12-30 07:50:54
    产品详情伺服驱动器 CTB BK ServoBKSC-4030GS2 S/N:CZ13051839SMP BKSC-4030GS2SMP BKSC-4030GS2,30KWSMP BKSC-4030GS2,30KW 变频器原装进口 ALTHEN 备件 SG-KS-24-420原装进口 REXTOTH 比例放大阀 VT-VSPA2-50-1X/...
  • Linux驱动程序设计Linux驱动程序设计全文详解[日期:2007-10-19]linux驱动程序设计PROGRAM FOR BLOCK DEVICE DRIVER OF DEVFS TYPE对linux的devfs类型的驱动程序的编写可以从以下几大内容理解和入手:通过分析驱动...
  • 它的驱动程序的编写过程与字符型设备驱动程序的编写有很大的区别。块设备驱动编程接口相对复杂,不如字符设备明晰易用。块设备驱动程序对整个系统的性能影响较大,速度和效率是设计块设备驱动程要重点考...
  • 本书共分23章,内容涵盖了windows操作系统的基本原理、nt驱动程序与wdm驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的pci驱动程序、usb驱动...
  • 安装火狐浏览器Firefox和Git就不多赘述,主要是安装Geckodriver(通过Selenium远程控制Firefox的驱动) 下载地址:https://github.com/mozilla/geckodriver/releases 上内容是,Geckodriver下载解压后放到系统路径...
  • usb驱动程序分析

    2021-05-22 14:28:33
    usb驱动是linux内核中比较复杂的驱动之一,因此,大多数usb教程建议从usb-skeleton开始学习usb驱动。个人认为这是相当正确的,usb-sekelton提供了一个usb驱动开发的模板,而且代码量较少,很适合初学者的学习。记住...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼西门子V90伺服驱动系统作为SINAMICS驱动系列家族的新成员,与SIMOTICS S-1FL6 完美结合,组成最佳的伺服驱动系统,实现位置控制、速度控制和扭矩控制。通过优化的设计,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 245,007
精华内容 98,002
关键字:

驱动有关的书