目前最全面深入的Linux设备驱动程序著作

2024-04-27 08:32

本文主要是介绍目前最全面深入的Linux设备驱动程序著作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《精通Linux驱动程序开发(英文版)》

Linux内核源代码树提供的各个子系统中,drivers/目录是其中最大的一个分支,它比其他子系统大数倍。随着各种新技术的广泛应用,内核中新的设备驱动程序的开发工作正在稳步加速。最新的Linux内核支持多达70余种设备驱动程序的庞大家族。

查看详情

本书相关信息:http://blog.csdn.net/turingbooks/archive/2009/05/05/4150985.aspx

《精通Linux驱动程序开发(英文版)》主要讲解Linux设备驱动程序,介绍了目前内核所支持的主要设备类型的设计与开发,其中包括当年我在开发Linux-on-Watch项目时未遇到的设备。本书在讲解每种设备驱动程序家族的时候,先介绍与该驱动程序相关的技术,接着给出一个实际的开发例子,最后列出相关的内核源代码文件。在踏入Linux设备驱动程序领域之前,本书先介绍了内核以及Linux 2.6的重要特性,重点讲解了设备驱动程序编写者感兴趣的内核知识。

读者对象

本书面向渴望在Linux内核上开发新设备驱动程序的中级程序员。要阅读本书,你需要具备操作系统相关的基本概念。比如,要知道什么是系统调用,理解为什么在内核开发中需要关注并发问题。本书假定你已经下载了Linux,浏览过Linux内核源代码,并至少浏览过一些相关的文档。另外,你必须能非常熟练地使用C语言。

各章概述

4章为你阅读本书剩余部分打下了基础,接下来的16章讨论了不同的Linux设备驱动程序家族,之后的第21章描述了设备驱动程序的调试技术,第22章讲解了维护和交付设备驱动程序的相关事宜,最后一章给出了当你接到一个新设备驱动程序开发任务的时候,要首先查验的项目清单。

1章带你走入Linux的世界。这一章教你下载内核源代码、进行小的代码修改并建立可启动的Linux内核映像。

2章引导读者轻松地进入Linux内核的内部结构,讲解一些必要的内核概念。这一章首先讲述了内核的启动进程,接下来描述了与驱动程序开发相关的内核API,譬如内核定时器、并发管理以及内存分配等。

3章讲解了对驱动程序开发有用的一系列内核API。这一章首先介绍了内核线程(它提供了一种在内核空间运行后台任务的能力),接下来讲解了一系列的辅助API(如链表、工作队列、完成函数、通知链等)。这些辅助API能简化代码、剔除内核中的冗余并有助于内核的长期维护。

4章为你打下驾驭Linux设备驱动程序开发艺术的基础。这一章通过呈现一般的PC兼容系统和嵌入式设备的体系结构的鸟瞰图介绍了设备和驱动程序,并讲解了中断处理和内核设备模型等基本的驱动程序概念。

5章介绍了Linux字符设备驱动程序的体系结构。这一章引入了几个新概念,譬如轮询、异步通知和I/O控制等。由于本书后面介绍的大多数设备都可以看作“超级”字符设备,所以这些概念也与后续章节密切相关。

6章讲解了内核串口设备驱动程序的层次结构。

7章讨论了内核中为键盘、鼠标和触摸屏控制器等输入设备服务的输入子系统。

8章讲解了通过I2C总线或SMBus总线与系统连接的设备(如EEPROM)的驱动程序。同时,这一章也介绍了SPI总线和1-wire总线等其他串行接口。

9章分析了PCMCIA子系统。这一章将教会你如何编写含PCMCIACompact Flash组件的设备的驱动程序。

10章描述了内核对PCI及其衍生总线设备的支持。

11章探讨了USB的体系结构,并讲解了如何利用Linux内核USB子系统的API来开发USB设备驱动程序。

12章讲解了Linux视频子系统。这一章分析了内核提供的帧缓冲结构的优点,并给出了帧缓冲设备驱动程序的编写方法。

13章描述了Linux音频子系统的架构,并给出了音频设备驱动程序的实现方法。

14章集中描述存储设备(如硬盘)的驱动程序。在这一章里,你也将学习到Linux块子系统所支持的几种不同的I/O调度策略。

15章分析了网络设备驱动程序,你将学习内核中与网络相关的数据结构以及网络设备驱动程序与协议层接口的实现方法。

16章描述了各种无线网络设备的驱动程序,如蓝牙、红外、无线局域网WiFi和蜂窝通信等。

17章讲解了如何让闪存在嵌入式设备上运行起来,这一章最后讲解了PC上的FWHFirmware Hub,固件中心)的驱动程序。

18章步入嵌入式Linux的世界。这一章介绍嵌入式设备中的引导加载程序(bootloader)、内核以及设备驱动程序等主要的固件组成。由于Linux在嵌入式领域越来越受欢迎,你很有可能将从本书中学到的Linux驱动程序开发技能应用于嵌入式领域。

19章讲解了如何在用户空间驱动各种设备。一些设备驱动程序(尤其是那些重策略、轻性能的设备)更适合在用户空间被驱动。这一章也分析了Linux进程调度对用户空间设备驱动程序响应时间的影响。

20章描述了之前尚未论及的设备驱动程序系统,如错误侦测和校验(EDAC)、火线接口以及ACPI等。

21章讲解了用来调试Linux内核代码的各种调试工具。在这一章中,你也将学习到跟踪(trace)工具、内核探测点(probe)、崩溃转储(crash-dump)和剖析器(profiler)的使用方法。当你在开发Linux驱动程序的时候,请用本章学到的驱动调试技能武装自己。

22章给出了设备驱动程序软件开发生命周期的概况。

23章给出了当你开始进行一个新设备驱动程序开发工作时,应该查验的工作项目清单。本书最后是对“下一步怎么做”的思考。

设备驱动程序中有时候需要以汇编语言实现一些代码片段,因此,附录A介绍了Linux汇编编程的不同方面。x86系统上的一些设备驱动程序直接或间接地依赖于BIOS,因此,附录B讲解了Linux如何与BIOS交互。附录C描述了2.6内核提供的seq文件——用于监控和追踪数据点的辅助接口。

本书总体上根据设备和总线的复杂度进行组织,同时也结合了章与章之间互相依赖的客观情况。我们从讲解基本的设备类型(如字符设备、串口和输入设备)开始,紧接着介绍简单的串行总线(如I2CSMBus),之后介绍了PCMCIAPCIUSB等外部I/O总线。由于视频、音频、块和网络设备通常通过这些I/O总线与处理器连接,因此在介绍完这些总线之后,介绍了这些设备的驱动程序。书中接下来的部分面向嵌入式Linux,讲述了无线连网和闪存等技术。最后讨论了用户空间的设备驱动程序。

这篇关于目前最全面深入的Linux设备驱动程序著作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/939999

相关文章

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT