本书是一本介绍Linux设备驱动开发理论、框架与实例的书,本书以Linux 2.6版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和I/O映射以及异步通知、阻塞I/O、非阻塞I/O等Linux 设备驱动理论;字符设备、块设备、TTY设备、IC设备、LCD设备、音频设备、USB设备、网络设备、PCI设备等Linux设备驱动的架构和框架中各个复杂数据架构和函数的关系,并讲解了Linux驱动开发的大量实例,使读者能够独立开发各类Linux设备驱动。本书内容全面,实例丰富,操作性强,语言通俗易懂,适合广大Linux开发人员、嵌入式工程师参考使用。
目录
第1篇 Linux设备驱动入门
第1章 设备驱动概述
1.1 设备驱动的作用
1.2 无操作系统时的设备驱动
1.3 有操作系统时的设备驱动
1.4 Linux设备驱动
1.4.1 设备的分类及特点
1.4.2 Linux设备驱动与整个软硬件系统的关系
1.4.3 编写Linux设备驱动的技术基础
1.4.4 Linux设备驱动的学习方法
1.5 设备驱动的HelloWorld:LED驱动
1.5.1 无操作系统时的LED驱动
1.5.2 Linux系统下的LED驱动
第2章 驱动设计的硬件基础
2.1 处理器
2.1.1 通用处理器
2.1.2 数字信号处理器
2.2 存储器
2.3 接口与总线
2.3.1 串口
2.3.2 I2C总线
2.3.3 USB
2.3.4 以太网接口
2.3.5 ISA总线
2.3.6 PCI和cPCI
2.4 CPLD和FPGA
2.5 原理图分析
2.5.1 原理图分析的内容
2.5.2 原理图的分析方法
2.6 硬件时序分析
2.6.1 时序分析的概念
2.6.2 典型硬件时序
2.7 仪器仪表使用
2.7.1 万用表
2.7.2 示波器
2.7.3 逻辑分析仪
2.8 总结
第3章 Linux内核及内核编程
3.1 Linux内核的发展与演变
3.2 Linux2.6内核的特点
3.3 Linux内核的组成
3.3.1 Linux内核源代码目录结构
3.3.2 Linux内核的组成部分
3.3.3 Linux内核空间与用户空间
3.4 Linux内核的编译及加载
3.4.1 Linux内核的编译
3.4.2 Kconfig和Makefile
3.4.3 Linux内核的引导
3.5 Linux下的C编程
3.5.1 Linux程序命名习惯
3.5.2 GNUC与ANSIC
3.5.3 do{}while(0)
3.5.4 goto
3.6 总结
第2篇 Linux设备驱动核心理论
第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.1.1 文件操作的相关系统调用
5.1.2 C库函数的文件操作
5.2 Linux文件系统
5.2.1 Linux文件系统目录结构
5.2.2 Linux文件系统与设备驱动
5.3 devfs设备文件系统
5.4 udev设备文件系统
5.4.1 udev与devfs的区别
5.4.2 sysfs文件系统与Linux设备模型
5.4.3 udev的组成
5.4.4 udev规则文件
5.4.5 创建和配置udev
5.5 总结
第6章 字符设备驱动
6.1 Linux字符设备驱动结构
6.1.1 cdev结构体
6.1.2 分配和释放设备号
6.1.3 file_operations结构体
6.1.4 Linux字符设备驱动的组成
6.2 globalmem虚拟设备实例描述
6.3 globalmem设备驱动
6.3.1 头文件、宏及设备结构体
6.3.2 加载与卸载设备驱动
6.3.3 读写函数
6.3.4 seek()函数
6.3.5 ioctl()函数
6.3.6 使用文件私有数据
6.4 globalmem驱动在用户空间的验证
6.5 总结
第7章 Linux设备驱动中的并发控制
7.1 并发与竞态
7.2 中断屏蔽
7.3 原子操作
7.3.1 整型原子操作
7.3.2 位原子操作
7.4 自旋锁
7.4.1 自旋锁的使用
7.4.2 读写自旋锁
7.4.3 顺序锁
7.4.4 读-拷贝-更新
7.5 信号量
7.5.1 信号量的使用
7.5.2 信号量用于同步
7.5.3 完成量用于同步
7.5.4 自旋锁vs信号量
7.5.5 读写信号量
7.6 互斥体
7.7 增加并发控制后的globalmem驱动
7.8 总结
第8章 Linux设备驱动中的阻塞与非阻塞I/O
8.1 阻塞与非阻塞I/O
8.1.1 等待队列
8.1.2 支持阻塞操作的globalfifo设备驱动
8.1.3 在用户空间验证globalfifo的读写
8.2 轮询操作
8.2.1 轮询的概念与作用
8.2.2 应用程序中的轮询编程
8.2.3 设备驱动中的轮询编程
8.3 支持轮询操作的globalfifo驱动
8.3.1 在globalfifo驱动中增加轮询操作
8.3.2 在用户空间验证globalfifo设备的轮询
8.4 总结
第9章 Linux设备驱动中的异步通知与异步I/O
9.1 异步通知的概念与作用
9.2 Linux异步通知编程
9.2.1 Linux信号
9.2.2 信号的接收
9.2.3 信号的释放
9.3 支持异步通知的globalfifo驱动
9.3.1 在globalfifo驱动中增加异步通知
9.3.2 在用户空间验证globalfifo的异步通知
9.4 Linux2.6异步I/O
9.4.1 AIO概念与GNUC库函数
9.4.2 使用信号作为AIO的通知
9.4.3 使用回调函数作为AIO的通知
9.4.4 AIO与设备驱动
9.5 总结
第10章 中断与时钟
10.1 中断与定时器
10.2 Linux中断处理程序架构
10.3 Linux中断编程
10.3.1 申请和释放中断
10.3.2 使能和屏蔽中断
10.3.3 底半部机制
10.3.4 实例:S3C2410实时钟中断
10.4 中断共享
10.5 内核定时器
10.5.1 内核定时器编程
10.5.2 实例:秒字符设备
10.6 内核延时
10.6.1 短延迟
10.6.2 长延迟
10.6.3 睡着延迟
10.7 总结
第11章 内存与I/O访问
11.1 CPU与内存和I/O
11.1.1 内存空间与I/O空间
11.1.2 内存管理单元MMU
11.2 Linux内存管理
11.3 内存存取
11.3.1 用户空间内存动态申请
11.3.2 内核空间内存动态申请
11.3.3 虚拟地址与物理地址关系
11.4 设备I/O端口和I/O内存的访问
11.4.1 LinuxI/O端口和I/O内存访问接口
11.4.2 申请与释放设备I/O端口和I/O内存
11.4.3 设备I/O端口和I/O内存访问流程
11.4.4 将设备地址映射到用户空间
11.5 I/O内存静态映射
11.6 DMA
11.6.1 DMA与Cache一致性
11.6.2 Linux下的DMA编程
11.7 总结
第12章 Linux字符设备驱动综合实例
第3篇 Linux设备驱动实例
第13章 Linux块设备驱动
第14章 Linux终端设备驱动
……
CX5478中文版PotoshopCS3入门到精通(普及版) 本书特色 海量的内容:上千个photoshop知识点,数百个注意、提示与技巧,近百个示例讲解,为您...
计算机网络 内容简介 本书全面综述了各种类型的计算机网络,主题涉及计算机网络的方方面面,从基本的概念和原理,到具本的设计和实现方式,再到具体的管理和运营,作为入...
1作者为德国红点设计大奖得主。2书中独有作者自创的图形创作模式,即“理性—直觉—手—电脑”的结合运用。3本书包含40种颠覆惯性
《MySQL必知必会》MySQL是世界上最受欢迎的数据库管理系统之一。书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联
HIGHLIGHTAninsidersperspectiveontheASP.NETMVCframework,ahighly-anticipatedproduc...
AutoCAD 2008中文版三维造型项目化案例式教程 内容简介 本书系统介绍了autocad 2008中文版三维造型的各种命令,结合实例深入浅出地讲解了三维造...
《PPT职场应用实战精粹》内容简介:《PPT职场应用实战精粹》是一本职场PPT高效应用技巧集,内容涵盖PPT操作技巧、文字排版和处理技
本书采用问答的形式,为CSS使用过程中一些有价值的经典问题提供了精彩的实践解决方案。本书内容包括文本样式、CSS图像、导航、表
我们为什么不谈北欧设计,仅谈丹麦设计?因为从历史上看,不但北欧四国属于以丹麦为中心的北欧大帝国,就连整个英格兰,苏格兰的
《华为内训(新版)》内容简介:翻开《华为内训》,您将步入一个炫目恢宏的商业世界,由此洞悉华为内部独特的管理经营机制。作为世
《运营实战手册:带你玩转营销套路》内容简介:本书涵盖实用的互联网运营方法,是诸位作者从多年的实战中提炼出的运营心得和精华,
PRO/ENCINEERZ中文野火版4.0模具设计师-分模特训篇 目录 第1章Pro/E分模的基础知识1.1Pro/MOLDESIGN模块1.2Pro/E的模具...
编程的真正挑战不是学习一种语言的语法,而是学习创造性地解决问题,从而构建美妙的应用。《像程序员一样思考》分析了程序员解决
ProductDescriptionHereisthefirstobject-orienteddevelopmentbooktoprovidespecifice...
《淘宝与微店 :开店·运营·推广一册通》内容简介:超级畅销书《淘宝网开店、装修、管理、推广一册通》作者聚焦电商创业领域的又一
C++ STL 标准程序库开发指南 本书特色 在开发语言中,c++的应用越来越广泛。而c++stl是标准的c++模板库,是算法和其他一些标准组件的集合,可...
《楚俏》内容简介:民族室内乐作品《楚俏》创作于2014年。古之楚国,以湖南、湖北为中心,另辖河南、安徽、四川、江西、江苏、浙江
《城市交通出行行为分析及多方式交通协同组织理论与方法》内容简介:本书从基于活动的视角,研究了城市多方式交通网络中交通出行者
C语言程序设计 本书特色 本书是关于介绍“C语言程序设计”的教学用书,全书分为12章,内容包括c语言概述,数据类型,运算符与表达式,数据的输入和输出,选择型程序...
本书是计算理论方面的优秀教材之一,包括上下文无关文法、上下文无关文法范式、有限自动机、正则语言的性质、下推自动机和上下文