Linux设备驱动开发详解:基于最新的Linux4.0内核
电子书推荐
-
Linux设备驱动程序第三版(chm格式) 评分:
这本书挺不错,我觉得跟宋宝华那本结合起来看可以互补。目录如下: 1. 第一章 设备驱动简介 1.1. 驱动程序的角色 1.2. 划分内核 1.2.1. 可加载模块 1.3. 设备和模块的分类 1.4. 安全问题 1.5. 版本编号 1.6. 版权条款 1.7. 加入内核开发社团 1.8. 本书的内容 2. 建立和运行模块 2.1. 设置你的测试系统 2.2. Hello World 模块 2.3. 内核模块相比于应用程序 2.3.1. 用户空间和内核空间 2.3.2. 内核的并发 2.3.3. 当前进程 2.3.4. 几个别的细节 2.4. 编译和加载 2.4.1. 编译模块 2.4.2. 加载和卸载模块 2.4.3. 版本依赖 2.4.4. 平台依赖性 2.5. 内核符号表 2.6. 预备知识 2.7. 初始化和关停 2.7.1. 清理函数 2.7.2. 初始化中的错误处理 2.7.3. 模块加载竞争 2.8. 模块参数 2.9. 在用户空间做 2.10. 快速参考 3. 字符驱动 3.1. scull 的设计 3.2. 主次编号 3.2.1. 设备编号的内部表示 3.2.2. 分配和释放设备编号 3.2.3. 主编号的动态分配 3.3. 一些重要数据结构 3.3.1. 文件操作 3.3.2. 文件结构 3.3.3. inode 结构 3.4. 字符设备注册 3.4.1. scull 中的设备注册 3.4.2. 老方法 3.5. open 和 release 3.5.1. open 方法 3.5.2. release 方法 3.6. scull 的内存使用 3.7. 读和写 3.7.1. read 方法 3.7.2. write 方法 3.7.3. readv 和 writev 3.8. 使用新设备 3.9. 快速参考 4. 调试技术 4.1. 内核中的调试支持 4.2. 用打印调试 4.2.1. printk 4.2.2. 重定向控制台消息 4.2.3. 消息是如何记录的 4.2.4. 打开和关闭消息 4.2.5. 速率限制 4.2.6. 打印设备编号 4.3. 用查询来调试 4.3.1. 使用 /proc 文件系统 4.3.2. ioctl 方法 4.4. 使用观察来调试 4.5. 调试系统故障 4.5.1. oops 消息 4.5.2. 系统挂起 4.6. 调试器和相关工具 4.6.1. 使用 gdb 4.6.2. kdb 内核调试器 4.6.3. kgdb 补丁 4.6.4. 用户模式 Linux 移植 4.6.5. Linux 追踪工具 4.6.6. 动态探针 5. 并发和竞争情况 5.1. scull 中的缺陷 5.2. 并发和它的管理 5.3. 旗标和互斥体 5.3.1. Linux 旗标实现 5.3.2. 在 scull 中使用旗标 5.3.3. 读者/写者旗标 5.4. Completions 机制 5.5. 自旋锁 5.5.1. 自旋锁 API 简介 5.5.2. 自旋锁和原子上下文 5.5.3. 自旋锁函数 5.5.4. 读者/写者自旋锁 5.6. 锁陷阱 5.6.1. 模糊的规则 5.6.2. 加锁顺序规则 5.6.3. 细 -粗- 粒度加锁 5.7. 加锁的各种选择 5.7.1. 不加锁算法 5.7.2. 原子变量 5.7.3. 位操作 5.7.4. seqlock 锁 5.7.5. 读取-拷贝-更新 5.8. 快速参考 6. 高级字符驱动操作 6.1. ioctl 接口 6.1.1. 选择 ioctl 命令 6.1.2. 返回值 6.1.3. 预定义的命令 6.1.4. 使用 ioctl 参数 6.1.5. 兼容性和受限操作 6.1.6. ioctl 命令的实现 6.1.7. 不用 ioctl 的设备控制 6.2. 阻塞 I/O 6.2.1. 睡眠的介绍 6.2.2. 简单睡眠 6.2.3. 阻塞和非阻塞操作 6.2.4. 一个阻塞 I/O 的例子 6.2.5. 高级睡眠 6.2.6. 测试 scullpipe 驱动 6.3. poll 和 select 6.3.1. 与 read 和 write 的交互 6.3.2. 底层的数据结构 6.4. 异步通知 6.4.1. 驱动的观点 6.5. 移位一个设备 6.5.1. llseek 实现 6.6. 在一个设备文件上的存取控制 6.6.1. 单 open 设备 6.6.2. 一次对一个用户限制存取 6.6.3. 阻塞 open 作为对 EBUSY 的替代 6.6.4. 在 open 时复制设备 6.7. 快速参考 7. 时间, 延时, 和延后工作 7.1. 测量时间流失 7.1.1. 使用 jiffies 计数器 7.1.2. 处理器特定的寄存器 7.2. 获知当前时间 7.3. 延后执行 7.3.1. 长延时 7.3.2. 短延时 7.4. 内核定时器 7.4.1. 定时器 API 7.4.2. 内核定时器的实现 7.5. Tasklets 机制 7.6. 工作队列 7.6.1. 共享队列 7.7. 快速参考 7.7.1. 时间管理 7.7.2. 延迟 7.7.3. 内核定时器 7.7.4. Tasklets 机制 7.7.5. 工作队列 8. 分配内存 8.1. kmalloc 的真实故事 8.1.1. flags 参数 8.1.2. size 参数 8.2. 后备缓存 8.2.1. 一个基于 Slab 缓存的 scull: scullc 8.2.2. 内存池 8.3. get_free_page 和其友 8.3.1. 一个使用整页的 scull: scullp 8.3.2. alloc_pages 接口 8.3.3. vmalloc 和 其友 8.3.4. 一个使用虚拟地址的 scull : scullv 8.4. 每-CPU 的变量 8.5. 获得大量缓冲 8.5.1. 在启动时获得专用的缓冲 8.6. 快速参考 9. 与硬件通讯 9.1. I/O 端口和 I/O 内存 9.1.1. I/O 寄存器和常规内存 9.2. 使用 I/O 端口 9.2.1. I/O 端口分配 9.2.2. 操作 I/O 端口 9.2.3. 从用户空间的 I/O 存取 9.2.4. 字串操作 9.2.5. 暂停 I/O 9.2.6. 平台依赖性 9.3. 一个 I/O 端口例子 9.3.1. 并口纵览 9.3.2. 一个例子驱动 9.4. 使用 I/O 内存 9.4.1. I/O 内存分配和映射 9.4.2. 存取 I/O 内存 9.4.3. 作为 I/O 内存的端口 9.4.4. 重用 short 为 I/O 内存 9.4.5. 在 1 MB 之下的 ISA 内存 9.4.6. isa_readb 和其友 9.5. 快速参考 10. 中断处理 10.1. 准备并口 10.2. 安装一个中断处理 10.2.1. /proc 接口 10.2.2. 自动检测 IRQ 号 10.2.3. 快速和慢速处理 10.2.4. 实现一个处理 10.2.5. 处理者的参数和返回值 10.2.6. 使能和禁止中断 10.3. 前和后半部 10.3.1. Tasklet 实现 10.3.2. 工作队列 10.4. 中断共享 10.4.1. 安装一个共享的处理者 10.4.2. 运行处理者 10.4.3. /proc 接口和共享中断 10.5. 中断驱动 I/O 10.5.1. 一个写缓存例子 10.6. 快速参考 11. 内核中的数据类型 11.1. 标准 C 类型的使用 11.2. 安排一个明确大小给数据项 11.3. 接口特定的类型 11.4. 其他移植性问题 11.4.1. 时间间隔 11.4.2. 页大小 11.4.3. 字节序 11.4.4. 数据对齐 11.4.5. 指针和错误值 11.5. 链表 11.6. 快速参考 12. PCI 驱动 12.1. PCI 接口 12.1.1. PCI 寻址 12.1.2. 启动时间 12.1.3. 配置寄存器和初始化 12.1.4. MODULEDEVICETABLE 宏 12.1.5. 注册一个 PCI 驱动 12.1.6. 老式 PCI 探测 12.1.7. 使能 PCI 设备 12.1.8. 存取配置空间 12.1.9. 存取 I/O 和内存空间 12.1.10. PCI 中断 12.1.11. 硬件抽象 12.2. 回顾: ISA 12.2.1. 硬件资源 12.2.2. ISA 编程 12.2.3. 即插即用规范 12.3. PC/104 和 PC/104+ 12.4. 其他的 PC 总线 12.4.1. MCA 总线 12.4.2. EISA 总线 12.4.3. VLB 总线 12.5. SBus 12.6. NuBus 总线 12.7. 外部总线 12.8. 快速参考 13. USB 驱动 13.1. USB 设备基础知识 13.1.1. 端点 13.1.2. 接口 13.1.3. 配置 13.2. USB 和 sysfs 13.3. USB 的 Urbs 13.3.1. 结构 struct urb 13.3.2. 创建和销毁 urb 13.3.3. 提交 urb 13.3.4. 完成 urb: 完成回调处理者 13.3.5. 取消 urb 13.4. 编写一个 USB 驱动 13.4.1. 驱动支持什么设备 13.4.2. 注册一个 USB 驱动 13.4.3. 提交和控制一个 urb 13.5. 无 urb 的 USB 传送 13.5.1. usb_bulk_msg 接口 13.5.2. usb_control_msg 接口 13.5.3. 使用 USB 数据函数 13.6. 快速参考 14. Linux 设备模型 14.1. Kobjects, Ksets 和 Subsystems 14.1.1. Kobject 基础 14.1.2. kobject 层次, kset, 和子系统 14.2. 低级 sysfs 操作 14.2.1. 缺省属性 14.2.2. 非缺省属性 14.2.3. 二进制属性 14.2.4. 符号连接 14.3. 热插拔事件产生 14.3.1. 热插拔操作 14.4. 总线, 设备, 和驱动 14.4.1. 总线 14.4.2. 设备 14.4.3. 设备驱动 14.5. 类 14.5.1. class_simple 接口 14.5.2. 完整的类接口 14.6. 集成起来 14.6.1. 添加一个设备 14.6.2. 去除一个设备 14.6.3. 添加一个驱动 14.6.4. 去除一个驱动 14.7. 热插拔 14.7.1. 动态设备 14.7.2. /sbin/hotplug 工具 14.7.3. 使用 /sbin/hotplug 14.8. 处理固件 14.8.1. 内核固件接口 14.8.2. 它如何工作 14.9. 快速参考 14.9.1. Kobjects结构 14.9.2. sysfs 操作 14.9.3. 总线, 设备, 和驱动 14.9.4. 类 14.9.5. 固件 15. 内存映射和 DMA 15.1. Linux 中的内存管理 15.1.1. 地址类型 15.1.2. 物理地址和页 15.1.3. 高和低内存 15.1.4. 内存映射和 struct page 15.1.5. 页表 15.1.6. 虚拟内存区 15.1.7. 进程内存映射 15.2. mmap 设备操作 15.2.1. 使用 remap_pfn_range 15.2.2. 一个简单的实现 15.2.3. 添加 VMA 的操作 15.2.4. 使用 nopage 映射内存 15.2.5. 重新映射特定 I/O 区 15.2.6. 重新映射 RAM 15.2.7. 重映射内核虚拟地址 15.3. 进行直接 I/O 15.3.1. 异步 I/O 15.4. 直接内存存取 15.4.1. 一个 DMA 数据传输的概况 15.4.2. 分配 DMA 缓冲 15.4.3. 总线地址 15.4.4. 通用 DMA 层 15.4.5. ISA 设备的 DMA 15.5. 快速参考 15.5.1. 介绍性材料 15.5.2. 实现 mmap 15.5.3. 实现直接 I/O 15.5.4. 直接内存存取 16. 块驱动 16.1. 注册 16.1.1. 块驱动注册 16.1.2. 磁盘注册 16.1.3. 在 sbull 中的初始化 16.1.4. 注意扇区大小 16.2. 块设备操作 16.2.1. open 和 release 方法 16.2.2. 支持可移出的介质 16.2.3. ioctl 方法 16.3. 请求处理 16.3.1. 对请求方法的介绍 16.3.2. 一个简单的请求方法 16.3.3. 请求队列 16.3.4. 请求的分析 16.3.5. 请求完成函数 16.4. 一些其他的细节 16.4.1. 命令预准备 16.4.2. 被标识的命令排队 16.5. 快速参考 17. 网络驱动 17.1. snull 是如何设计的 17.1.1. 分配 IP 号 17.1.2. 报文的物理传送 17.2. 连接到内核 17.2.1. 设备注册 17.2.2. 初始化每一个设备 17.2.3. 模块卸载 17.3. net_device 结构的详情 17.3.1. 全局信息 17.3.2. 硬件信息 17.3.3. 接口信息 17.3.4. 设备方法 17.3.5. 公用成员 17.4. 打开与关闭 17.5. 报文传送 17.5.1. 控制发送并发 17.5.2. 传送超时 17.5.3. 发散/汇聚 I/O 17.6. 报文接收 17.7. 中断处理 17.8. 接收中断缓解 17.9. 连接状态的改变 17.10. Socket 缓存 17.10.1. 重要成员变量 17.10.2. 作用于 socket 缓存的函数 17.11. MAC 地址解析 17.11.1. 以太网使用 ARP 17.11.2. 不考虑 ARP 17.11.3. 非以太网头部 17.12. 定制 ioctl 命令 17.13. 统计信息 17.14. 多播 17.14.1. 多播的内核支持 17.14.2. 典型实现 17.15. 几个其他细节 17.15.1. 独立于媒介的接口支持 17.15.2. ethtool 支持 17.15.3. netpoll 17.16. 快速参考 18. TTY 驱动 18.1. 一个小 TTY 驱动 18.1.1. 结构 struct termios 18.2. tty_driver 函数指针 18.2.1. open 和 close 18.2.2. 数据流 18.2.3. 其他缓冲函数 18.2.4. 无 read 函数? 18.3. TTY 线路设置 18.3.1. set_termios 函数 18.3.2. tiocmget 和 tiocmset 18.4. ioctls 函数 18.5. TTY 设备的 proc 和 sysfs 处理 18.6. tty_driver 结构的细节 18.7. tty_operaions 结构的细节 18.8. tty_struct 结构的细节 18.9. 快速参考
上传时间:2011-01 大小:1.14MB
- 1.14MB
Linux设备驱动程序第三版2.6.CHM
2009-06-14本书是经典著作《Linux 设备驱动程序》的第三版。该版本已针对 Linux 内核的 2.6.10 彻底更新过了。内核的这个版本针对常见任务完成了合理化设计及相应的简化,比如即插即用,利用sysfs 文件系统和用户空间交互,...
- 1.26MB
Linux 设备驱动程序第三版
2009-06-19《Linux设备驱动程序第三版》是一本深入探讨Linux内核设备驱动程序开发的专业书籍,由Jonathan Corbet, Alessandro Rubini, 和 Greg Kroah-Hartman三位专家共同编写。这本书全面覆盖了Linux设备驱动的基本概念、设计...
- 457KB
linux设备驱动程序第三版 学习笔记.chm
2010-11-26Linux设备驱动程序,《linux驱动程序第三版》学习笔记。linux牛人写的,我打包成chm文件,以方便大家观看。
- 1.14MB
Linux设备驱动程序第三版2
2009-07-22这本书的CHM格式版本——"Linux设备驱动程序第三版2.chm"包含了丰富的技术细节和实例,为读者提供了全面的学习资源。 在Linux操作系统中,设备驱动程序是连接硬件和操作系统内核的桥梁,它们负责管理和控制硬件设备...
- 15.12MB
Linux设备驱动程序第三版(中英文pdf、中英文chm)&&驱动实例
2009-04-10《Linux设备驱动程序》第三版是一本深入探讨Linux操作系统下设备驱动程序开发的经典著作。这本书由Ricardo Charney、Jonathan Corbet和Greg Kroah-Hartman共同编写,旨在为读者提供全面的Linux设备驱动程序设计与...
- 1.26MB
Linux设备驱动程序第三版(CHM)
2010-05-11《Linux设备驱动程序第三版》是一本深入探讨Linux操作系统下设备驱动程序开发的专业书籍,它为读者揭示了如何与硬件进行交互以及如何构建高效的设备驱动程序。这本书详细讲解了Linux内核的工作机制,并且提供了丰富...
- 46.88MB
Linux设备驱动程序_第三版
2019-04-04《Linux设备驱动程序_第三版》是一本深入探讨Linux内核设备驱动程序开发的专业书籍,旨在帮助读者理解和掌握如何为Linux系统编写高效的设备驱动。这本书的两个版本分别由中国电力出版社和东南大学出版社翻译,其中...
- 1.26MB
linux设备驱动程序(第三版)CHM和配套源码
2012-06-111. 第一章 设备驱动简介 1.1. 驱动程序的角色 1.2. 划分内核 1.2.1. 可加载模块 1.3. 设备和模块的分类 1.4. 安全问题 1.5. 版本编号 1.6. 版权条款 1.7. 加入内核开发社团 1.8. 本书的内容 2. 建立和运行...
- 782KB
Linux驱动程序设计 中文 第三版(CHM)
2009-05-17《Linux驱动程序设计 中文 第三版》是深入学习Linux驱动开发的重要参考资料,它涵盖了Linux内核机制、设备模型、I/O子系统以及各种常见硬件设备的驱动编写方法。本书旨在帮助开发者理解如何与Linux内核进行交互,...
- 1.14MB
Linux设备驱动程序第三版2.chm
2010-06-13《Linux设备驱动程序》第三版是一部深入探讨Linux内核与设备驱动程序开发的经典著作,针对Linux平台上的系统级编程提供详尽的指导。本篇内容将聚焦于书中的主要知识点,帮助开发者理解如何在Linux环境下编写高效、...
- 3.59MB
Linux设备驱动英文(第三版)ebook+所有例子源代码
2008-07-19Linux设备驱动程序的核心任务是使硬件设备与操作系统进行有效通信,以便系统能够正确地控制和管理硬件。驱动程序通常包括初始化设备、发送命令、接收数据、处理中断等操作。在Linux系统中,驱动程序通常作为内核模块...
- 2.59MB
Linux设备驱动(中文版、英文版第三版),chm附带书中例子
2010-07-26`liunx驱动程序第三版examples.tar.gz`文件是一个源代码压缩包,其中包含了书中所讲解的各种设备驱动程序的实例代码。这些实例涵盖了从简单的字符设备驱动到复杂的网络设备驱动,通过实际操作这些代码,读者可以学习...
- 1.30MB
这本书是著名的《linux设备驱动程序》的第三版(英文版).它函盖了linux2.6内核的驱动程序编程.是linux下驱动开发者的
2009-04-27《Linux设备驱动程序》第三版是一本在Linux社区中广受欢迎的经典教材,专注于介绍Linux 2.6内核下的驱动程序开发技术。本书是Linux驱动开发者的重要参考资料,它深入浅出地讲解了如何为各种硬件设备编写驱动程序,...
- 871KB
linux设备驱动程序 附带源程序
2008-12-12“Linux Device Drivers 3rd中文版.chm”是该书的中文电子版,包含了对Linux设备驱动程序的详尽讲解,涵盖了从基本概念到高级技术的广泛内容。书中不仅介绍了驱动程序的结构、接口,还涉及中断处理、I/O端口操作、...
- 1.22MB
Linux设备驱动第三版_linux_
2021-09-29《Linux设备驱动第三版》是Linux系统开发领域的一本经典著作,主要针对Linux内核的设备驱动程序编写进行深入探讨。这本书的CHM版本提供了一种轻量级的方式,使得读者可以方便地在电脑上查阅和学习Linux设备驱动的...
- 1.30MB
linux设备驱动(英文)
2008-05-09《Linux设备驱动》是Linux系统开发领域的一本经典著作,英文版第三版更是广大开发者深入理解Linux内核和设备驱动程序的重要参考资料。这本书详细讲解了如何编写和理解Linux下的设备驱动程序,涵盖了从简单字符设备到...
- 14.77MB
linux 内核与驱动相关的权威书籍
2010-06-02压缩包内的"Linux设备驱动程序第三版.chm"和"深入理解linux内核3rd_中文.pdf"分别对应这两本书的电子版。CHM文件是一种微软的编档格式,包含了丰富的链接和索引,方便读者快速查找信息。PDF文件则便于在各种设备上...
- 2.68MB
Linux_设备驱动_第三版中文版2.6内核_html
2012-09-17这本书详细介绍了如何编写和理解Linux设备驱动程序,帮助读者深入理解操作系统与硬件之间的交互。 首先,我们要明白设备驱动程序的角色。设备驱动是操作系统与硬件设备之间的桥梁,它实现了操作系统对硬件设备的...
- 1.13MB
Linux驱动实例
2018-11-16通过阅读《Linux设备驱动程序第三版》并结合书中提供的chm电子文档,读者可以系统地学习Linux驱动开发,提升自己的系统级编程能力,为从事Linux平台下的系统开发和优化工作打下坚实的基础。无论是初学者还是有经验的...
- 2.46MB
Linux Device Drivers, 3rd Edition (中英文) CHM 格式.7z
2009-04-23《Linux Device Drivers, 3rd Edition》是Linux驱动程序开发领域的权威著作,为开发者提供了深入理解Linux内核以及如何编写高效、稳定设备驱动程序的宝贵资料。这本书详细讲解了Linux系统下驱动程序的设计原理和实现...
- 202.57MB
linux aarch64架构libreoffice安装包
2023-03-20linux aarch64架构libreoffice安装包
- 45.12MB
RocketMQ 可视化工具 Dashboard下载
2024-10-29rocketmq 可视化管理工具, 驾驶舱( rocketmq-dashboard )
- 71B
Linux系统下Qt5.12.10.run安装包
2024-07-25txt文件中包含 Linux系统下Qt5.12.10.run安装包 下载链接,及其提取码,该安装包之前从官网免费下载,目前已无法正常下载。 若链接失效,请私信。
- 0B
openssh-server离线安装包
2022-11-04openssh-server离线安装包 三个.deb文件
- 52.9MB
VisualGDB 5.6 R9//支持VS2008-VS2022
2023-05-04VisualGDB 是 Visual Studio 的一个非常强大的扩展,它允许您调试或调试嵌入式系统。这个程序有一个非常有吸引力的用户界面,它具有许多用于调试或调试代码的功能。VisualGDB 还有一个向导,可以帮助您调试程序并为您提供强大的指南。此外,该程序还有许多其他功能,分为常见功能、高级功能、可用性功能、Linux 功能、Android 功能等类别,每个功能都已在“功能和功能”部分为您列出。 畅享版
- 4.30MB
frpc-linux-amd64
2024-05-211. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64 2. Rename the downloaded file to: frpc_linux_amd64_v0.2 3. Move the file to this location: /home/fusionai/anaconda3/envs/llama3/lib/python3.10/site-packages/gradio
- 617.59MB
tongweb7.0,windows和linux安装包
2023-04-27下载安装部署tongweb
- 111.35MB
微信(Universal) Linux 版
2024-05-03微信(Universal) Linux 版 亲测 Ubuntu 22.04.4 LTS可用 2024.5.3
- 71.2MB
JDK1.8安装包Linux可用(jdk-8u391-linux-aarch64.tar)
2024-04-03JDK1.8安装包信创环境Linux(jdk-8u391-linux-aarch64.tar)