首页>参考读物>计算机科学与技术>软件与程序设计

RT-Thread设备驱动开发指南
作者 : 杨洁 郭占鑫 刘康 熊谱翔 著
出版日期 : 2022-12-29
ISBN : 978-7-111-71745-4
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 356
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书由自研开源嵌入式实时操作系统RT-Thread核心开发者撰写,专业性毋庸置疑,系统讲解RT-Thread设备驱动开发方法,剖析26种设备驱动开发案例,助力开发者快速掌握RT-Thread设备驱动开发技能。
本书的内容共27章,分为三篇。
基础篇(第1~11章),先对RT-Thread以及设备框架进行总体介绍,再分别介绍RT-Thread中常用的设备,包括串口、I2C、SPI等,适合刚接触驱动开发的人学习。
进阶篇(第12~20章),介绍稍复杂一些的外设驱动,如SDIO、触摸、显示、传感器、加解密设备等。
高级篇(第21~27章),介绍一些复杂的驱动,如网络、音频、USB、CAN等,开发此类设备驱动要求开发者本身对相应的外设协议比较熟悉。
各章均配有配套案例,方便读者动手实践和参考。

图书特色

自研开源嵌入式实时操作系统RT-Thread核心开发者撰写,专业性毋庸置疑
系统讲解RT-Thread设备驱动开发方法,剖析26种设备驱动开发案例,助力开发者快速掌握RT-Thread设备驱动开发技能

上架指导

嵌入式系统及物联网开发

封底文字

在中国,RT-Thread是一款深受开发者喜爱的开源操作系统,成功地成为物联网生态的行业标杆。RT-Thread正在进入汽车和航空等注重安全的关键领域,在国际上知名度也越来越大。设备驱动是嵌入式实时操作系统必不可少的关键技术,每一种嵌入式实时操作系统都以广泛地支持设备驱动而自豪,RT-Thread就是其中的佼佼者。本书的出版为开发者学习RT-Thread设备驱动原理和开发方法提供了详细的官方指导,助力RT-Thread赋能更多的产业。
—— 何小庆,知名嵌入式系统专家、嵌入式系统联谊会秘书长 
RT-Thread作为中国本土的实时操作系统,一直秉持着“立足中国,走向世界”的理念,本书的出版将让广大的工程师可以更加方便地使用RT-Thread。本书为RT-Thread官方出品,内容权威,进一步丰富了RT-Thread的中文资料。本书翔实地讲解了RT-Thread设备框架和驱动的原理与设计方法,对读者的学习和开发工作颇有助益。
—— 满鉴霆,RT-Thread社区核心开发者和维护者
本书内容几乎涵盖了嵌入式系统设计中的所有外设,并按设计难度、使用复杂度进行编写。本书首先介绍了设备框架,基于常用的外设进行驱动开发,让读者更容易理解设备结构,尤其适合初学者在学习裸机编程操控外设时学习;其次基于不同总线的存储单元、传感器等复杂外设介绍如何进行驱动开发;最后介绍电源管理、无线网络、音频、声卡、USB和CAN外设的驱动开发,这对资深嵌入式工程师的项目开发具有指导作用。推荐RT-Thread操作系统开发者、RT-Thread嵌入式软硬件工程师以及高等院校的电子信息相关专业师生阅读。
—— 孙冬梅,南京工业大学副教授
该书从RT-Thread实时操作系统视角,给出RT-Thread驱动开发的框架及大量示例,可以帮助用户从容掌握基于RT-Thread的驱动开发方法,具有极大的实践指导价值。
—— 王宜怀,中国软件行业协会嵌入式系统分会理事

作者简介

杨洁 郭占鑫 刘康 熊谱翔 著:杨洁
上海睿赛德电子科技有限公司嵌入式软件开发工程师、RT-Thread操作系统培训讲师、嵌入式人才认证项目及文档中心负责人,对RT-Thread设备框架及驱动实现有较为深刻的认识,擅长嵌入式实时操作系统的应用和中间件、芯片外设驱动的开发,精通C语言、Python语言。

