嵌入式Linux驱动开发教程图书介绍

图书名称: 嵌入式Linux驱动开发教程

图书作者: 华清远见嵌入式学院 姜先刚 刘洪涛

出版单位: 电子工业出版社

丛书名称: 高等院校嵌入式人才培养规划教材

出版日期: 2017 年5月

分享到:

  • 图书简介

    《嵌入式Linux驱动开发教程》结合大量实例,在基于ARM Cortex-A9四核处理器Exynos4412的硬件教学平台和PC上,全面详细地讲解了Linux设备驱动开发。主要内容包括开发环境的搭建、内核模块、字符设备驱动框架、高级I/O、中断和时间管理、互斥和同步、内存和DMA、Linux设备模型、外设的驱动实例、总线类设备驱动、块设备驱动、网络设备驱动和内核调试技术。每一个知识点都有一个对应的典型实例,大多数实例既可以在上面说到的嵌入式平台上运行,也可以在PC上运行。另外,《嵌入式Linux驱动开发教程》也引入了新内核的一些新特性,比如高分辨率定时器、针对嵌入式平台的dmaengine和设备树。在需要重点关注的地方还加入了大量的内核源码分析,使读者能够快速并深刻理解Linux设备驱动的开发。 《嵌入式Linux驱动开发教程》可作为大学院校电子、通信、计算机、自动化等专业的嵌入式Linux设备驱动开发课程的教材,也可供嵌入式Linux驱动开发人员参考。

  • 图书目录

    嵌入式Linux驱动开发教程章节:

    第1章 概述 1

    第2章 内核模块 6

    2.1 第一个内核模块程序 7

    2.2 内核模块的相关工具 10

    2.3 内核模块的一般形式 11

    2.4 将多个源文件编译生成一个内核模块 13

    2.5 内核模块参数 15

    2.6 内核模块依赖 17

    2.7 关于内核模块的进一步讨论 20

    2.8 习题 21

    第3章 字符设备驱动 23

    3.1 字符设备驱动基础 24

    3.2 字符设备驱动框架 30

    3.3 虚拟串口设备 35

    3.4 虚拟串口设备驱动 35

    3.5 一个驱动支持多个设备 39

    3.6 习题 45

    第4章 高级I/O操作 46

    4.1 ioctl设备操作 47

    4.2 proc文件操作 56

    4.3 非阻塞型I/O 58

    4.4 阻塞型I/O 60

    4.5 I/O多路复用 65

    4.6 异步I/O 69

    4.7 几种I/O模型总结 73

    4.8 异步通知 74

    4.9 mmap设备文件操作 89

    4.10 定位操作 88

    4.11 习题 90

    第5章 中断和时间管理 92

    5.1 中断进入过程 93

    5.2 驱动中的中断处理 98

    5.3 中断下半部 101

    5.3.1 软中断 102

    5.3.2 tasklet 104

    5.3.3 工作队列 106

    5.4 延时控制 108

    5.5 定时操作 109

    5.5.1 低分辨率定时器 109

    5.5.2 高分辨率定时器 112

    5.6 习题 114

    第6章 互斥和同步 116

    6.1 一种典型的竞态 117

    6.2 内核中的并发 117

    6.3 中断屏蔽 118

    6.4 原子变量 119

    6.5 自旋锁 120

    6.6 读写锁 122

    6.7 顺序锁 123

    6.8 信号量 125

    6.9 读写信号量 127

    6.10 互斥量 127

    6.11 RCU机制 128

    6.12 虚拟串口驱动加入互斥 130

    6.13 完成量 134

    6.14 习题 135

    第7章 内存和DMA 137

    7.1 内存组织 138

    7.2 按页分配内存 139

    7.3 slab分配器 142

    7.4 不连续内存页分配 144

    7.5 per-CPU变量 145

    7.6 动态内存实例 146

    7.7 I/O内存 147

    7.8 DMA原理及映射 155

    7.8.1 DMA工作原理 155

    7.8.2 DMA映射 157

    7.9 DMA统一编程接口 160

    7.10 习题 164

    第8章    Linux设备模型    166

    8.1    设备模型基础    167

    8.2    总线、设备和驱动    171

    8.3    平台设备及其驱动    176

    8.3.1    平台设备    176

    8.3.2    平台驱动    178

    8.3.3    平台驱动简单实例    179

    8.3.4    电源管理    182

    8.3.5    udev和驱动的自动加载    183

    8.3.6    使用平台设备的LED驱动    184

    8.3.7    自动创建设备节点    190

    8.4    Linux设备树    193

    8.4.1    Linux设备树的由来    193

    8.4.2    Linux设备树的目的    194

    8.4.3    Linux设备树的使用    195

    8.4.4    使用设备树的LED驱动    202

    8.5    习题    204

    第9章    字符设备驱动实例    205

    9.1    LED驱动    206

    9.2    基于中断的简单按键驱动    209

    9.3    基于输入子系统的按键驱动    213

    9.4    ADC驱动    222

    9.5    PWM驱动    231

    9.6    RTC驱动    239

    第10章    总线类设备驱动    243

    10.1    I2C设备驱动    244

    10.1.1    I2C协议简介    244

    10.1.2    Linux I2C驱动    246

    10.1.3    I2C设备驱动实例    251

    10.2    SPI设备驱动    258

    10.2.1    SPI协议简介    258

    10.2.2    Linux SPI驱动    259

    10.2.3    SPI设备驱动范例    264

    10.3    USB设备驱动    268

    10.3.1    USB协议简介    268

    10.3.2    Linux USB驱动    271

    10.3.3    USB设备驱动实例    274

    10.4    PCI设备驱动    283

    10.4.1    PCI协议简介    283

    10.4.2    Linux PCI驱动    287

    10.4.3    PCI设备驱动实例    288

    10.5    习题    296

    第11章    块设备驱动    298

    11.1    磁盘结构    299

    11.2    块设备内核组件    300

    11.3    块设备驱动核心数据结构和函数    301

    11.4    块设备驱动实例    308

    11.5    习题    316

    第12章    网络设备驱动    317

    12.1    网络层次结构    318

    12.2    网络设备驱动核心数据结构和函数    319

    12.3    网络设备驱动实例    327

    12.4    DM9000网络设备驱动代码分析    333

    12.5      NAPI340

    12.6    习题    343

    第13章    内核调试技术    344

    13.1    内核调试方法    345

    13.1.1    内核调试概述    345

    13.1.2    学会分析内核源程序    346

    13.1.3    调试方法介绍    346

    13.2    内核打印函数    350

    13.2.1    内核镜像解压前的串口输出函数    350

    13.2.2    内核镜像解压后的串口输出函数    352

    13.2.3    内核打印函数    353

    13.3    获取内核信息    357

    13.3.1    系统请求键    357

    13.3.2    通过/proc接口    358

    13.3.3    通过/sys接口    359

    13.4    处理出错信息    362

    13.4.1    oops信息    362

    13.4.2    panic    364

    13.4.3    通过ioctl方法    366

    13.5    内核源码调试    367

    13.6    习题    369

    第14章    搭建开发环境    370

    14.1    准备Linux开发主机    371

    14.2    安装串口相关软件    375

    14.2.1    安装串口驱动    375

    14.2.2    安装串口终端软件PuTTY    376

    14.2.3    安装串口终端软件minicom    377

    14.3    安装TFTP和NFS服务器    379

    14.4    准备Linux内核源码    381

    14.5    在目标板上运行Linux系统    382

    14.6    源码浏览及编辑器环境    386

    习题答案    388

    参考文献    389

  • 课程推荐

    · 嵌入式高薪就业课程

    · 嵌入式Linux应用开发培训班

    · 嵌入式Linux系统开发培训班

    · 嵌入式Linux驱动开发培训班

    · Linux内核修炼培训班

    · QT应用开发培训班