万本电子书0元读

万本电子书0元读

顶部广告

手把手教你学Linux设备驱动开发电子书

1. 专题覆盖广、知识体系完整;全书涵盖 22 个驱动发核心专题,包含内核编程、字符设备、并发控制、中断处理、设备树,以及 I2C、SPI、CAN、USB 等各类主流总线口,搭建完整嵌式 Linux 驱动知识框架,化解学不全、知识梳理困难的学习难题。 2. 实例代码丰富、带注释易实操;各章节配套完整可运行代码,附带逐行代码注释,支持边学边练,不用搜集零散网络资料,阅读学习后可以上手编写驱动程序。

售       价:¥

纸质售价:¥62.20购买纸书

0人正在读 | 0人评论 6.6

作       者:北京迅为电子有限公司 著

出  版  社:人民邮电出版社有限公司

出版时间:2026-08-01

字       数:24.8万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(条)
  • 读书简介
  • 目录
  • 累计评论(条)
Linux 设备驱动程序(常简称为驱动)发是构建智能硬件与物联网系统的核心技术,它不仅要求发者深理解 Linux 内核工作机制,还要求发者掌握硬件交互、并发控制、中断处理等关键系统级编程技能。 本书系统讲解嵌式 Linux 设备驱动的知识体系与发方法。全书从前置知识与Linux内核编程出发,深讲解字符设备驱动、并发与竞争、I/O 模型、中断、平台总线、设备树、设备模型、热插拔技术等核心机制。在此基础上,本书结合现代嵌式发的实际需求,深剖析pinctrl 与GPIO子系统、输子系统等关键框架。之后,以单总线、I2C 总线、SPI 总线、串口通信、PWM、CAN 总线等为例,系统阐述复杂总线设备的驱动发流程,并一步拓展至网络设备、IIO 子系统、USB 子系统及块设备驱动的实现,涵盖从外设到网络、从通信到存储的各个驱动发领域。 本书面向嵌式系统发工程师、Linux 驱动工程师,以及具有相关基础的嵌式发爱好者,既可作为系统学习驱动发的指南,也可作为高校嵌式相关课程的教学参考书。<br/>【推荐语】<br/>1. 专题覆盖广、知识体系完整;全书涵盖 22 个驱动发核心专题,包含内核编程、字符设备、并发控制、中断处理、设备树,以及 I2C、SPI、CAN、USB 等各类主流总线口,搭建完整嵌式 Linux 驱动知识框架,化解学不全、知识梳理困难的学习难题。 2. 实例代码丰富、带注释易实操;各章节配套完整可运行代码,附带逐行代码注释,支持边学边练,不用搜集零散网络资料,阅读学习后可以上手编写驱动程序。 3. 多方推荐、行业实战沉淀;由龙芯中科副总裁、北航博导、北邮博导联袂推荐,依托迅为电子十余年嵌式培训经验整理编写,贴合产业真实发场景。 4. 配套资源齐全、闭环学习;附赠全套源码与视频教程,采用理论讲解 + 代码实操 + 发板验证的学习模式,构建闭环学习路径,实现从门到项目实战的能力过渡。 5. 适用人群多元、兼顾教学参考;面向嵌式发工程师、Linux 驱动工程师与发爱好者,既可作为驱动发自学指南,也能够用作高校嵌式相关课程教学参考书<br/>【作者】<br/>北京迅为电子有限公司(简称迅为公司)是一家专注于嵌式平台与解决方案的高新技术公司,也是物联网与边缘计算领域的重要技术创新公司。 迅为公司研发团队在嵌式领域拥有十余年的技术积累与行业实践经验,在硬件设计、嵌式 Linux 系统与 Android 系统定制、底层驱动发、系统性能优化及合规性设计等方向形成了完整的技术栈,具备出色的跨行业项目落地能力。团队长期深耕嵌式核心技术,致力于为工业物联网、智能终端、边缘计算等领域提供可靠的嵌式平台与解决方案,持续助力国家智能制造与信息化建设。<br/>
目录展开

