人民邮电出版社有限公司店铺主页二维码
人民邮电出版社有限公司 ( 微信认证 )
人民邮电出版社微店,为您提供最全面,最专业的一站式购书服务
微信扫描二维码,访问我们的微信店铺
你可以使用微信联系我们,随时随地的购物、客服咨询、查询订单和物流...

手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战

¥56.80
运费: ¥ 0.00-20.00
手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品图0
手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品图1
手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品图2
手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品图3
手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品图4
手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品缩略图0 手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品缩略图1 手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品缩略图2 手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品缩略图3 手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战 商品缩略图4

商品详情

书名:手把手教你学Linux设备驱动开发
定价:79.8
ISBN:9787115701770
作者:北京迅为电子有限公司
版次:第1版
出版时间:2026-08

内容提要:
Linux 设备驱动程序(常简称为驱动)开发是构建智能硬件与物联网系统的核心技术,它不仅要求*深入理解 Linux 内核工作机制,还要求*掌握硬件交互、并发控制、中断处理等关键系统级编程技能。 本书系统讲解嵌入式 Linux 设备驱动的知识体系与开发方法。全书从前置知识与Linux内核编程出发,深入讲解字符设备驱动、并发与竞争、I/O 模型、中断、平台总线、设备树、设备模型、热插拔技术等核心机制。在此基础上,本书结合现代嵌入式开发的实际需求,深入剖析pinctrl 与GPIO子系统、输入子系统等关键框架。之后,以单总线、I2C 总线、SPI 总线、串口通信、PWM、CAN 总线等为例,系统阐述复杂总线设备的驱动开发流程,并进一步拓展*网络设备、IIO 子系统、USB 子系统及块设备驱动的实现,涵盖从外设到网络、从通信到存储的各个驱动开发领域。 本书面向嵌入式系统开发工程师、Linux 驱动工程师,以及具有相关基础的嵌入式开发爱好者,既可作为系统学习驱动开发的指南,也可作为高校嵌入式相关课程的教学参考书。



作者简介:
北京迅为电子有限公司(简称迅为公司)是一家专注于嵌入式平台与解决方案的高新技术公司,也是物联网与边缘计算领域的重要技术创新公司。 迅为公司研发团队在嵌入式领域拥有十余年的技术积累与行业实践经验,在硬件设计、嵌入式 Linux 系统与 Android 系统定制、底层驱动开发、系统性能优化及合规性设计等方向形成了完整的技术栈,具备出色的跨行业项目落地能力。团队长期深耕嵌入式核心技术,致力于为工业物联网、智能终端、边缘计算等领域提供可靠的嵌入式平台与解决方案,持续助力国家智能制造与信息化建设。