郭占鑫
RT-Thread社区技术负责人,拥有超过5年的操作系统及中间件开发经验,负责设计或优化多种设备驱动框架,如传感器、USB、大容量存储设备MTD、PWM等。擅长操作系统级开发,曾担任数十场研讨会、讲座、论坛分享嘉宾,并为数十家企事业单位、大学提供培训与咨询服务。

刘康
RT-Thread核心开发者,负责RT-Thread仓库的日常维护和版本发布,拥有多年操作系统及中间件开发经验,设计并实现了多款中间件,如内存保护抽象层、URPC、UDB等。参与穿戴操作系统湃心OS的研发、优化及驱动开发,拥有丰富的RT-Thread驱动开发经验。

熊谱翔
睿赛德科技创始人兼CEO,于2006年创立了RT-Thread开源操作系统,并以开源社区的形式,带领中国国内优秀的工程师,从零开始设计与开发了RT-Thread自主操作系统、RT-Thread Smart微内核操作系统,以及大量周边成熟、稳定软件组件,如文件系统、命令行、图形用户界面等。

图书目录



前言 1
写给读者 1
勘误与支持 1
致谢 1


第1章 RT-Thread简介 1
1.1 RT-Thread概述 1
1.1.1 许可协议 2
1.1.2 架构 2
1.2 RT-Thread源码获取 3
1.3 芯片对接RT-Thread流程 4


第2章 RT-Thread设备框架 1
1.1 设备框架介绍 1
2.1.1 直接注册到设备管理器中 2
2.1.2 通过设备驱动框架注册到设备管理器中 3
2.1.3 IO设备模型 3
2.2 设备分类 4
2.3 IO设备管理接口 6
2.3.1 查找设备 7
2.3.2 初始化设备 7
2.3.3 打开和关闭设备 8
2.3.4 控制设备 9
2.3.5 读写设备 10
2.3.6 数据收发回调 11
2.3.7 设备访问示例 12
2.4 驱动编写流程与规范 14
基础篇
第3章 UART设备驱动开发 1
3.1 UART框架结构 1
3.2 驱动开发步骤 2
3.3 创建串口设备 3
3.4 实现串口设备的操作方法 4
3.4.1 为设备定义操作方法 5
3.4.2 ops:configure配置串口 5
3.4.3 ops:control控制串口 9
3.4.4 ops:putc发送一个字符 13
3.4.5 ops:getc接收一个字符 14
3.4.6 ops:transmit 16
3.5 注册设备 17
3.5.1 注册接口 17
3.5.2 示例 18
3.6 串口中断处理 19
3.6.1 中断接口原型 19
3.6.2 中断示例 20
3.7 增加 DMA 模式 23
3.7.1 DMA 初始化 24
3.7.2 DMA 中断处理 27
3.7.3 DMA 发送 30
3.8 驱动配置 30
3.8.1 Kconfig配置 30
3.8.2 SConscript配置 31
3.9 驱动验证 31


第4章 PIN驱动开发 1
4.1 PIN 设备简介 1
4.2 PIN框架结构 2
4.2.1 驱动开发步骤 3
4.3 实现设备的操作方法 4
4.3.1 为设备定义操作方法 5
4.3.2 ops:pin_get 6
4.3.3 ops:pin_mode 7
4.3.4 ops:pin_write 9
4.3.5 ops:pin_read 10
4.3.6 ops:pin_attach_irq 11
4.3.7 ops:pin_irq_enable 15
4.3.8 ops:pin_detach_irq 19
4.4 注册设备 20
4.4.1 注册函数 20
4.4.2 注册示例 21
4.5 驱动配置 21
4.5.1 Kconfig 配置 21
4.5.2 Sconscript 配置 22
4.6 驱动验证 22