内 容 提 要

推 荐 语

作 者 简 介

前言

资源与支持

第1章 前 置 知 识

1.1 Linux基础知识

1.1.1 Linux的前身——UNIX

1.1.2 GNU和Linux的发展

1.1.3 Linux的优势

1.1.4 Linux版本命名

1.2 设备驱动开发的基础知识

1.2.1 设备驱动分类

1.2.2 框架学习法

1.3 iTOP开发板介绍

1.3.1 连接方式介绍

1.3.2 核心板介绍

1.3.3 底板介绍

1.4 小结

第2章 Linux内核编程

2.1 Linux内核源码结构

2.2 helloworld驱动程序

2.3 将驱动编译为内核模块

2.3.1 内核模块编译及加载与卸载

2.3.2 内核模块参数传递

2.3.3 内核模块符号导出

2.3.4 内核模块的加载流程

2.4 将驱动编译进内核

2.4.1 图形化操作界面

2.4.2 Kconfig与Makefile

2.4.3 编译进内核的驱动的加载流程

2.5 小结

第3章 字符设备驱动

3.1 文件操作集

3.2 字符设备注册

3.2.1 申请和释放设备号

3.2.2 创建设备节点

3.2.3 注册字符设备

3.3 杂项设备注册

3.4 内核空间与用户空间数据交互机制

3.5 文件私有数据管理

3.6 ioctl()函数

3.7 内核定时器

3.8 RTC驱动

3.9 看门狗驱动

3.10 驱动程序调试方法

3.11 小结

第4章 并发与竞争

4.1 并发与竞争概述

4.2 原子操作

4.3 自旋锁

4.4 信号量

4.5 互斥锁

4.6 小结

第5章 I/O模型

5.1 阻塞与非阻塞I/O

5.2 I/O多路复用

5.3 信号驱动I/O

5.4 小结

第6章 中 断

6.1 中断概述

6.2 中断的申请与处理

6.3 中断的底半部实现方法

6.3.1 tasklet

6.3.2 软中断

6.3.3 工作队列

6.3.4 中断线程化

6.4 小结

第7章 平 台 总 线

7.1 平台总线模型

7.2 平台总线驱动开发

7.2.1 平台设备注册和卸载

7.2.2 平台驱动注册和卸载

7.3 小结

第8章 设 备 树

8.1 设备树概述

8.2 设备树语法

8.2.1 根节点

8.2.2 子节点

8.2.3 reg属性

8.2.4 compatible属性

8.2.5 中断相关属性

8.2.6 自定义属性

8.2.7 修改或追加节点内容

8.2.8 包含文件

8.3 常用的of操作函数

8.3.1 查找节点函数

8.3.2 获取属性函数

8.3.3 映射函数

8.3.4 获取中断资源函数

8.4 设备树展开流程

8.5 设备树插件

8.6 小结

第9章 设 备 模 型

9.1 设备模型概述

9.1.1 总线

9.1.2 设备

9.1.3 设备驱动

9.1.4 类

9.2 kobject与kset

9.3 引用计数

9.4 小结

第10章 热插拔技术

10.1 热插拔概述

10.2 udev和mdev规则

10.3 小结

第11章 pinctrl与GPIO子系统

11.1 pinctrl子系统概述

11.2 pinctrl子系统使用

11.3 GPIO子系统概述

11.4 pinctrl子系统与GPIO子系统配合使用

11.5 小结

第12章 输入子系统

12.1 输入子系统概述

12.2 输入设备驱动开发

12.3 输入事件处理驱动开发

12.4 上报数据分析

12.4.1 数据格式简介

12.4.2 实例分析

12.5 小结

第13章 单 总 线

13.1 单总线概述

13.2 DS18B20寄存器介绍

13.3 DS18B20指令介绍

13.4 DS18B20驱动开发

13.4.1 申请GPIO

13.4.2 实现复位时序

13.4.3 实现写时序

13.4.4 实现读时序

