出版社:电子工业出版社
年代:2014
定价:49.0
本书包括4个部分:Linux内核部分,主要包括Linux进程调度与进程管理、中断机制、定时机制、并发与同步机制以及内存管理;Linux总线部分,主要包括Platfrom总线、单总线、I2C总线、串口总线、PCI总线、SPI总线和USB总线;Linux子系统部分,主要包括Keyboard子系统,LED子系统、RTC子系统、Input子系统、Backlight子系统、Hwmon子系统;Linux驱动部分,主要包括看门狗驱动、LCD驱动、触摸屏驱动、块设备驱动和网络设备驱动。
第1章 内核基础 11.1 Linux内核组成 11.2 Linux内核的引导 21.3 处理器 31.4 存储器 4第2章 进程管理 52.1 进程调度 52.2 Linux调度的实现 52.3 抢占和上下文切换 62.4 进程概念 62.5 进程上下文 72.6 进程与线程的创建 72.7 孤儿进程 82.8 系统调用 82.9 内核设计系统调用 9第3章 中断处理 113.1 中断和中断处理 113.2 中断的下半部分 113.3 中断下半部分的实现 12第4章 定时计数 144.1 定时器基本概念 144.2 动态定时器的使用 15第5章 并发同步 165.1 内核同步与死锁问题 165.2 解决并发同步的方法 17第6章 内存管理 196.1 内存管理中基本概念 196.2 申请内存的几种方法 196.3 内核栈 206.4 进程地址空间的基本概念 216.5 创建和撤销内存区域 226.6 页表 226.7 页高速缓存与页回写 23第7章 Platform总线 257.1 Platform设备驱动概念 257.1.1 Platform总线 257.1.2 Platform设备 267.1.3 Platform驱动 297.2 平台设备的资源 297.2.1 平台数据和私有数据的区别 297.2.2 Platform设备资源的读取 307.3 平台设备驱动测试 307.3.1 Platform设备模块代码 317.3.2 Platform驱动模块代码 327.3.3 应用层测试代码 37第8章 单总线 398.1 单总线驱动概述 398.2 单总线驱动移植 398.3 单总线驱动内核代码分析 408.3.1 master驱动分析 408.3.2 slave驱动分析 488.4 单总线驱动测试 528.5 脱离子系统的DS18B20驱动 53第9章 I2C总线 589.1 系统理论 589.1.1 I2C驱动体系概述 589.1.2 驱动工程师需要做的事 589.2 内核代码 589.2.1 内核/drivers/i2c目录下文件分析 589.2.2 I2C核心 599.2.3 I2C总线驱动 599.2.4 I2C设备驱动 739.3 测试代码 80第10章 串口总线 8310.1 系统理论 8310.2 串口内核配置 8310.3 UART层内核代码 8510.4 TTY层内核代码 8810.5 线路规程内核代码 9710.6 串口测试代码 103第11章 PCI总线 10911.1 PCI总线理论 10911.1.1 PCI总线的特点 10911.1.2 PCI设备概述 10911.1.3 查询PCI总线和设备的命令 11011.1.4 PCI总线架构 11011.2 PCI驱动 11111.2.1 PCI寻找空间 11111.2.2 PCI总线支持的设备 11211.2.3 PCI驱动其他API 11211.3 PCI驱动模型 11211.4 PCI设备的枚举过程 114第12章 SPI总线 13212.1 SPI理论介绍 13212.2 SPI驱动移植 13212.3 SPI设备和驱动的注册 13512.3.1 SPI主控设备的注册 13512.3.2 SPI接口设备的添加 13612.3.3 SPI主控设备驱动的注册 13712.3.4 SPI接口设备的注册 13712.3.5 SPI接口设备驱动的注册 13812.4 SPI内核代码分析 13912.5 SPI测试代码 159第13章 USB总线 16213.1 USB总线理论 16213.1.1 USB概述 16213.1.2 USB主机控制器 16213.1.3 USB设备与USB驱动的匹配 16213.1.4 USB设备的逻辑结构和端点的传输方式 16313.1.5 USB的URB请求块 16313.1.6 USB的枚举过程 16413.2 USB总线驱动分析 16413.2.1 USB驱动框架usb-skeleton.c 16413.2.2 USB鼠标驱动 usbmouse.c 17413.2.3 USB键盘驱动usbkbd.c 17813.2.4 U盘驱动分析 18313.3 U盘驱动测试 197第14章 Keyboard子系统 19814.1 Keyboard子系统移植与分析 19814.2 Keyboard驱动测试 200第15章 LED子系统 20115.1 LED子系统移植与分析 20115.2 LED驱动测试 205第16章 RTC子系统 20616.1 RTC子系统的移植与分析 20616.2 RTC驱动测试 210第17章 Input子系统 21117.1 Input子系统系统理论 21117.1.1 Input子系统概述 21117.1.2 Input子系统几个重要数据结构 21117.1.3 Input子系统核心层和事件处理层函数概述 21417.2 内核代码 21417.2.1 输入子系统设备驱动层 21417.2.2 输入子系统核心层 22417.2.3 输入子系统事件处理层 22717.3 测试代码 22917.3.1 设备驱动层代码 23017.3.2 应用层测试代码 23217.3.3 测试过程和结果 233第18章 Backlight背光子系统 23418.1 Backlight背光子系统概述 23418.2 PWM核心驱动 23418.3 Backlight核心驱动 23918.4 基于PWM&Backlight的蜂鸣器驱动 24218.5 驱动测试 246第19章 Hwmon子系统 24719.1 Hwmon子系统概述 24719.2 ADC核心驱动 24719.3 Hwmon核心驱动 25119.4 基于ADC&Hwmon的A/D驱动 25219.5 驱动测试 258第20章 看门狗驱动 25920.1 看门狗驱动移植与分析 25920.2 看门狗驱动测试 260第21章 LCD驱动 26121.1 LCD屏理论 26121.1.1 LCD屏基本概念 26121.1.2 帧缓冲的理解 26121.2 Mini2440的X35型LCD移植 26221.3 LCD文件层和驱动层设计思路 26421.3.1 LCD驱动中几个重要的数据结构 26521.3.2 LCD驱动层 26821.3.3 LCD文件层 27921.4 LCD驱动测试 284第22章 触摸屏驱动 28622.1 触摸屏理论概述 28622.2 触摸屏驱动分析 28622.3 触摸屏驱动测试 294第23章 Linux下的块设备驱动 29623.1 块设备驱动概论 29623.2 块设备驱动中几个重要的数据结构 29623.3 使用I/O调度的块设备驱动 29823.4 块设备驱动的测试 302第24章 Linux下的网络设备驱动 30524.1 网络设备驱动基础 30524.1.1 以太网基础理论 30524.1.2 Linux网络驱动层次 30524.2 网络设备驱动移植 30724.3 网络设备驱动测试 308参考文献 309
本书主要是从Linux内核、Linux总线和Linux子系统三个角度对Linux驱动进行介绍的,然后对字符设备、块设备和网络设备也分别做了大致介绍。从内容上来讲,本书包括4个部分:Linux内核部分(第1~6章),主要包括Linux进程调度与进程管理、中断机制、定时机制、并发与同步机制及内存管理,通过对本篇内容的学习,读者可以掌握Linux内核的基本概念;Linux总线部分(第7~13章),主要包括Platfrom总线、单总线、I2C总线、串口总线、PCI总线、SPI总线和USB总线,通过对本篇内容的学习,读者可以掌握设备是如何挂载到Linux内核总线上的;Linux子系统部分(第14~19章),主要包括Keyboard子系统,LED子系统、RTC子系统、Input子系统、Backlight子系统、Hwmon子系统,通过对本篇内容的学习,读者可以掌握如何使用内核中现有的子系统,给设备编写驱动;Linux驱动部分(第20~24章),主要包括看门狗驱动、LCD驱动、触摸屏驱动、块设备驱动和网络设备驱动,通过对本篇内容的学习,读者可以掌握具体的设备驱动程序的设计方法。【作者简介】魏清,男,工学硕士,毕业于南京邮电大学通信与信息系统专业,2011至今在苏嵌从事嵌入式项目的研究和培训工作,具有丰富的Linux驱动开发的经验。