第5章 I2C 设备驱动开发 2
5.1 简介 2
5.2 I2C框架结构 3
5.3 I2C总线设备结构 4
5.4 硬件I2C驱动开发步骤 5
5.5 实例化设备 5
5.6 实现设备的操作方法 6
5.6.1 示例:为设备定义操作方法 7
5.6.2 ops:master_xfer 7
5.7 注册设备 9
5.7.1 注册函数 9
5.7.2 注册示例 10
5.8 驱动配置 11
5.8.1 Kconfig 配置 11
5.8.2 Sconscript 配置 11
5.9 驱动验证 12
5.10 软件I2C驱动开发步骤 13
5.11 实例化设备 13
5.12 实现设备的操作方法 13
5.12.1 示例:为设备定义操作方法 14
5.12.2 ops:set_sda 15
5.12.3 ops:set_scl 16
5.12.4 ops:get_sda 17
5.12.5 ops:get_scl 18
5.12.6 ops:udelay 18
5.13 注册设备 20
5.13.1 注册函数 20
5.13.2 注册示例 20
5.14 驱动配置 21
5.15 驱动验证 21


第6章 SPI 总线设备驱动开发 1
6.1 SPI简介 1
6.2 SPI/QSPI 设备驱动框架结构 5
6.3 开发步骤 6
6.4 SPI 总线设备驱动 7
6.4.1 创建 SPI 总线设备 7
6.4.2 实现 SPI 总线设备的操作方法 8
1. ops:configure 8
2. ops:xfer 10
6.4.3 注册 SPI 总线设备 12
6.4.4 增加 DMA 功能 14
6.4.5 实现挂载SPI从设备功能 18
6.4.6 SPI 总线设备驱动配置 20
6.4.7 SPI驱动验证 21
6.5 QSPI 总线设备驱动 21
6.5.1 创建 QSPI 总线设备 21
6.5.2 实现 QSPI 总线设备的操作方法 22
6.5.3 注册 QSPI 总线设备 25
6.5.4 实现挂载QSPI从设备功能 26
6.5.5 QSPI 总线设备驱动配置 29
6.5.6 驱动验证 30

第7章 HWTIMER 设备驱动开发 1
7.1 开发步骤 1
7.2 HWTIMER 设备驱动 2
7.2.1 创建 HWTIMER 设备 2
7.2.2 实现 HWTIMER 设备的操作方法 3
7.2.3 初始化 HWTIMER 设备 3
7.2.4 启动 HWTIMER 设备 5
7.2.5 停止 HWTIMER 设备 7
7.2.6 获取 HWTIMER 设备当前值 7
7.2.7 控制 HWTIMER 设备 8
7.3 注册 HWTIMER 设备 10
7.4 驱动配置 11
7.5 驱动验证 11



第8章 PWM设备驱动开发 1
8.1 PWM设备框架结构 1
8.1.1 驱动开发步骤 3
8.2 实现设备 3
8.3 实现设备的操作方法 5
8.3.1 为设备定义操作方法 5
8.3.2 ops:control 5
8.4 注册 PWM 设备 9
8.4.1 注册函数 9
8.4.2 注册示例 10
8.5 驱动配置 11
8.5.1 Kconfig配置 11
8.5.2 Sconscript配置 11
8.6 驱动验证 12


第9章 RTC 设备驱动开发 1
9.1 RTC框架 2
9.1.1 驱动开发步骤 2
9.2 创建 RTC 设备 2
9.3 实现 RTC 操作方法 3
9.3.1 为设备定义操作方法 3
9.3.2 ops:control 控制设备 3
9.4 注册 RTC 设备 4
9.4.1 注册函数 4
9.4.2 注册示例 5
9.5 驱动配置 7
9.5.1 Kconfig配置 7
9.5.2 Sconscript配置 8
9.6 驱动验证 12


第10章 ADC 设备驱动开发 1
10.1 ADC框架结构 2
10.1.1 驱动开发步骤 2
10.2 创建 ADC 设备 3
10.3 实现 ADC 设备的操作方法 3
10.3.1 为设备定义操作方法 4
10.3.2 ops:enabled 使能/失能 ADC 4
10.3.3 ops:convert 数据转换 5
10.4 注册 ADC 设备 7
10.4.1 注册函数 7
10.4.2 注册示例 7
10.5 驱动配置 9
10.5.1 Kconfig 配置 9
10.5.2 Sconscript 配置 10
10.6 驱动验证 10


