Linux设备驱动开发详解:基于最新的Linux4.0内核

Linux设备驱动开发详解:基于最新的Linux4.0内核

作者:宋宝华

出版社:机械工业

出版年:2015年8月

ISBN:9787111507895

所属分类:绘画摄影

书刊介绍

《Linux设备驱动开发详解:基于最新的Linux4.0内核》内容简介

对于嵌入式工程师来说,进入更高阶段后,学习Linux设备驱动开发无疑就是职业生涯的一次“重生”。这是因为Linux设备驱动开发不仅仅涉及操作系统的转换,开发方式的转换,更重要的是思维上的转变。对于Linux这样一个复杂系统,如何从复杂的代码中抓住设备驱动开发的关键是任何一个Linux设备驱动开发者入门时需要面对的挑战。除了知识、工具之外,往往还需要思路上的指导。本书不但帮助Linux设备驱动开发的初学者厘清必要的概念,还从具体的实例、设备驱动开发的指导原则循序渐进地引导读者渐入学习佳境。为了让读者能够达到Linux设备驱动开发的至臻境界,作者更是从软件工程的角度抽象出设备驱动开发的一般思想。毫无疑问,本书将成为读者学习Linux设备驱动开发过程中的一座“灯塔”。
宋宝华,Linux布道者,知名嵌入式系统专家,《Essential Linux Device Drivers》译者。作为最早从事Linux内核与设备驱动研究的专家之一,他在众多国内外知名企业开展Linux技术培训。他也是一位活跃的Linux开发者和深度实践者,为Linux官方内核贡献了大量的Linux源码并承担代码审核工作。至今已向Linux官方内核提交逾数万行代码和几百个补丁。他的《Linux设备驱动开发详解》系列书在嵌入式Linux开发者中有口皆碑,是众多Linux书籍中为数不多的畅销书。

作品目录

