本书由自研开源嵌入式实时操作系统RT-Thread核心开发者撰写,系统讲解RT-Thread设备驱动开发方法,剖析26种设备驱动开发案例,助力开发者快速掌握RT-Thread设备驱动开发技能。 本书的内容共27章,分为三篇。
- 基础篇(第1~11章),先对RT-Thread以及设备框架进行总体介绍,再分别介绍RT-Thread中常用的设备,包括串口、I2C、SPI等,适合刚接触驱动开发的人学习。
- 进阶篇(第12~20章),介绍稍复杂一些的外设驱动,如SDIO、触摸、显示、传感器、加解密设备等。
- 高级篇(第21~27章),介绍一些复杂的驱动,如网络、音频、USB、CAN等,开发此类设备驱动要求开发者本身对相应的外设协议比较熟悉。
面向的读者对象:
如何申请
(1)往下滑到“产品资料”栏,可进一步了解书籍内容,章节设置;
(2)>>点击我要申请,认真填写申请理由、阅读分享计划等,即有机会免费获取书籍。
活动日程
申请时间:7月12日至8月2日
遴选公布:8月7日前,公布全部入围名单
阅读时间:8月14日-10月7日
颁奖时间:活动结束后两周内
阅读要求
(1)收到书籍后,请在EEWorld 嵌入式系统编程版块 自拟标题发表阅读心得,活动期间内,至少分享3篇具有实质性内容的心得,进度为至少每15天提交一篇,要求100%原创首发,抄袭会被封杀哦。心得可包含:书籍内容的评价、理解、尝试书中实验过程等;
(2)活动特邀请到RT-Thread官方出题,助力读者围读活动,参与者要求至少完成50%的章节问题打卡。
活动评奖
评委将对阅读心得质量、章节打卡任务完成度、分享及时性三方面进行评分。综合分=60%阅读心得质量+30%章节打卡完成度+10%及时性
综合分 | 奖励 |
综合分>=90分 | 保留阅读书籍+20威望+20芯积分 |
综合分>=75分 | 保留阅读书籍+10威望+10芯积分 |
综合分<75分 | 寄回阅读书籍 |
本书是基于RT-Thread 4.1.0 编写的,读者在跟随本书学习驱动开发的时候,也需要选择对应的源码版本。
书籍目录
前言
第一篇 基础篇
第1章 RT-Thread与设备框架
简介 2
1.1 RT-Thread概述 2
1.2 RT-Thread I/O设备框架 5
1.2.1 I/O设备模型与分类 8
1.2.2 I/O设备管理接口 10
1.2.3 驱动编写流程与规范 15
1.3 本章小结 16
第2章 UART设备驱动开发 17
2.1 UART层级结构 18
2.2 创建UART设备 19
2.3 实现UART设备的操作方法 20
2.3.1 configure:配置UART
设备 21
2.3.2 control:控制UART设备 23
2.3.3 putc:发送一个字符 26
2.3.4 getc:接收一个字符 27
2.3.5 transmit:数据发送 28
2.4 注册UART设备 29
2.5 UART设备中断处理 30
2.6 增加DMA模式 32
2.7 驱动配置 37
2.8 驱动验证 38
2.9 本章小结 39
第3章 PIN设备驱动开发 41
3.1 PIN层级结构 41
3.2 实现PIN设备的操作方法 42
3.3 注册PIN设备 51
3.4 驱动配置 52
3.5 驱动验证 52
3.6 本章小结 53
第4章 I2C总线设备驱动开发 54
4.1 I2C层级结构 55
4.2 I2C总线设备结构 55
4.3 硬件I2C总线设备驱动开发 56
4.3.1 实现设备的操作方法 57
4.3.2 注册设备 59
4.3.3 驱动配置 60
4.3.4 驱动验证 61
4.4 软件I2C总线设备驱动开发 61
4.4.1 实现设备的操作方法 62
4.4.2 注册设备 66
4.5 本章小结 67
第5章 SPI/QSPI总线设备驱动
开发 68
5.1 SPI/QSPI层级结构 69
5.2 SPI总线设备驱动开发 70
5.2.1 创建SPI总线设备 70
5.2.2 实现SPI总线设备的操作
方法 72
5.2.3 注册SPI总线设备 76
5.2.4 增加DMA功能 77
5.2.5 实现挂载SPI从设备功能 80
5.2.6 SPI总线设备驱动配置 81
5.2.7 驱动验证 82
5.3 QSPI 总线设备驱动开发 83
5.3.1 创建QSPI总线设备 83
5.3.2 实现QSPI总线设备的
操作方法 84
5.3.3 注册QSPI总线设备 87
5.3.4 实现挂载QSPI从设备
功能 87
5.3.5 QSPI 总线设备驱动配置 89
5.3.6 驱动验证 89
5.4 本章小结 90
第6章 HWTIMER设备驱动
开发 91
6.1 HWTIMER层级结构 91
6.2 创建HWTIMER设备 92
6.3 实现HWTIMER设备的操作
方法 93
6.3.1 init:初始化设备 93
6.3.2 start:启动设备 95
6.3.3 stop:停止设备 96
6.3.4 count_get:获取设备
当前值 96
6.3.5 control:控制设备 97
6.4 注册HWTIMER设备 98
6.5 HWTIMER设备中断处理 99
6.6 驱动配置 100
6.7 驱动验证 101
6.8 本章小结 101
第7章 PWM设备驱动开发 102
7.1 PWM层级结构 103
7.2 创建PWM设备 104
7.3 实现PWM设备的操作方法 105
7.4 注册PWM设备 108
7.5 驱动配置 109
7.6 验证与使用 110
7.7 本章小结 111
第8章 RTC设备驱动开发 112
8.1 RTC层级结构 112
8.2 创建RTC设备 113
8.3 实现RTC设备的操作方法 113
8.3.1 为设备定义操作方法 114
8.3.2 init:初始化设备 115
8.3.3 get_secs:获取时间 115
8.3.4 set_secs:设置时间 116
8.3.5 get_timeval:获取timeval
结构 117
8.4 注册RTC设备 118
8.5 驱动配置 119
8.6 驱动验证 120
8.7 本章小结 121
第9章 ADC设备驱动开发 122
9.1 ADC层级结构 122
9.2 创建ADC设备 123
9.3 实现ADC设备的操作方法 124
9.3.1 enabled:控制ADC
通道 125
9.3.2 convert:转换并获取ADC
采样值 125
9.4 注册ADC设备 126
9.5 驱动配置 127
9.6 驱动验证 128
9.7 本章小结 129
第10章 DAC设备驱动开发 130
10.1 DAC层级结构 130
10.2 创建DAC设备 131
10.3 实现设备的操作方法 132
10.3.1 enabled:使能DAC
通道 133
10.3.2 disabled:禁止DAC
通道 133
10.3.3 convert:设置DAC输出值
并启动数模转换 134
10.4 注册DAC设备 135
10.5 驱动配置 136
10.6 驱动验证 136
10.7 本章小结 138
第11章 WDT设备驱动开发 139
11.1 WDT层级结构 139
11.2 创建WDT设备 140
11.3 实现WDT设备的操作方法 141
11.3.1 为设备定义操作方法 141
11.3.2 init:初始化看门狗
设备 141
11.3.3 control:控制看门狗
设备 142
11.4 注册WDT设备 143
11.5 驱动配置 144
11.6 驱动验证 145
11.7 本章小结 146
第二篇 进阶篇
第12章 SDIO 设备驱动开发148
12.1 SDIO层级结构 148
12.2 实现SDIO设备的操作方法 149
12.2.1 request:发送请求 149
12.2.2 set_iocfg:配置SDIO 154
12.2.3 get_card_status:获取
状态 156
12.2.4 enable_sdio_irq:配置
中断 156
12.3 创建并激活SDIO主机 157
12.4 驱动配置 159
12.5 驱动验证 159
12.6 本章小结 160
第13章 Touch设备驱动开发 161
13.1 Touch层级结构 161
13.2 GT9147触摸芯片 162
13.3 创建Touch设备 162
13.4 实现Touch设备的操作方法 163
13.4.1 touch_readpoint:读触摸点
信息 163
13.4.2 touch_control:控制
设备 166
13.5 注册Touch设备 168
13.6 驱动配置 169
13.7 驱动验证 170
13.8 本章小结 172
第14章 LCD设备驱动开发 173
14.1 LCD层级结构 173
14.2 创建LCD设备 174
14.3 实现LCD设备的操作方法 174
14.3.1 init:初始化LCD设备 175
14.3.2 control:控制LCD设备 175
14.4 实现绘图的操作方法 177
14.4.1 set_pixel:画点 178
14.4.2 get_pixel:读取像素点
颜色 178
14.4.3 draw_hline:画横线 179
14.4.4 draw_vline:画竖线 180
14.4.5 blit_line:画杂色水
平线 181
14.5 注册LCD设备 182
14.6 驱动配置 183
14.7 驱动验证 184
14.8 本章小结 185
第15章 传感器设备驱动开发 186
15.1 传感器层级结构 186
15.2 创建传感器设备 187
15.3 实现传感器设备的操作方法 188
15.3.1 fetch_data:获取传感器
数据 188
15.3.2 control:控制传感器
设备 189
15.4 设备注册 191
15.5 驱动配置 193
15.6 驱动验证 194
15.7 本章小结 195
第16章 MTD NOR设备驱动
开发 196
16.1 MTD NOR层级结构 196
16.2 创建MTD NOR设备 197
16.3 实现MTD NOR设备的操作
方法 198
16.3.1 read_id:读取设备ID 198
16.3.2 read:从设备中读数据 199
16.3.3 write:向设备中写数据 200
16.3.4 erase_block:擦除数据 201
16.4 注册MTD NOR设备 202
16.5 驱动配置 204
16.6 驱动验证 204
16.7 本章小结 205
第17章 MTD NAND设备驱动
开发 206
17.1 MTD NAND层级结构 206
17.2 创建MTD NAND设备 207
17.3 实现MTD NAND设备的操作
方法 207
17.3.1 read_id:读取设备ID 208
17.3.2 read_page:从设备中读
数据 208
17.3.3 write_page:向设备中写
数据 210
17.3.4 erase_block:擦除设备 213
17.4 注册MTD NAND设备 214
17.5 驱动配置 215
17.6 驱动验证 216
17.7 本章小结 217
第18章 脉冲编码器设备驱动
开发218
18.1 脉冲编码器层级结构 219
18.2 创建脉冲编码器设备 220
18.3 实现脉冲编码器设备的操作
方法 220
18.3.1 init:初始化脉冲
编码器 221
18.3.2 control:控制脉冲
编码器 222
18.3.3 get_count:获取编码器
计数 223
18.3.4 clear_count:清空编码器
计数 224
18.4 注册脉冲编码器设备 224
18.5 脉冲编码器中断处理 225
18.6 驱动配置 226
18.7 驱动验证 227
18.8 本章小结 229
第19章 加解密设备驱动开发 230
19.1 加解密设备层级结构 230
19.2 创建加解密设备 231
19.3 实现加解密设备的操作方法 231
19.3.1 create:创建设备 232
19.3.2 destroy:销毁设备 236
19.3.3 copy:复制上下文 237
19.3.4 reset:复位设备 239
19.4 注册加解密设备 240
19.5 驱动配置 241
19.6 驱动验证 241
19.7 本章小结 242
第20章 PM设备驱动开发243
20.1 PM层级结构 243
20.2 实现PM设备的操作方法 244
20.2.1 sleep:切换休眠模式 244
20.2.2 run:切换运行模式 246
20.2.3 timer_start:定时器
启动 247
20.2.4 timer_get_tick:获取
时钟值 248
20.2.5 timer_stop:定时器停止 248
20.3 注册PM设备 249
20.4 驱动配置 250
20.5 驱动验证 250
20.6 本章小结 251
第三篇 高级篇
第21章 WLAN设备驱动
开发 254
21.1 WLAN层级结构 254
21.2 创建WLAN设备 256
21.3 实现WLAN设备的操作方法 256
21.3.1 wlan_init:初始化设备 257
21.3.2 wlan_scan:扫描 258
21.3.3 wlan_get_rssi:获取信号
强度 258
21.3.4 wlan_cfg_promisc:配置
混杂模式 259
21.3.5 wlan_set_channel:设置
信道 259
21.3.6 wlan_set_country:设置
国家码 260
21.3.7 wlan_send:发送数据 261
21.4 注册WLAN设备 261
21.5 驱动配置 262
21.6 驱动验证 263
21.7 本章小结 264
第22章 ETH设备驱动开发 265
22.1 ETH层级结构 265
22.2 创建ETH设备 266
22.3 实现ETH设备的操作方法 267
22.3.1 eth_rx:数据接收 268
22.3.2 eth_tx:数据发送 270
22.4 注册ETH设备 271
22.5 驱动配置 272
22.6 驱动验证 272
22.7 本章小结 273
第23章 AUDIO MIC设备驱动
开发 274
23.1 AUDIO层级结构 274
23.2 创建MIC设备 275
23.3 实现MIC设备的操作方法 276
23.3.1 getcaps:获取设备功能 276
23.3.2 configure:配置设备 279
23.3.3 init:初始化设备 281
23.3.4 start:启动设备 281
23.3.5 stop:停止设备 282
23.4 音频数据流处理 282
23.5 注册MIC设备 284
23.6 驱动配置 285
23.7 驱动验证 286
23.8 本章小结 286
第24章 AUDIO SOUND设备驱动开发 287
24.1 创建SOUND设备 287
24.2 实现SOUND设备的操作
方法 287
24.2.1 getcaps:获取设备功能 288
24.2.2 configure:配置设备 291
24.2.3 init:初始化设备 293
24.2.4 start:启动设备 293
24.2.5 stop:停止设备 294
24.2.6 buffer_info:获取缓冲区
信息 294
24.3 音频数据流处理 295
24.4 注册SOUND设备 297
24.5 驱动配置 298
24.6 驱动验证 299
24.7 本章小结 300
第25章 USBD设备驱动开发 301
25.1 USBD层级结构 301
25.2 创建USBD设备 302
25.3 实现USBD设备的操作方法 303
25.3.1 set_address:设置USBD
设备地址 304
25.3.2 set_config:配置USBD
设备 305
25.3.3 ep_set_stall:设置端点
STALL状态 305
25.3.4 ep_clear_stall:清除端点STALL状态 305
25.3.5 ep_enable:使能端点 306
25.3.6 ep_disable:禁用端点 306
25.3.7 ep_read_prepare:端点接收数据准备信号 307
25.3.8 ep_read:端点接收数据 307
25.3.9 ep_write:端点发送
数据 308
25.3.10 ep0_send_status:通知主机
数据传输结束 308
25.3.11 suspend:挂起USBD
设备 308
25.3.12 wakeup:唤醒USBD
设备 309
25.4 注册USBD设备 309
25.5 USBD中断处理 311
25.5.1 rt_usbd_ep0_setup_handler:端点0 SETUP回调函数 312
25.5.2 rt_usbd_ep0_in_handler:IN令牌包回调函数 312
25.5.3 rt_usbd_ep0_out_handler:OUT令牌包回调函数 313
25.5.4 其他回调函数 313
25.6 驱动配置 314
25.7 驱动验证 315
25.8 本章小结 315
第26章 USBH设备驱动开发 316
26.1 USBH层级结构 316
26.2 创建USBH设备 317
26.3 实现USBH设备的操作方法 318
26.3.1 reset_port:重置端口 318
26.3.2 pipe_xfer:传输数据 319
26.3.3 open_pipe:开启传输
管道 322
26.3.4 close_pipe:关闭传输
管道 323
26.4 注册USBH设备 323
26.5 USBH中断处理 324
26.5.1 rt_usbh_root_hub_connect_handler:连接成功回调
函数 324
26.5.2 rt_usbh_root_hub_disconnect_handler:断开连接回调
函数 325
26.5.3 其他中断处理 326
26.6 驱动配置 326
26.7 驱动验证 327
26.8 本章小结 327
第27章 CAN设备驱动开发 328
27.1 CAN层级结构 328
27.2 创建CAN设备 329
27.3 实现CAN设备的操作方法 330
27.3.1 configure:配置CAN
设备 330
27.3.2 control:控制CAN
设备 331
27.3.3 sendmsg:发送一帧
数据 334
27.3.4 recvmsg:接收一帧
数据 336
27.4 CAN中断处理 337
27.5 注册CAN设备 339
27.6 驱动配置 340
27.7 驱动验证 341
27.8 本章小结 344
名称 | 作者 | 时间 |
《RT-Thread设备驱动开发指南》之内核启动流程的理解 | 南若 | 2023-10-20 |
《RT-Thread设备驱动开发指南》之ADC | 南若 | 2023-10-20 |
读《RT-Thread设备驱动开发指南》--- 第五篇 | xiaolinen | 2023-09-28 |
《RT-Thread设备驱动开发指南》读书笔记3一DS18B20传感器应用 | chrisrh | 2023-09-25 |
《RT-Thread设备驱动开发指南》读书笔记五 以太网驱动 | damiaa | 2023-10-06 |
《RT-Thread设备驱动开发指南》读书笔记一WLAN设备框架 | wakojosin | 2023-09-20 |
《RT-Thread设备驱动开发指南》读书笔记四 CAN驱动 | damiaa | 2023-09-23 |
读《RT-Thread设备驱动开发指南》--- 第四篇 | xiaolinen | 2023-09-27 |
《RT-Thread设备驱动开发指南》读书笔记一LCD设备驱动 | wakojosin | 2023-09-07 |
《RT-Thread设备驱动开发指南》读书笔记2一device框架理解 | chrisrh | 2023-09-04 |
读《RT-Thread设备驱动开发指南》---第三篇 | xiaolinen | 2023-09-17 |
《RT-Thread设备驱动开发指南》读书笔记一SDIO设备框架与块设备 | wakojosin | 2023-08-28 |
《RT-Thread设备驱动开发指南》读书笔记三 I2C驱动 | damiaa | 2023-09-16 |
《RT-Thread设备驱动开发指南》读书笔记二 PIN驱动 | damiaa | 2023-08-28 |
读《RT-Thread设备驱动开发指南》---第二篇 | xiaolinen | 2023-08-30 |
《RT-Thread设备驱动开发指南》读书笔记1一开始阅读 | chrisrh | 2023-08-25 |
《RT-Thread设备驱动开发指南》读书笔记一工程搭建与设备驱动框 ... | wakojosin | 2023-08-21 |
《RT-Thread设备驱动开发指南》读书笔记一 串口驱动 | damiaa | 2023-08-19 |
读《RT-Thread设备驱动开发指南》---第一篇 | xiaolinen | 2023-08-20 |
赞助厂商
RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。经过11年的累积发展,RT-Thread已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过两千万台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。
如需获取更多学习资料,可以关注上方二维码,进入文档教程版块。
最新测评
热门测评心得
联系我们
微信号:helloeeworld
关注我们
电子工程世界 电子工程世界福利社