第11章 DAC 设备驱动开发 1
11.1 DAC设备驱动框架 1
11.1.1 驱动开发步骤 2
11.2 创建 DAC 设备 3
11.3 实现 DAC 设备的操作方法 4
11.3.1 为设备定义操作方法 4
11.3.2 ops:enabled使能设备通道 4
11.3.3 ops:disabled关闭设备通道 5
11.3.4 ops:convert 数据转换 6
11.4 注册 DAC 设备 8
11.4.1 注册函数 8
11.4.2 注册示例 9
11.5 驱动配置 10
11.5.1 Kconfig配置 10
11.5.2 Sconscript配置 10
11.6 驱动验证 11


第12章 WDT 设备驱动开发 1
12.1 WDT框架结构 2
12.1.1 驱动开发步骤 2
12.1 实现设备 3
12.1.1 设备原型解析 3
12.1.2 创建设备示例 3
12.2 实现设备的操作方法 4
12.2.1 ops:init 4
12.2.2 ops:control 5
12.3 注册设备 8
12.3.1 注册接口 8
12.3.2 注册示例 8
12.4 驱动配置 9
12.12.1 Kconfig 9
12.12.2 Sconscript 9
12.5 驱动验证 10

进阶篇

第13章 SDIO 设备驱动开发 1
13.1 开发步骤 1
13.2 实现 SDIO 设备的操作方法 1
13.2.1 SDIO 发送请求接口 2
13.2.2 SDIO 配置接口 12
13.2.3 SDIO 获取状态接口 15
13.2.4 SDIO 使能 / 失能中断接口 16
13.3 创建 HOST 17
13.4 SDIO 外设初始化 19
13.5 驱动配置 22
13.6 驱动验证 22


第14章 TOUCH 设备 GT9147 驱动开发 1
14.1 简介 1
14.2 TOUCH设备框架结构 2
14.2.1 开发步骤 3
14.3 GT9147 简介 3
14.3.1 概述 3
14.3.2 硬件配置 4
14.4 创建 Touch 设备 5
14.5 实现 Touch 设备的操作方法 6
14.5.1 读 GT9147 寄存器 6
14.5.2 写 GT9147 寄存器 8
14.5.3 读 GT9147 触摸点信息 9
14.5.4 控制 GT9147 12
14.6 注册 Touch 设备 14
14.7 驱动配置 15
14.7.1 Kconfig 配置 15
14.7.2 Sconscript 配置 16
14.8 驱动验证 16


第15章 LCD 设备驱动开发 1
15.1 开发步骤 1
15.2 实现LCD设备的操作方法 1
15.2.1 ops:control接口 2
15.3 注册设备 3
15.3.1 注册函数 3
15.3.2 注册示例 3
15.4 驱动配置 4
15.4.1 Kconfig 配置 4
15.4.2 Sconscript 配置 5
15.5 驱动验证 5


第16章 SENSOR(传感器)设备驱动开发 1
16.1 SENSOR设备框架 1
16.1.1 驱动开发步骤 2
16.2 创建传感器设备 2
16.3 实现设备操作方法 3
16.3.1 为设备创建操作方法 3
16.3.2 ops:fetch_data获取传感器数据 3
16.3.3 ops:control 控制传感器设备 5
16.4 设备注册 7
16.4.1 注册接口 7
16.4.2 注册示例 7
16.5 传感器设备驱动配置 9
16.5.1 Kconfig 配置 9
16.5.2 Sconscript 配置 11
16.6 驱动验证 11

