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

Linux驱动程序开发实例(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2017-07
版次: 2
ISBN: 9787111567066
定价: 89.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 418页
14人买过
  • Linux设备驱动程序是高级应用程序与硬件设备之间的桥梁。驱动程序开发是软硬件相互结合的技术。本书是一本专门介绍Linux设备驱动程序开发的书籍,涵盖了Linux驱动程序基础、驱动模型、内存管理、内核同步机制、I2C驱动程序、LCD驱动程序、网络驱动程序、USB驱动程序、输入子系统驱动程序、块设备驱动程序、音频设备驱动等内容。本书以实例为主线,是为Linux设备驱动程序开发人员量身打造的学习精品书籍和实战指南。本书基于Linux4.5内核,提供了丰富的实例代码和详细的注释,并附赠完整源代码供读者下载。本书主要面向各种层次的嵌入式Linux软硬件开发工程师,也可以作为各类嵌入式系统培训机构的培训实验教材和高校计算机课程教辅书籍。 第 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 内核 Makefile 43 
    第 2 章 Linux 设备驱动模型 44 
    2.1 内核对象 44 
    2.1.1 Kobject 44 
    2.1.2 kobj_type 45 
    2.1.3 Kset 45 
    2.2 设备模型层次 46 
    2.3 sysfs 文件系统 49 
    2.4 platform 概念 51 
    2.5 Attributes 56 
    2.6 设备事件通知 60 
    2.6.1 kobject uevent 60 
    2.6.2 uevent helper 61 
    2.6.3 udev 63 
    2.7 设备树 64 
    第 3 章 Linux 内核同步机制 67 
    3.1 原子操作 67 
    3.2 锁机制 68 
    3.2.1 自旋锁 68 
    3.2.2 读写锁 70 
    3.2.3 RCU 71 
    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 cache 88 
    4.4 IO 端口到虚拟地址的映射 88 
    4.4.1 静态映射 88 
    4.4.2 ioremap 89 
    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 schedule 98 
    5.2 内核线程 99 
    5.3 内核调用应用程序 101 
    5.4 软中断机制 103 
    5.4.1 软中断原理 103 
    5.4.2 tasklet 106 
    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/kmem 121 
    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 I2Ctools 180 
    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_driver 194 
    8.3.2 uart_port 195 
    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 Handler 236 
    10.3 输入设备应用层 241 
    10.4 键盘输入设备驱动程序实例 243 
    10.5 Event 接口实例 249
  • 内容简介:
    Linux设备驱动程序是高级应用程序与硬件设备之间的桥梁。驱动程序开发是软硬件相互结合的技术。本书是一本专门介绍Linux设备驱动程序开发的书籍,涵盖了Linux驱动程序基础、驱动模型、内存管理、内核同步机制、I2C驱动程序、LCD驱动程序、网络驱动程序、USB驱动程序、输入子系统驱动程序、块设备驱动程序、音频设备驱动等内容。本书以实例为主线,是为Linux设备驱动程序开发人员量身打造的学习精品书籍和实战指南。本书基于Linux4.5内核,提供了丰富的实例代码和详细的注释,并附赠完整源代码供读者下载。本书主要面向各种层次的嵌入式Linux软硬件开发工程师,也可以作为各类嵌入式系统培训机构的培训实验教材和高校计算机课程教辅书籍。
  • 目录:
    第 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 内核 Makefile 43 
    第 2 章 Linux 设备驱动模型 44 
    2.1 内核对象 44 
    2.1.1 Kobject 44 
    2.1.2 kobj_type 45 
    2.1.3 Kset 45 
    2.2 设备模型层次 46 
    2.3 sysfs 文件系统 49 
    2.4 platform 概念 51 
    2.5 Attributes 56 
    2.6 设备事件通知 60 
    2.6.1 kobject uevent 60 
    2.6.2 uevent helper 61 
    2.6.3 udev 63 
    2.7 设备树 64 
    第 3 章 Linux 内核同步机制 67 
    3.1 原子操作 67 
    3.2 锁机制 68 
    3.2.1 自旋锁 68 
    3.2.2 读写锁 70 
    3.2.3 RCU 71 
    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 cache 88 
    4.4 IO 端口到虚拟地址的映射 88 
    4.4.1 静态映射 88 
    4.4.2 ioremap 89 
    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 schedule 98 
    5.2 内核线程 99 
    5.3 内核调用应用程序 101 
    5.4 软中断机制 103 
    5.4.1 软中断原理 103 
    5.4.2 tasklet 106 
    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/kmem 121 
    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 I2Ctools 180 
    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_driver 194 
    8.3.2 uart_port 195 
    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 Handler 236 
    10.3 输入设备应用层 241 
    10.4 键盘输入设备驱动程序实例 243 
    10.5 Event 接口实例 249
查看详情
系列丛书 / 更多
Linux驱动程序开发实例(第2版)
SAS编程与数据挖掘商业案例
姚志勇 著
Linux驱动程序开发实例(第2版)
PCI Express 体系结构导读
王齐 著
Linux驱动程序开发实例(第2版)
云计算:应用开发实践
徐强、王振江 著
Linux驱动程序开发实例(第2版)
HTML5开发从入门到精通
王石磊 著
Linux驱动程序开发实例(第2版)
Python即学即用
张燕妮 著
Linux驱动程序开发实例(第2版)
UNIX/Linux网络日志分析与流量监控
李晨光 著
Linux驱动程序开发实例(第2版)
SAS开发经典案例解析
杨池然 编
Linux驱动程序开发实例(第2版)
实用Linux Shell编程
石庆东 著
Linux驱动程序开发实例(第2版)
数据架构与商业智能
王飞 著
Linux驱动程序开发实例(第2版)
数据挖掘技术应用实例
韩秋明 著
Linux驱动程序开发实例(第2版)
信息科学与技术丛书:精通ASP.NET 4.0
杨云、刘君 著
Linux驱动程序开发实例(第2版)
商业智能深入浅出:大数据时代下的架构规划与案例
王飞 著
相关图书 / 更多
Linux驱动程序开发实例(第2版)
LiteOS轻量级物联网操作系统实战 微课视频版
魏杰
Linux驱动程序开发实例(第2版)
Linux综合实训案例教程
陈智斌;梁鹏;肖政宏
Linux驱动程序开发实例(第2版)
Linux操作系统项目化教程
周秀丽;张徐超;周密
Linux驱动程序开发实例(第2版)
Linux操作系统
刘睿;包大宏;兰晓天;李吉桃;王仕杰;吴晓清;张宏洲;杨云江
Linux驱动程序开发实例(第2版)
Linux C语言程序设计(微课视频版)
张同光;田文强;荆春棋;田乔梅;陈明
Linux驱动程序开发实例(第2版)
Linux虚拟化——原理、方法和实战(KVM+Docker+OpenStack)
吴光科;李建尧;柯宇霖
Linux驱动程序开发实例(第2版)
Linux源码趣读
闪客
Linux驱动程序开发实例(第2版)
Linux自动化运维实战(Linux开发书系)
吴光科;彭威城;文·S
Linux驱动程序开发实例(第2版)
Linux云计算——Kubernetes实战
吴光科;程浩;刑亚飞
Linux驱动程序开发实例(第2版)
Linux运维从入门到精通
明日科技
Linux驱动程序开发实例(第2版)
Linux操作系统项目化教程(第2版)
洪伟 主编;丁传炜 谢鹏 副主编
Linux驱动程序开发实例(第2版)
Linux企业高性能架构实战
吴光科;曹森;赵瑞丰
您可能感兴趣 / 更多
Linux驱动程序开发实例(第2版)
Linux驱动程序开发实例
冯国进 著
Linux驱动程序开发实例(第2版)
嵌入式Linux驱动程序设计从入门到精通
冯国进 著