Linux 驱动程序开发实例-第2版

Linux 驱动程序开发实例-第2版

作者:冯国进

出版社:机械工业出版社

出版年:2017-07-01

评分:5分

ISBN:9787111567066

所属分类:网络科技

书刊介绍

Linux 驱动程序开发实例-第2版 内容简介

本书使用了较新的Linux内核,实例丰富,讲解细致。强烈建议嵌入式开发人员阅读。

Linux 驱动程序开发实例-第2版 本书特色

Linux设备驱动程序是高级应用程序与硬件设备之间的桥梁。驱动程序开发是软硬件相互结合的技术。本书是一本专门介绍Linux设备驱动程序开发的书籍,涵盖了Linux驱动程序基础、驱动模型、内存管理、内核同步机制、I2C驱动程序、LCD驱动程序、网络驱动程序、USB驱动程序、输入子系统驱动程序、块设备驱动程序、音频设备驱动等内容。本书以实例为主线,是为Linux设备驱动程序开发人员量身打造的学习精品书籍和实战指南。本书基于Linux4.5内核,提供了丰富的实例代码和详细的注释,并附赠完整源代码供读者下载。本书主要面向各种层次的嵌入式Linux软硬件开发工程师,也可以作为各类嵌入式系统培训机构的培训实验教材和高校计算机课程教辅书籍。

Linux 驱动程序开发实例-第2版 目录

第 1 章 Linux 设备驱动程序入门1
1.1 设备驱动程序基础1
1.1.1 驱动程序的概念1
1.1.2 驱动程序的加载方式2
1.1.3 编写可加载模块3
1.1.4 带参数的可加载模块4
1.1.5 模块依赖5
1.1.6 printk 的等级7
1.1.7 设备驱动程序类别8
1.2 字符设备驱动程序原理9
1.2.1 file_o p erations 结构9
1.2.2 使用 register_chrdev 注册字符设备11
1.2.3 使用 cdev_add 注册字符设备14
1.2.4 字符设备的读写16
1.2.5 IOCTL 接口17
1.2.6 seek 接口20
1.2.7 poll 接口22
1.2.8 异步通知26
1.3 seq_file 机制28
1.3.1 seq_file 原理28
1.3.2 seq_file 实例29
1.4 /proc 文件系统35
1.4.1 /proc 文件系统概述35
1.4.2 /proc 文件系统接口36
1.5 Linux 内核导读40
1.5.1 Linux 内核组成40
1.5.2 Linux 的代码结构42
1.5.3 内核 Makefile43
第 2 章 Linux 设备驱动模型44
2.1 内核对象44
2.1.1 Kobject44
2.1.2 kobj_type45
2.1.3 Kset45
2.2 设备模型层次46
2.3 sysfs 文件系统49
2.4 platform 概念51
2.5 Attributes56
2.6 设备事件通知60
2.6.1 kobject uevent60
2.6.2 uevent helper61
2.6.3 udev63
2.7 设备树64
第 3 章 Linux 内核同步机制67
3.1 原子操作67
3.2 锁机制68
3.2.1 自旋锁68
3.2.2 读写锁70
3.2.3 RCU71
3.2.4 信号量75
3.2.5 读写信号量77
3.2.6 互斥量77
3.3 等待队列78
3.3.1 等待队列原理78
3.3.2 阻塞模式读实例78
3.3.3 完成事件81
3.4 通知链83
第 4 章 内存管理与链表86
4.1 物理地址和虚拟地址86
4.2 内存分配与释放87
4.3 cache88
4.4 IO 端口到虚拟地址的映射88
4.4.1 静态映射88
4.4.2 ioremap89
4.5 内核空间到用户空间的映射90
4.5.1 mmap 接口90
4.5.2 mmap 系统调用91
4.6 DMA 映射93
4.7 内核链表93
4.7.1 Linux 内核中的链表93
4.7.2 内核链表实例95
第 5 章 任务与调度98
5.1 schedule98
5.2 内核线程99
5.3 内核调用应用程序101
5.4 软中断机制103
5.4.1 软中断原理103
5.4.2 tasklet106
5.5 工作队列108
5.5.1 工作队列原理108
5.5.2 延迟工作队列110
5.6 内核时间110
5.6.1 Linux 下的时间概念110
5.6.2 Linux 下的延迟111
5.6.3 内核定时器112
第 6 章 简单硬件设备驱动程序115
6.1 硬件基础知识115
6.1.1 硬件设备原理115
6.1.2 时序图原理116
6.1.3 嵌入式 Linux 系统构成117
6.1.4 硬件初始化117
6.1.5 clk 体系120
6.2 dev/mem 与 dev/kmem121
6.3 寄存器访问124
6.3.1 S3C6410X 地址映射124
6.3.2 S3C6410X 看门狗驱动程序实例128
6.4 电平控制131
6.4.1 S3C6410X LED 驱动程序实例132
6.4.2 扫描型按键驱动程序实例135
6.5 硬件中断处理137
6.5.1 硬件中断处理原理137
6.5.2 中断型按键驱动程序实例141
6.6 看门狗驱动架构146
6.7 RTC 驱动148
6.8 LED 类设备 153
第 7 章 I2C 设备驱动程序157
7.1 I2C 接口原理157
7.2 Linux 的 I2C 驱动程序架构159
7.2.1 I2C 适配器160
7.2.2 I2C 算法161
7.2.3 I2C 从设备161
7.2.4 I2C 从设备驱动162
7.2.5 I2C 从设备驱动开发163
7.3 I2C 控制器驱动163
7.3.1 S3C2410X 的 I2C 控制器163
7.3.2 S3C2410X 的 I2C 控制器驱动164
7.4 通用 I2C 从设备172
7.4.1 通用 I2C 从设备驱动172
7.4.2 通过 read 与 write 接口读写174
7.4.3 通过 I2C_RDWR 命令读写177
7.4.4 I2Ctools180
7.5 个性化 I2C 从设备驱动181
第 8 章 TTY 与串口驱动程序185
8.1 TTY 概念185
8.2 Linux TTY 驱动程序体系 185
8.2.1 TTY 驱动程序架构185
8.2.2 TTY 文件层186
8.2.3 线路规程层188
8.2.4 TTY 驱动层190
8.2.5 TTY 数据链路分析193
8.3 串口驱动层194
8.3.1 uart_driver194
8.3.2 uart_port195
8.4 S3C6410X 串口设备驱动程序197
8.5 TTY 应用层 201
第 9 章 Framebuffer 驱动程序203
9.1 Linux Framebuffer 驱动程序原理203
9.1.1 Framebuffer 核心数据结构203
9.1.2 Framebuffer 操作接口206
9.1.3 Framebuffer 驱动的文件接口207
9.1.4 Framebuffer 驱动框架代码分析209
9.2 S3C6410X 显示控制器210
9.3 S3C6410X LCD 驱动程序实例215
9.3.1 注册与初始化215
9.3.2 fb_ops 实现220
9.3.3 DMA 传输机制222
9.3.4 内核配置227
9.4 Framebuffer 应用层227
9.5 Qt 界面系统移植229
第 10 章 输入子系统 231
10.1 Linux 输入子系统概述231
10.2 Linux 输入子系统原理231
10.2.1 输入设备232
10.2.2 输入事件233
10.2.3 input Handler 层234
10.2.4 常用的 Input Handler236
10.3 输入设备应用层 241
10.4 键盘输入设备驱动程序实例243
10.5 Event 接口实例249

相关推荐

微信二维码