第17章 MTD NOR 设备驱动开发 1
17.1 MTD 设备框架 1
17.1.1 驱动开发步骤 1
17.2 创建 MTD NOR 设备 2
17.3 实现 MTD NOR 设备的操作方法 3
17.3.1 为设备定义操作方法 3
17.3.2 ops:read_id读取设备 ID 3
17.3.3 ops:read读数据 4
17.3.4 ops:write写数据 6
17.3.5 ops:erase_block块擦除 8
17.4 注册 MTD NOR 设备 9
17.4.1 注册函数 9
17.4.2 注册示例 10
17.5 驱动配置 12
17.5.1 Kconfig配置 12
17.5.2 Sconscript配置 12
17.6 驱动验证 13

第18章 MTD NAND 设备驱动开发 1
18.1 MTD 设备框架 1
18.1.1 驱动开发步骤 2
18.2 创建 MTD NAND 设备 2
18.3 实现 MTD NAND 设备的操作方法 3
18.3.1 为设备定义操作方法 3
18.3.2 ops:read_id读取设备 ID 4
18.3.3 ops:read_page读数据 4
18.3.4 ops:write写数据 5
18.3.5 ops:erase_block块擦除 6
18.3.6 ops:move_page 7
18.3.7 ops:check_block 7
18.3.8 ops:mark_badblock 8
18.4 注册 MTD NAND 设备 8
18.4.1 注册函数 8
18.4.2 注册示例 8
18.5 驱动配置 8
18.5.1 Kconfig配置 9
18.5.2 Sconscript配置 9
18.6 驱动验证 9

第19章 脉冲编码器设备驱动开发 1
19.1 本章内容 1
19.2 基础知识 1
19.2.1 硬件设备 1
19.2.2 抽象设备 2
19.3 驱动开发步骤 4
19.4 创建脉冲编码器设备 4
19.5 实现脉冲编码器设备的操作方法 6
19.5.1 ops: init 初始化脉冲编码器 6
19.5.2 ops: control 控制脉冲编码器 8
19.5.3 ops: get_count 获取编码器计数 9
19.5.4 ops: clear_count 清空编码器计数 10
19.6 注册脉冲编码器设备 11
19.6.1 注册函数 11
19.6.2 注册示例 12
19.7 驱动配置 12
19.7.1 Kconfig 配置 13
19.7.2 Sconscript 配置 13
19.8 驱动验证 13

第20章 CRYPTO 设备驱动开发指南 1
20.1 开发步骤 1
20.2 CRYPTO 设备驱动 2
20.2.1 创建 CRYPTO 设备 2
20.2.2 实现 CRYPTO 设备的操作方法 2
20.2.3 CRYPTO 设备创建接口 2
1. CRC冗余校验设备 5
2. RNG随机数发生器设备 8
3. HASH设备 10
4. CRYP对称加解密设备 13
20.2.4 CRYPTO 设备释放接口 18
20.2.5 CRYPTO 设备复制接口 19
20.2.6 CRYPTO 设备复位接口 21
20.3 注册 CRYPTO 设备 22
20.4 驱动配置 24
20.5 驱动验证 24



高级篇


第21章 PM 设备驱动 1
21.1 PM 框架结构 1
21.1.1 驱动开发步骤 2
21.2 创建 PM 设备 3
21.3 实现 PM 设备的操作方法 3
21.4 驱动配置 8
21.4.1 Kconfig 配置 9
21.4.2 Sconscript 配置 9
21.5 驱动验证 10


第22章 WLAN 设备驱动 1
22.1 WLAN 框架结构 1
22.1.1 驱动开发步骤 2
22.2 创建 WLAN 设备 3
22.3 实现 WLAN 设备的操作方法 3
22.4 注册 WLAN 设备 17
22.4.1 注册函数 17
22.4.2 注册示例 17
22.5 驱动配置 18
22.5.1 Kconfig 配置 18
22.5.2 Sconscript 配置 19
22.6 驱动验证 19