赞誉
推荐序一
推荐序二
前言
第1章:Linux设备驱动概述及开发环境构建
1.1、设备驱动的作用
1.2、无操作系统时的设备驱动
1.3、有操作系统时的设备驱动
1.4、Linux设备驱动
1.5、Linux设备驱动的开发环境构建
1.6、设备驱动Hello
World:LED驱动
第2章:驱动设计的硬件基础
2.1、处理器
2.2、存储器
2.3、接口与总线
2.4、CPLD和FPGA
2.5、原理图分析
2.6、硬件时序分析
2.7、芯片数据手册阅读方法
2.8、仪器仪表使用
2.9、总结
第3章:Linux内核及内核编程
3.1、Linux内核的发展与演变
3.2、Linux
2.6后的内核特点
3.3、Linux内核的组成
3.4、Linux内核的编译及加载
3.5、Linux下的C编程特点
3.6、工具链
3.7、实验室建设
3.8、串口工具
3.9、总结
第4章:Linux内核模块
4.1、Linux内核模块简介
4.2、Linux内核模块程序结构
4.3、模块加载函数
4.4、模块卸载函数
4.5、模块参数
4.6、导出符号
4.7、模块声明与描述
4.8、模块的使用计数
4.9、模块的编译
4.10、使用模块“绕开”GPL
4.11、总结
第5章:Linux文件系统与设备文件
5.1、Linux文件操作
5.2、Linux文件系统
5.3、devfs
5.4、udev用户空间设备管理
5.5、总结
第6章:字符设备驱动
6.1、Linux字符设备驱动结构
6.2、globalmem虚拟设备实例描述
6.3、globalmem设备驱动
6.4、globalmem驱动在用户空间中的验证
6.5、总结
第7章:Linux设备驱动中的并发控制
7.1、并发与竞态
7.2、编译乱序和执行乱序
7.3、中断屏蔽
7.4、原子操作
7.5、自旋锁
7.6、信号量
7.7、互斥体
7.8、完成量
7.9、增加并发控制后的globalmem的设备驱动
7.10、总结
第8章:Linux设备驱动中的阻塞与非阻塞I/O
8.1、阻塞与非阻塞I/O
8.2、轮询操作
8.3、支持轮询操作的globalfifo驱动
8.4、总结
第9章:Linux设备驱动中的异步通知与异步I/O
9.1、异步通知的概念与作用
9.2、Linux异步通知编程
9.3、支持异步通知的globalfifo驱动
9.4、Linux异步I/O
9.5、总结
第10章:中断与时钟
10.1、中断与定时器
10.2、Linux中断处理程序架构
10.3、Linux中断编程
10.4、中断共享
10.5、内核定时器
10.6、内核延时
10.7、总结
第11章:内存与I/O访问
11.1、CPU与内存、I/O
11.2、Linux内存管理
11.3、内存存取
11.4、设备I/O端口和I/O内存的访问
11.5、I/O内存静态映射
11.6、DMA
11.7、总结
第12章:Linux设备驱动的软件架构思想
12.1、Linux驱动的软件架构
12.2、platform设备驱动
12.3、设备驱动的分层思想
12.4、主机驱动与外设驱动分离的设计思想
12.5、总结
第13章:Linux块设备驱动
13.1、块设备的I/O操作特点
13.2、Linux块设备驱动结构
13.3、Linux块设备驱动的初始化
13.4、块设备的打开与释放
13.5、块设备驱动的ioctl函数
13.6、块设备驱动的I/O请求处理
13.7、实例:vmem_disk驱动
13.8、Linux
MMC子系统
13.9、总结
第14章:Linux网络设备驱动
14.1、Linux网络设备驱动的结构
14.2、网络设备驱动的注册与注销
14.3、网络设备的初始化
14.4、网络设备的打开与释放
14.5、数据发送流程
14.6、数据接收流程
14.7、网络连接状态
14.8、参数设置和统计数据
14.9、DM9000网卡设备驱动实例
14.10、总结
第15章:Linux
I2C核心、总线与设备驱动
15.1、Linux
I²C体系结构
15.2、Linux
I2C核心
15.3、Linux
I²C适配器驱动
15.4、Linux
I²C设备驱动
15.5、Tegra
I²C总线驱动实例
15.6、AT24xx
EEPROM的I²C设备驱动实例
15.7、总结
第16章:USB主机、设备与Gadget驱动
16.1、Linux
USB驱动层次
16.2、USB主机控制器驱动
16.3、USB设备驱动
16.4、USB
UDC与Gadget驱动
16.5、USB
OTG驱动
16.6、总结
第17章:I²C、SPI、USB驱动架构类比
17.1、I²C、SPI、USB驱动架构
17.2、I²C主机和外设眼里的Linux世界
第18章:ARM
Linux设备树
18.1、ARM设备树起源
18.2、设备树的组成和结构
18.3、由设备树引发的BSP和驱动变更
18.4、常用的OF
API
18.5、总结
第19章:Linux电源管理的系统架构和驱动
19.1、Linux电源管理的全局架构
19.2、CPUFreq驱动
19.3、CPUIdle驱动
19.4、PowerTop
19.5、Regulator驱动
19.6、OPP
19.7、PM
QoS
19.8、CPU热插拔
19.9、挂起到RAM
19.10、运行时的PM
19.11、总结
第20章:Linux芯片级移植及底层驱动
20.1、ARM
Linux底层驱动的组成和现状
20.2、内核节拍驱动
20.3、中断控制器驱动
20.4、SMP多核启动以及CPU热插拔驱动
20.5、DEBUG_LL和EARLY_PRINTK的设置
20.6、GPIO驱动
20.7、pinctrl驱动
20.8、时钟驱动
20.9、dmaengine驱动
20.10、总结
第21章:Linux设备驱动的调试
21.1、GDB调试器的用法
21.2、Linux内核调试
21.3、内核打印信息——printk()
21.4、DEBUG_LL和EARLY_PRINTK
21.5、使用“/proc”
21.6、Oops
21.7、BUG_ON()和WARN_ON()
21.8、strace
21.9、KGDB
21.10、使用仿真器调试内核
21.11、应用程序调试
21.12、Linux性能监控与调优工具
21.13、总结

相关推荐

微信二维码