【好书推荐】RT-Thread设备驱动开发指南

近年来国内芯片产业和物联网产业的快速崛起,行业发展迫切需要更多人才,尤其需要掌握嵌入式操作系统等底层技术的人才。随着RT-Thread被更广泛地应用于行业中,开发者对嵌入式驱动开发的需求越来越强烈,他们迫切地希望有一本可以指导他们在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.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



了解更多 ↓

  • 本文来源:IT阅读排行榜,图片来源:原创

  • 责任编辑:王莹,部门领导:卢志坚

  • 发布人:尹文敏


——————End——————


👇 点击阅读原文进入官网

RTThread物联网操作系统 帮助您了解RT-Thread相关的资讯.
评论
  • 热电偶是zui常用的温度传感器类型。它们用于工业、汽车和消费应用。热电偶是自供电的,可以在很宽的温度范围内工作,并且具有快速的响应时间。热电偶是通过将两条不同的金属线连接在一起制成的。这会导致塞贝克效应。塞贝克效应是两种不同导体的温差在两种物质之间产生电压差的现象。正是这种电压差可以测量并用于计算温度。有几种类型的热电偶由各种不同的材料制成,允许不同的温度范围和不同的灵敏度。不同的类型由zhi定的字母区分。zui常用的是K型。热电偶的一些缺点包括测量温度可能具有挑战性,因为它们的输出电压小,需要
    锦正茂科技 2024-12-05 14:22 39浏览
  • 2024年12月3日至5日,中国电信2024数字科技生态大会在广州举行,通过主题峰会、多场分论坛、重要签约及合作发布等环节,与合作伙伴共绘数字科技发展新愿景。紫光展锐作为中国电信的战略合作伙伴受邀参会,全面呈现了技术、产品创新进展,以及双方在多领域的合作成果。紫光展锐董事长马道杰受邀出席大会主论坛,并在大会期间发表视频致辞。  深化战略合作,共建数字未来马道杰董事长在视频致辞中指出,紫光展锐作为世界一流芯片设计企业,依托在芯片、通信和软硬件集成领域的深厚积累,与中国电信密切合
    紫光展锐 2024-12-05 14:04 51浏览
  • 本文介绍RK3566/RK3568开发板Android11系统,编译ROOT权限固件的方法。触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,Laval鸿蒙社区推荐开发板,已适配全新OpenHarmony5.0 Release系统,SDK源码全开放!关闭Selinux修改以下路径文件:adevice/rockchip/common/BoardConfig.mk修改代码如下:BOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG
    Industio_触觉智能 2024-12-05 10:27 30浏览
  • ~同等额定功率产品尺寸小一号,并保证长期稳定供应~全球知名半导体制造商ROHM(总部位于日本京都市)在其通用贴片电阻器“MCR系列”产品阵容中又新增了助力应用产品实现小型化和更高性能的“MCRx系列”。新产品包括大功率型“MCRS系列”和低阻值大功率型“MCRL系列”两个系列。在电子设备日益多功能化和电动化的当今世界,电子元器件的小型化和性能提升已成为重要课题。尤其是在汽车市场,随着电动汽车(xEV)的普及,电子元器件的使用量迅速增加。另外,在工业设备市场,随着设备的功能越来越多,效率越来越高,
    电子资讯报 2024-12-05 17:03 68浏览
  • 应用环境与客户需求蓝牙设备越来越普及,但在高密度使用环境下,你知道里面潜藏的风险吗?用户在使用蓝牙配件(如键盘、鼠标和耳机)时,经常面临干扰问题,这主要是因为蓝牙设备使用的2.4GHz频段与许多其他无线设备(如Wi-Fi、Thread等)重迭,导致频段拥挤,进而增加干扰的可能性。【常见干扰情境】客服中心:客服中心通常有大量的工作站,每个工作站可能都配备有蓝牙键盘、鼠标和耳机。由于这些设备都使用4GHz频段,客服中心内部的频段拥挤会增加讯号干扰的可能性。再加上中心内部可能有多个无线网络设备和其他电
    百佳泰测试实验室 2024-12-05 16:17 67浏览
  • 在阅读了《高速PCB设计经验规则应用实践》后,对于PCB设计的布局经验有了更为深入和系统的理解。该书不仅详细阐述了高速PCB设计中的经验法则,还通过实际案例和理论分析,让读者能够更好地掌握这些法则并将其应用于实际工作中。布局是走线的基础,预先的规划再到叠层的选择,电源和地的分配,信号网络的走线等等,对布局方面也是非常的关注。布局规划的重要性: 在PCB设计中,布局规划是至关重要的一步。它直接影响到后续布线的难易程度、信号完整性以及电磁兼容性等方面。因此,在进行元件布局之前,我们必须对PCB的平
    戈壁滩上绽放 2024-12-05 19:43 68浏览
  • DT640系列硅二极管温度传感器选用了专门适用于低温温度测量的硅二极管。相比普通硅二极管,具有重复性好、离散性小、精度更高温度范围更宽、低温下电压相对高而易于测量等特点。所有此款温度计都较好地遵循一个电压-温度(V-T)曲线,因而具有更好的可互换性。很多应用中都不需要单独的标定。DT640-BC型裸片温度计,相比市场上的其它温度计,具有尺寸更小、热容更小、响应时间更短的特点。在尺寸、热容以及响应时间有特殊要求的应用中具有du特的优势。   以下是二极管温度传感器的测
    锦正茂科技 2024-12-05 13:57 30浏览
  • ①辐射发射测试(RE):评估电子、电气产品或系统在工作状态下产生的电磁辐射干扰程度,确保其不会干扰其他电子设备,同时可以确保产品的电磁辐射水平在安全范围内,从而保护用户免受电磁辐射的危害。消费类常见测试标准:EN55032 (RE&CE)、 CLASS A和CLASS B ②传导发射测试(CE):评估电子、电气产品或系统在工作状态下传导电磁骚扰的水平,是确保产品符合电磁兼容性(EMC)要求的重要步骤,保护其他设备免受干扰。常见测试标准:国标18655(RE&CE) 分为5个等级,常规的是过3等级
    时源芯微 2024-12-05 15:16 51浏览
  • 现在最热门的AI PC,泛指配备了人工智能AI的个人电脑,虽然目前的AI功能大多仅运用于增加个人电脑的运算力及用户使用体验。然而,各家AI PC厂商/品牌商却不约而同针对Webcam的AI功能大作文章,毕竟这是目前可以直接让消费者感受到、最显著、也是最有感觉的应用情境!目前各家推出Webcam 的AI功能包括有:● 背景虚化● 面部识别和追踪。● 自动调节● 虚拟化和滤镜● 安全和隐私面临的困境:惊吓大于惊喜的AI优化调校由于每款AI PC的相机都有自己的设定偏好及市场定位,一旦经过AI的优化调
    百佳泰测试实验室 2024-12-05 15:30 48浏览
  • CS5466AUUSB-C  (2lanes)to HDMI2.1 8K@30HZ(4K@144) +PD3.1  CS5563DP  (4lanes) to HDMI2.1 10k@60Hz CS5565USB-C  (4lanes) to HDMI2.1 10k@60Hz CS5569USB-C (4lanes) to HDMI2.1 10k@60Hz +PD3.1CS5228ANDP++ to HDMI(4K
    QQ1540182856 2024-12-05 15:56 88浏览
  • 延续前一篇「抢搭智慧家庭生态圈热潮(一) 充满陷阱的产品介绍」系列文章,购买智能家电时需留意是否标有Works With Alexa (WWA)标章,然而,即使有了WWA标章后,产品难道就不会发生问题了吗?本篇由百佳泰将重点探讨在Alexa智能家居设备应用的实验中所遭遇到的问题。智能家庭隐忧浮现:智能家电APP使用状态不同步在先前的文章中,我们有提过建构Alexa智能家庭的三个主要元素:Alexa Built-in Devices(ABI)、Alexa Connected Device,以及Al
    百佳泰测试实验室 2024-12-05 15:26 43浏览
  • RK3506单板机(卡片电脑)是一款高性能三核Cortex-A7处理器,内部集成Cortex-M0核心,RK3506单板机具有接口丰富、实时性高、显示开发简单、低功耗及多系统支持等特点,非常适合于工业控制、工业通信、人机交互等应用场景。 多核异构3xCortex-A7+Cortex-M0 外设接口丰富,板载网络、串口、CAN总线 支持Buildroot、Yocto系统,支持AMP混合部署 支持2D硬件加速,适用于轻量级HMI目前RK3506主要分为3种型号
    万象奥科 2024-12-05 16:59 67浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