13.4.5 实现温度读取功能

13.5 小结

第14章 I2C总线

14.1 I2C总线概述

14.2 I2C时序分析

14.3 I2C子系统框架

14.4 I2C设备驱动开发

14.4.1 i2c_client部分

14.4.2 i2c_driver部分

14.4.3 I2C读写函数

14.5 在应用层使用I2C总线

14.6 i2c-tools的使用

14.6.1 i2cdetect:扫描I2C总线设备

14.6.2 i2cdump:读取设备寄存器的值

14.6.3 i2cset:向指定寄存器写入数据

14.6.4 i2cget:从指定寄存器读取数据

14.7 小结

第15章 SPI总线

15.1 SPI总线概述

15.2 SPI工作模式

15.3 SPI子系统框架

15.4 SPI设备驱动开发

15.4.1 spi_device部分

15.4.2 spi_driver部分

15.4.3 SPI读写函数

15.5 在应用层使用SPI总线

15.5.1 spidev工具组简介

15.5.2 SPI应用开发

15.6 小结

第16章 串 口 通 信

16.1 串口概述

16.2 串口通信协议

16.3 串口应用开发

16.4 小结

第17章 PWM

17.1 PWM概述

17.2 PWM驱动开发

17.2.1 PWM子系统核心API

17.2.2 PWM驱动程序编写

17.3 模拟PWM

17.4 小结

第18章 CAN总线

18.1 CAN概述

18.2 CAN帧格式

18.3 CAN总线仲裁机制

18.4 CAN应用开发

18.4.1 套接字创建与绑定

18.4.2 数据发送应用

18.4.3 数据接收应用

18.5 小结

第19章 网 络 设 备

19.1 网络设备概述

19.2 以太网接口

19.3 网络体系架构

19.4 数据封装与解封装

19.5 网络设备驱动框架

19.6 网络设备驱动开发

19.6.1 注册/注销网络设备驱动

19.6.2 初始化网络设备

19.6.3 打开/关闭网络设备

19.6.4 数据收发流程

19.7 网络应用编程

19.7.1 TCP套接字编程

19.7.2 UDP套接字编程

19.8 小结

第20章 IIO子系统

20.1 IIO子系统概述

20.1.1 IIO核心结构体介绍

20.1.2 IIO设备注册

20.2 使用sysfs接口操作ADC设备

20.3 基于IIO的ADC设备驱动开发实战

20.3.1 IIO API函数介绍

20.3.2 ADC设备驱动程序编写

20.4 小结

第21章 USB子系统

21.1 USB简介

21.2 USB协议介绍

21.2.1 USB描述符

21.2.2 USB通信数据格式

21.2.3 USB枚举

21.3 USB驱动框架

21.4 USB设备驱动

21.4.1 USB设备驱动框架

21.4.2 USB请求块

21.4.3 probe和disconnect函数

21.5 Gadget Function驱动

21.6 小结

第22章 块 设 备

22.1 块设备简介

22.1.1 什么是块设备

22.1.2 常见存储介质

22.2 文件系统与存储设备

22.2.1 什么是文件系统

22.2.2 文件系统的种类

22.3 块设备驱动框架

22.3.1 通用块层

22.3.2 I/O调度层

22.3.3 块设备驱动层

22.4 块设备驱动开发

22.4.1 register_blkdev()函数

22.4.2 unregister_blkdev()函数

22.4.3 blk_mq_init_sq_queue()函数

22.4.4 blk_cleanup_queue()函数

22.4.5 set_capacity()函数

22.4.6 add_disk()函数

22.4.7 blk_mq_start_request()函数

22.4.8 blk_rq_pos()函数

22.4.9 blk_rq_cur_bytes()函数

22.4.10 bio_data()函数

22.4.11 blk_update_request()函数

22.4.12 blk_mq_end_request()函数

22.4.13 alloc_disk宏

22.4.14 rq_data_dir宏

22.4.15 vmem虚拟块设备驱动的实现

22.5 小结

累计评论(条) 个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部