第23章 MIC 设备驱动 1
23.1 MIC 框架结构 1
23.1.1 驱动开发步骤 2
23.2 创建 MIC 设备 3
23.3 实现 MIC 设备的操作方法 3
23.3.1 ops:getcaps 获取设备功能 4
23.3.2 ops:configure设备配置 8
23.3.3 ops:init 设备初始化 10
23.3.4 ops:start 设备启动 11
23.3.5 ops:stop 设备停止 14
23.3.6 ops:transmit 传输数据 15
23.3.7 ops:buffer_info 获取缓冲区信息 16
23.4 注册 MIC 设备 17
23.4.1 注册函数 17
23.4.2 注册示例 17
23.5 驱动配置 18
23.5.1 Kconfig 配置 18
23.5.2 Sconscript 配置 19
23.6 驱动验证 19

第24章 SOUND 设备驱动开发指南 1
24.1 SOUND 框架结构 1
24.1.1 驱动开发步骤 3
24.2 创建 SOUND 设备 4
24.3 实现 SOUND 设备的操作方法 4
24.3.1 为设备定义操作方法 5
24.3.2 ops:getcaps 获取设备功能 5
24.3.3 ops:configure设备配置 9
24.3.4 ops:init 设备初始化 12
24.3.5 ops:start 设备启动 13
24.3.6 ops:stop 设备停止 16
24.3.7 ops:transmit 传输数据 17
24.3.8 ops:buffer_info 获取缓冲区信息 18
24.4 注册设备 19
24.5 驱动配置 21
24.5.1 Kconfig 配置 21
24.5.2 Sconscript 配置 21
24.6 驱动验证 22

第25章 USBD 设备驱动开发指南 1
25.1 开发步骤 1
25.2 创建 USBD 设备 2
25.3 实现 USBD 设备的操作方法 3
25.3.1 设置 USBD 设备地址 3
25.3.2 设置 USBD 设备配置值 4
25.3.3 设置端点 STALL 状态 4
25.3.4 清除端点 STALL 状态 5
25.3.5 使能端点 6
25.3.6 失能端点 6
25.3.7 准备一个端点接收数据 7
25.3.8 端点接收数据 7
25.3.9 端点发送数据 8
25.3.10 通知主机数据传输结束 9
25.3.11 挂起 USBD 设备 9
25.3.12 唤醒 USBD 设备 10
25.4 注册 USBD 设备 10
25.5 USBD 中断处理 13
25.6 驱动配置 14
25.7 驱动验证 15

第26章 USB HOST 设备驱动开发 1
26.1 开发步骤 1
26.2 创建 USBH 设备 2
26.3 实现 USBH 设备的操作方法 2
26.3.1 重置 USBH 设备端口 3
26.3.2 USBH 设备提交请求端口 3
26.3.3 打开 USBH 设备端口 8
26.3.4 关闭 USBH 设备端口 9
26.4 注册 USBH 设备 10
26.5 驱动配置 11
26.6 驱动验证 12
26.7 驱动配置 12


第27章CAN 设备驱动开发指南 1
27.1 CAN 设备驱动框架 2
27.1.1 驱动开发步骤 3
27.2 创建 CAN 设备 3
27.3 实现 CAN 设备的操作方法 4
27.3.1 为设备定义操作方法 4
27.3.2 ops:configure 5
27.3.3 ops:control 7
27.3.4 ops:sendmsg 10
27.3.5 ops:recvmsg 13
27.4 CAN 中断处理 14
27.5 注册设备 17
27.5.1 注册函数 17
27.5.2 注册示例 17
27.6 驱动配置 19
27.6.1 Kconfig 配置 19
27.6.2 Sconscript 配置 19
27.7 驱动验证 20

教学资源推荐
作者: Kathryn E.Sanders, Andries Van Dam
作者: (美)Al Kelley,Ira Pohl
作者: 程学先 林姗 程传慧
作者: 郑阿奇 主编 丁有和 等编著
参考读物推荐
作者: (美)Eric Rochester 著
作者: (美)Charles Ashbacher
作者: [美]马克·卢茨(Mark Lutz)著
作者: [美]伊恩 F.达尔文(Ian F. Darwin)著