近年来国内芯片产业和物联网产业的快速崛起,行业发展迫切需要更多人才,尤其需要掌握嵌入式操作系统等底层技术的人才。随着RT-Thread被更广泛地应用于行业中,开发者对嵌入式驱动开发的需求越来越强烈,他们迫切地希望有一本可以指导他们在RT-Thread上开发驱动的指南。
为了解决开发者的燃眉之急,《RT-Thread设备驱动开发指南》来了!希望帮助RT-Thread的开发者掌握驱动开发的知识点,让开发者能够更简单、更方便地开发驱动,加速产品上市,让RT-Thread赋能更多行业,真正做到“积识成睿,慧泽百川”。
读者对象
如何阅读本书
本书要求读者具备RT-Thread基础知识,因此建议大家先学习《嵌入式实时操作系统:RT-Thread设计与实现》,再学习本书内容。使用过RT-Thread上的设备框架的读者的阅读体验会更佳。本书的每章都有配套示例代码,这些代码大多是仅供理解上下文参考的,不能真正运行,建议读者对照具体bsp目录下已有的驱动,并结合本书进行学习。本书内容分为三篇:基础篇、进阶篇与高级篇。基础篇(第1~11章)第1章概述RT-Thread与设备框架;第2~11章介绍一些常用的设备驱动框架,包括PIN、I2C、SPI等,适合刚接触驱动开发的读者阅读。进阶篇(第12~20章)介绍稍复杂一些的外设驱动,如SDIO、触摸、显示、传感器、加解密设备等。高级篇(第21~27章)介绍一些复杂的驱动,如网络、音频、USBD(H)、CAN等,开发此类设备驱动要求开发者比较熟悉相应的外设协议。本书更像是一本工具书,读者不需要一章一章地从头读到尾,读完前面几章内容,熟悉了驱动开发的基本流程之后,就可以根据自己的需要,选择对应的章节学习。
配套软件
本书是基于RT-Thread 4.1.0 编写的,读者在跟随本书学习驱动开发的时候,也需要选择对应的源码版本。
目录
上拉下滑查看目录 ↓
前言
第一篇基础篇
第1章RT-Thread与设备框架
简介 2
1.1RT-Thread概述 2
1.2RT-Thread I/O设备框架 5
1.2.1I/O设备模型与分类 8
1.2.2I/O设备管理接口 10
1.2.3驱动编写流程与规范 15
1.3本章小结 16
第2章UART设备驱动开发 17
2.1UART层级结构 18
2.2创建UART设备 19
2.3实现UART设备的操作方法 20
2.3.1configure:配置UART
设备 21
2.3.2control:控制UART设备 23
2.3.3putc:发送一个字符 26
2.3.4getc:接收一个字符 27
2.3.5transmit:数据发送 28
2.4注册UART设备 29
2.5UART设备中断处理 30
2.6增加DMA模式 32
2.7驱动配置 37
2.8驱动验证 38
2.9本章小结 39
第3章PIN设备驱动开发 41
3.1PIN层级结构 41
3.2实现PIN设备的操作方法 42
3.3注册PIN设备 51
3.4驱动配置 52
3.5驱动验证 52
3.6本章小结 53
第4章I2C总线设备驱动开发 54
4.1I2C层级结构 55
4.2I2C总线设备结构 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.1SPI/QSPI层级结构 69
5.2SPI总线设备驱动开发 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.6SPI总线设备驱动配置 81
5.2.7驱动验证 82
5.3QSPI 总线设备驱动开发 83
5.3.1创建QSPI总线设备 83
5.3.2实现QSPI总线设备的
操作方法 84
5.3.3注册QSPI总线设备 87
5.3.4实现挂载QSPI从设备
功能 87
5.3.5QSPI 总线设备驱动配置 89
5.3.6驱动验证 89
5.4本章小结 90
第6章HWTIMER设备驱动
开发 91
6.1HWTIMER层级结构 91
6.2创建HWTIMER设备 92
6.3实现HWTIMER设备的操作
方法 93
6.3.1init:初始化设备 93
6.3.2start:启动设备 95
6.3.3stop:停止设备 96
6.3.4count_get:获取设备
当前值 96
6.3.5control:控制设备 97
6.4注册HWTIMER设备 98
6.5HWTIMER设备中断处理 99
6.6驱动配置 100
6.7驱动验证 101
6.8本章小结 101
第7章PWM设备驱动开发 102
7.1PWM层级结构 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.1RTC层级结构 112
8.2创建RTC设备 113
8.3实现RTC设备的操作方法 113
8.3.1为设备定义操作方法 114
8.3.2init:初始化设备 115
8.3.3get_secs:获取时间 115
8.3.4set_secs:设置时间 116
8.3.5get_timeval:获取timeval
结构 117
8.4注册RTC设备 118
8.5驱动配置 119
8.6驱动验证 120
8.7本章小结 121
第9章ADC设备驱动开发 122
9.1ADC层级结构 122
9.2创建ADC设备 123
9.3实现ADC设备的操作方法 124
9.3.1enabled:控制ADC
通道 125
9.3.2convert:转换并获取ADC
采样值 125
9.4注册ADC设备 126
9.5驱动配置 127
9.6驱动验证 128
9.7本章小结 129
第10章DAC设备驱动开发 130
10.1DAC层级结构 130
10.2创建DAC设备 131
10.3实现设备的操作方法 132
10.3.1enabled:使能DAC
通道 133
10.3.2disabled:禁止DAC
通道 133
10.3.3convert:设置DAC输出值
并启动数模转换 134
10.4注册DAC设备 135
10.5驱动配置 136
10.6驱动验证 136
10.7本章小结 138
第11章WDT设备驱动开发 139
11.1WDT层级结构 139
11.2创建WDT设备 140
11.3实现WDT设备的操作方法 141
11.3.1为设备定义操作方法 141
11.3.2init:初始化看门狗
设备 141
11.3.3control:控制看门狗
设备 142
11.4注册WDT设备 143
11.5驱动配置 144
11.6驱动验证 145
11.7本章小结 146
第二篇进阶篇
第12章SDIO 设备驱动开发148
12.1SDIO层级结构 148
12.2实现SDIO设备的操作方法 149
12.2.1request:发送请求 149
12.2.2set_iocfg:配置SDIO 154
12.2.3get_card_status:获取
状态 156
12.2.4enable_sdio_irq:配置
中断 156
12.3创建并激活SDIO主机 157
12.4驱动配置 159
12.5驱动验证 159
12.6本章小结 160
第13章Touch设备驱动开发 161
13.1Touch层级结构 161
13.2GT9147触摸芯片 162
13.3创建Touch设备 162
13.4实现Touch设备的操作方法 163
13.4.1touch_readpoint:读触摸点
信息 163
13.4.2touch_control:控制
设备 166
13.5注册Touch设备 168
13.6驱动配置 169
13.7驱动验证 170
13.8本章小结 172
第14章LCD设备驱动开发 173
14.1LCD层级结构 173
14.2创建LCD设备 174
14.3实现LCD设备的操作方法 174
14.3.1init:初始化LCD设备 175
14.3.2control:控制LCD设备 175
14.4实现绘图的操作方法 177
14.4.1set_pixel:画点 178
14.4.2get_pixel:读取像素点
颜色 178
14.4.3draw_hline:画横线 179
14.4.4draw_vline:画竖线 180
14.4.5blit_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.1fetch_data:获取传感器
数据 188
15.3.2control:控制传感器
设备 189
15.4设备注册 191
15.5驱动配置 193
15.6驱动验证 194
15.7本章小结 195
第16章MTD NOR设备驱动
开发 196
16.1MTD NOR层级结构 196
16.2创建MTD NOR设备 197
16.3实现MTD NOR设备的操作
方法 198
16.3.1read_id:读取设备ID 198
16.3.2read:从设备中读数据 199
16.3.3write:向设备中写数据 200
16.3.4erase_block:擦除数据 201
16.4注册MTD NOR设备 202
16.5驱动配置 204
16.6驱动验证 204
16.7本章小结 205
第17章MTD NAND设备驱动
开发 206
17.1MTD NAND层级结构 206
17.2创建MTD NAND设备 207
17.3实现MTD NAND设备的操作
方法 207
17.3.1read_id:读取设备ID 208
17.3.2read_page:从设备中读
数据 208
17.3.3write_page:向设备中写
数据 210
17.3.4erase_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.1init:初始化脉冲
编码器 221
18.3.2control:控制脉冲
编码器 222
18.3.3get_count:获取编码器
计数 223
18.3.4clear_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.1create:创建设备 232
19.3.2destroy:销毁设备 236
19.3.3copy:复制上下文 237
19.3.4reset:复位设备 239
19.4注册加解密设备 240
19.5驱动配置 241
19.6驱动验证 241
19.7本章小结 242
第20章PM设备驱动开发243
20.1PM层级结构 243
20.2实现PM设备的操作方法 244
20.2.1sleep:切换休眠模式 244
20.2.2run:切换运行模式 246
20.2.3timer_start:定时器
启动 247
20.2.4timer_get_tick:获取
时钟值 248
20.2.5timer_stop:定时器停止 248
20.3注册PM设备 249
20.4驱动配置 250
20.5驱动验证 250
20.6本章小结 251
第三篇高级篇
第21章WLAN设备驱动
开发 254
21.1WLAN层级结构 254
21.2创建WLAN设备 256
21.3实现WLAN设备的操作方法 256
21.3.1wlan_init:初始化设备 257
21.3.2wlan_scan:扫描 258
强度 258
21.3.4wlan_cfg_promisc:配置
混杂模式 259
21.3.5wlan_set_channel:设置
信道 259
21.3.6wlan_set_country:设置
国家码 260
21.3.7wlan_send:发送数据 261
21.4注册WLAN设备 261
21.5驱动配置 262
21.6驱动验证 263
21.7本章小结 264
第22章ETH设备驱动开发 265
22.1ETH层级结构 265
22.2创建ETH设备 266
22.3实现ETH设备的操作方法 267
22.3.1eth_rx:数据接收 268
22.3.2eth_tx:数据发送 270
22.4注册ETH设备 271
22.5驱动配置 272
22.6驱动验证 272
22.7本章小结 273
第23章AUDIO MIC设备驱动
开发 274
23.1AUDIO层级结构 274
23.2创建MIC设备 275
23.3实现MIC设备的操作方法 276
23.3.1getcaps:获取设备功能 276
23.3.2configure:配置设备 279
23.3.3init:初始化设备 281
23.3.4start:启动设备 281
23.3.5stop:停止设备 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.1getcaps:获取设备功能 288
24.2.2configure:配置设备 291
24.2.3init:初始化设备 293
24.2.4start:启动设备 293
24.2.5stop:停止设备 294
24.2.6buffer_info:获取缓冲区
信息 294
24.3音频数据流处理 295
24.4注册SOUND设备 297
24.5驱动配置 298
24.6驱动验证 299
24.7本章小结 300
第25章USBD设备驱动开发 301
25.1USBD层级结构 301
25.2创建USBD设备 302
25.3实现USBD设备的操作方法 303
25.3.1set_address:设置USBD
设备地址 304
25.3.2set_config:配置USBD
设备 305
25.3.3ep_set_stall:设置端点
STALL状态 305
25.3.4ep_clear_stall:清除端点STALL状态 305
25.3.5ep_enable:使能端点 306
25.3.6ep_disable:禁用端点 306
25.3.7ep_read_prepare:端点接收数据准备信号 307
25.3.8ep_read:端点接收数据 307
25.3.9ep_write:端点发送
数据 308
25.3.10ep0_send_status:通知主机
数据传输结束 308
25.3.11suspend:挂起USBD
设备 308
25.3.12wakeup:唤醒USBD
设备 309
25.4注册USBD设备 309
25.5USBD中断处理 311
25.5.1rt_usbd_ep0_setup_handler:端点0 SETUP回调函数 312
25.5.2rt_usbd_ep0_in_handler:IN令牌包回调函数 312
25.5.3rt_usbd_ep0_out_handler:OUT令牌包回调函数 313
25.5.4其他回调函数 313
25.6驱动配置 314
25.7驱动验证 315
25.8本章小结 315
第26章USBH设备驱动开发 316
26.1USBH层级结构 316
26.2创建USBH设备 317
26.3实现USBH设备的操作方法 318
26.3.1reset_port:重置端口 318
26.3.2pipe_xfer:传输数据 319
26.3.3open_pipe:开启传输
管道 322
26.3.4close_pipe:关闭传输
管道 323
26.4注册USBH设备 323
26.5USBH中断处理 324
26.5.1rt_usbh_root_hub_connect_handler:连接成功回调
函数 324
26.5.2rt_usbh_root_hub_disconnect_handler:断开连接回调
函数 325
26.5.3其他中断处理 326
26.6驱动配置 326
26.7驱动验证 327
26.8本章小结 327
第27章CAN设备驱动开发 328
27.1CAN层级结构 328
27.2创建CAN设备 329
27.3实现CAN设备的操作方法 330
27.3.1configure:配置CAN
设备 330
27.3.2control:控制CAN
设备 331
27.3.3sendmsg:发送一帧
数据 334
27.3.4recvmsg:接收一帧
数据 336
27.4CAN中断处理 337
27.5注册CAN设备 339
27.6驱动配置 340
27.7驱动验证 341
27.8本章小结 344
了解更多 ↓
本文来源:IT阅读排行榜,图片来源:原创
责任编辑:王莹,部门领导:卢志坚
发布人:尹文敏
-
设备驱动
+关注
关注
0文章
68浏览量
10883 -
开发者
+关注
关注
1文章
563浏览量
17005 -
RT-Thread
+关注
关注
31文章
1285浏览量
40075
发布评论请先 登录
相关推荐
评论