目录:
第 1 章 前置知识..............................................1
1.1 Linux 基础知识.................................1
1.1.1 Linux 的前身——UNIX ...........1
1.1.2 GNU 和 Linux 的发展 ..............2
1.1.3 Linux 的优势.............................2
1.1.4 Linux 版本命名.........................3
1.2 设备驱动开发的基础知识.............5
1.2.1 设备驱动分类............................5
1.2.2 框架学习法................................5
1.3 iTOP 开发板介绍.............................6
1.3.1 连接方式介绍............................6
1.3.2 核心板介绍................................8
1.3.3 底板介绍..................................11
1.4 小结.....................................................13
第 2 章 Linux 内核编程 ...............................14
2.1 Linux 内核源码结构......................14
2.2 helloworld 驱动程序 ......................15
2.3 将驱动编译为内核模块 ...............16
2.3.1 内核模块编译及加载与卸载....16
2.3.2 内核模块参数传递..................17
2.3.3 内核模块符号导出..................19
2.3.4 内核模块的加载流程..............19
2.4 将驱动编译进内核.........................20
2.4.1 图形化操作界面......................20
2.4.2 Kconfig 与 Makefile ................21
2.4.3 编译进内核的驱动的加载流程..................22
2.5 小结....................................................24
第 3 章 字符设备驱动..................................25
3.1 文件操作集......................................25
3.2 字符设备注册..................................26
3.2.1 申请和释放设备号 .................26
3.2.2 创建设备节点 .........................26
3.2.3 注册字符设备 .........................27
3.3 杂项设备注册..................................28
3.4 内核空间与用户空间数据交互机制...........................29
3.5 文件私有数据管理........................30
3.6 ioctl()函数..........................................31
3.7 内核定时器......................................33
3.8 RTC 驱动..........................................35
3.9 看门狗驱动......................................36
3.10 驱动程序调试方法......................38
3.11 小结..................................................39
第 4 章 并发与竞争.......................................40
4.1 并发与竞争概述.............................40
4.2 原子操作...........................................40
4.3 自旋锁................................................42
4.4 信号量................................................44
4.5 互斥锁................................................46
4.6 小结....................................................46
第 5 章 I/O 模型............................................. 47
5.1 阻塞与非阻塞 I/O ......................... 47
5.2 I/O 多路复用................................... 51
5.3 信号驱动 I/O................................... 52
5.4 小结.................................................... 53
第 6 章 中断 .................................................... 54
6.1 中断概述........................................... 54
6.2 中断的申请与处理........................ 55
6.3 中断的底半部实现方法............... 57
6.3.1 tasklet....................................... 57
6.3.2 软中断..................................... 59
6.3.3 工作队列................................. 60
6.3.4 中断线程化............................. 62
6.4 小结.................................................... 63
第 7 章 平台总线........................................... 64
7.1 平台总线模型................................. 64
7.2 平台总线驱动开发........................ 67
7.2.1 平台设备注册和卸载............. 67
7.2.2 平台驱动注册和卸载............. 68
7.3 小结.................................................... 69
第 8 章 设备树................................................ 70
8.1 设备树概述...................................... 70
8.2 设备树语法...................................... 71
8.2.1 根节点..................................... 71
8.2.2 子节点..................................... 71
8.2.3 reg 属性................................... 72
8.2.4 compatible 属性 ...................... 72
8.2.5 中断相关属性......................... 73
8.2.6 自定义属性............................. 74
8.2.7 修改或追加节点内容............. 74
8.2.8 包含文件................................. 75
8.3 常用的 of 操作函数....................... 75
8.3.1 查找节点函数......................... 75
8.3.2 获取属性函数......................... 76
8.3.3 映射函数................................. 76
8.3.4 获取中断资源函数................. 77
8.4 设备树展开流程............................. 77
8.5 设备树插件.......................................81
8.6 小结.....................................................82
第 9 章 设备模型............................................83
9.1 设备模型概述..................................83
9.1.1 总线..........................................83
9.1.2 设备..........................................84
9.1.3 设备驱动..................................84
9.1.4 类..............................................86
9.2 kobject 与 kset ..................................87
9.3 引用计数...........................................91
9.4 小结.....................................................93
第 10 章 热插拔技术 ....................................94
10.1 热插拔概述....................................94
10.2 udev 和 mdev 规则.......................94
10.3 小结..................................................97
第 11 章 pinctrl 与 GPIO 子系统 .............98
11.1 pinctrl 子系统概述.......................98
11.2 pinctrl 子系统使用.....................101
11.3 GPIO 子系统概述 .....................106
11.4 pinctrl 子系统与GPIO 子系统配合使用.................107
11.5 小结................................................109
第 12 章 输入子系统 ..................................110
12.1 输入子系统概述.........................110
12.2 输入设备驱动开发....................114
12.3 输入事件处理驱动开发...........117
12.4 上报数据分析..............................119
12.4.1 数据格式简介....................119
12.4.2 实例分析............................120
12.5 小结................................................122
第 13 章 单总线............................................123
13.1 单总线概述..................................123
13.2 DS18B20 寄存器介绍...............124
13.3 DS18B20 指令介绍 ...................125
13.4 DS18B20 驱动开发....................126
13.4.1 申请 GPIO ...........................126
13.4.2 实现复位时序......................126
13.4.3 实现写时序..........................127
13.4.4 实现读时序..........................129
13.4.5 实现温度读取功能..............130
13.5 小结 ................................................130
第 14 章 I2C 总线.........................................131
14.1 I2C 总线概述................................131
14.2 I2C 时序分析................................132
14.3 I2C 子系统框架 ...........................134
14.4 I2C设备驱动开发.......................135
14.4.1 i2c_client 部分...................135
14.4.2 i2c_driver 部分 ..................137
14.4.3 I2C读写函数......................138
14.5 在应用层使用I2C 总线............141
14.6 i2c-tools 的使用...........................143
14.6.1 i2cdetect:扫描I2C总线设备................143
14.6.2 i2cdump:读取设备寄存器的值...............144
14.6.3 i2cset:向指定寄存器写入数据..............145
14.6.4 i2cget:从指定寄存器读取数据..............145
14.7 小结 ................................................145
第 15 章 SPI 总线........................................146
15.1 SPI 总线概述...............................146
15.2 SPI 工作模式...............................147
15.3 SPI 子系统框架 ..........................149
15.4 SPI 设备驱动开发......................150
15.4.1 spi_device 部分..................150
15.4.2 spi_driver 部分...................151
15.4.3 SPI 读写函数.....................153
15.5 在应用层使用 SPI 总线...........155
15.5.1 spidev 工具组简介 ............155
15.5.2 SPI 应用开发.....................156
15.6 小结 ................................................158
第 16 章 串口通信.......................................159
16.1 串口概述.......................................159
16.2 串口通信协议.............................160
16.3 串口应用开发.............................160
16.4 小结................................................162
第 17 章 PWM..............................................163
17.1 PWM 概述...................................163
17.2 PWM 驱动开发..........................165
17.2.1 PWM 子系统核心 API .....165
17.2.2 PWM 驱动程序编写.........166
17.3 模拟 PWM...................................167
17.4 小结................................................169
第 18 章 CAN 总线.....................................170
18.1 CAN 概述.....................................170
18.2 CAN 帧格式................................170
18.3 CAN 总线仲裁机制..................176
18.4 CAN 应用开发............................177
18.4.1 套接字创建与绑定 ...........177
18.4.2 数据发送应用 ...................178
18.4.3 数据接收应用 ...................179
18.5 小结................................................181
第 19 章 网络设备.......................................182
19.1 网络设备概述.............................182
19.2 以太网接口..................................184
19.3 网络体系架构.............................188
19.4 数据封装与解封装....................190
19.5 网络设备驱动框架....................191
19.6 网络设备驱动开发....................194
19.6.1 注册/注销网络设备驱动 ...194
19.6.2 初始化网络设备 ...............195
19.6.3 打开/关闭网络设备 ..........196
19.6.4 数据收发流程 ...................197
19.7 网络应用编程.............................199
19.7.1 TCP 套接字编程...............199
19.7.2 UDP 套接字编程 ..............201
19.8 小结................................................204
第 20 章 IIO 子系统.................................... 205
20.1 IIO 子系统概述 ......................... 205
20.1.1 IIO 核心结构体介绍......... 205
20.1.2 IIO 设备注册..................... 208
20.2 使用sysfs接口操作ADC设备............................ 209
20.3 基于IIO的ADC设备驱动开发实战........................ 210
20.3.1 IIO API 函数介绍 ............. 210
20.3.2 ADC 设备驱动程序编写.... 211
20.4 小结................................................ 212
第 21 章 USB 子系统 ................................ 213
21.1 USB 简介 ..................................... 213
21.2 USB 协议介绍............................ 214
21.2.1 USB 描述符 ...................... 214
21.2.2 USB 通信数据格式 .......... 218
21.2.3 USB 枚举 .......................... 222
21.3 USB 驱动框架............................ 223
21.4 USB 设备驱动............................ 224
21.4.1 USB 设备驱动框架 .......... 224
21.4.2 USB 请求块 ...................... 226
21.4.3 probe 和 disconnect 函数... 228
21.5 Gadget Function 驱动................ 231
21.6 小结................................................ 232
第 22 章 块设备........................................... 233
22.1 块设备简介.................................. 233
22.1.1 什么是块设备....................233
22.1.2 常见存储介质....................234
22.2 文件系统与存储设备................236
22.2.1 什么是文件系统................236
22.2.2 文件系统的种类................237
22.3 块设备驱动框架.........................238
22.3.1 通用块层............................238
22.3.2 I/O 调度层 .........................240
22.3.3 块设备驱动层....................240
22.4 块设备驱动开发.........................241
22.4.1 register_blkdev()函数 ........241
22.4.2 unregister_blkdev()函数 ....241
22.4.3 blk_mq_init_sq_queue()函数.............241
22.4.4 blk_cleanup_queue()函数....242
22.4.5 set_capacity()函数 .............242
22.4.6 add_disk()函数...................242
22.4.7 blk_mq_start_request()函数..............242
22.4.8 blk_rq_pos()函数...............243
22.4.9 blk_rq_cur_bytes()函数.....243
22.4.10 bio_data()函数 .................243
22.4.11 blk_update_request()函数.............243
22.4.12 blk_mq_end_request() 函数..................243
22.4.13 alloc_disk 宏 ....................244
22.4.14 rq_data_dir 宏 ..................244
22.4.15 vmem 虚拟块设备驱动的实现.................244
22.5 小结.........................................246
人民邮电出版社有限公司店铺主页二维码
人民邮电出版社有限公司 (微信公众号认证)
人民邮电出版社微店,为您提供最全面,最专业的一站式购书服务
扫描二维码,访问我们的微信店铺
随时随地的购物、客服咨询、查询订单和物流...

手把手教你学Linux设备驱动开发 22大核心专题 源码视频配套 迅为公司 开发实战

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

打开微信,扫一扫

或搜索微信号:renyoushe
人民邮电出版社官方微信公众号

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