0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

RT-Thread官方账号 2024-08-01 08:35 次阅读

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

为了解决开发者的燃眉之急,《RT-Thread设备驱动开发指南》来了!希望帮助RT-Thread的开发者掌握驱动开发的知识点,让开发者能够更简单、更方便地开发驱动,加速产品上市,让RT-Thread赋能更多行业,真正做到“积识成睿,慧泽百川”。

fd2b2f38-4f9d-11ef-817b-92fbcf53809c.png

读者对象

  • 熟悉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

21.3.3wlan_get_rssi:获取信号

强度 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

了解更多 ↓

fd65940c-4f9d-11ef-817b-92fbcf53809c.jpg

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

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

发布人:尹文敏

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 设备驱动
    +关注

    关注

    0

    文章

    65

    浏览量

    10853
  • 开发者
    +关注

    关注

    1

    文章

    526

    浏览量

    16898
  • RT-Thread
    +关注

    关注

    31

    文章

    1236

    浏览量

    39383
收藏 人收藏

    评论

    相关推荐

    新书发布——《RT-Thread嵌入式实时操作系统内核、驱动和应用开发技术》

    成,旨在深入浅出地介绍RT-Thread的内核设计、设备驱动开发及应用开发技术。书中将理论与实践相结合,帮助读者全面理解和掌握
    的头像 发表于 09-03 08:06 114次阅读
    新书发布——《<b class='flag-5'>RT-Thread</b>嵌入式实时操作系统内核、<b class='flag-5'>驱动</b>和应用<b class='flag-5'>开发</b>技术》

    2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!

    用户送出:5块vision board开发板、5块ART-PI开发板和5本《RT-Thread 设备驱动
    发表于 08-20 14:15

    【QEMU系列】不用开发板运行RT-Thread指南-ARM架构

    简介在物联网和嵌入式系统的开发中,RT-Thread操作系统凭借其小巧、高效和灵活的特点,受到了越来越多开发者的青睐。然而,对于很多刚刚接触RT-Thread
    的头像 发表于 08-09 08:35 414次阅读
    【QEMU系列】不用<b class='flag-5'>开发</b>板运行<b class='flag-5'>RT-Thread</b><b class='flag-5'>指南</b>-ARM架构

    2024 RT-Thread全球巡回 线下培训火热来袭!

    亲爱的RT-Thread社区成员们:我们非常高兴地宣布,2024年RT-Thread全球开发者线下培训即将拉开帷幕!24年全球巡回培训将覆盖超10座城市及国家,为开发者提供一个深入学习
    的头像 发表于 08-07 08:35 287次阅读
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 线下培训火热来袭!

    RT-Thread驱动开发指南进阶篇-动手驱动先楫未适配的外设LCD

    经过上一篇的《《RT-Thread设备驱动开发指南》基础篇--以先楫bsp的hwtimer设备为例》阐述,可以大致了解到
    的头像 发表于 02-25 11:04 1801次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>驱动</b><b class='flag-5'>开发指南</b>进阶篇-动手<b class='flag-5'>驱动</b>先楫未适配的外设LCD

    RT-Thread设备驱动开发指南》基础篇--以先楫bsp的hwtimer设备为例

    一、概述(一)RT-Thread设备驱动RT-Thread设备驱动
    的头像 发表于 02-24 08:16 930次阅读
    《<b class='flag-5'>RT-Thread</b><b class='flag-5'>设备</b><b class='flag-5'>驱动</b><b class='flag-5'>开发指南</b>》基础篇--以先楫bsp的hwtimer<b class='flag-5'>设备</b>为例

    RT-Thread设备驱动开发指南基础篇—以先楫bsp的hwtimer设备为例

    RT-Thread设备驱动开发指南》书籍是RT-thread官方出品撰写,系统讲解RT-thread
    的头像 发表于 02-20 16:01 1389次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>设备</b><b class='flag-5'>驱动</b><b class='flag-5'>开发指南</b>基础篇—以先楫bsp的hwtimer<b class='flag-5'>设备</b>为例

    RA6M3 RT-Thread* LVGL HMI Board开发实践指南-GPIO实践

    RT-Thread即将发布一系列RA6M3外设驱动的实践指南,我们将使用瑞萨RA6M3 HMI-Board 开发板,带领大家上手RT-Thread
    的头像 发表于 11-30 19:05 910次阅读
    RA6M3 <b class='flag-5'>RT-Thread</b>* LVGL HMI Board<b class='flag-5'>开发</b>实践<b class='flag-5'>指南</b>-GPIO实践

    rt-studio潘多拉开发板最新rt-thread不能运行解决办法

    rt-studio 上 选择基于开发板的项目,选择潘多拉,rt-thread选择lasted ,如下图
    的头像 发表于 10-16 14:50 1059次阅读
    <b class='flag-5'>rt</b>-studio潘多拉<b class='flag-5'>开发</b>板最新<b class='flag-5'>rt-thread</b>不能运行解决办法

    基于rt-thread的socket通信设计

    最近再研究 rt-thread 的通信 ,想设计出 eps8266(多个) rt-thread(作为中控) 服务器的通信框架,使用的开发板是 潘多拉
    的头像 发表于 10-13 15:02 1053次阅读
    基于<b class='flag-5'>rt-thread</b>的socket通信设计

    试用RT-Thread Studio(VSCode)

    想尝试RT-Thread studio (VSCode),先下载安装VSCode,再搜索RT-Thread
    的头像 发表于 10-12 10:58 860次阅读
    试用<b class='flag-5'>RT-Thread</b> Studio(VSCode)

    RT-Thread v5.0.2 发布

    RT-Thread 代码仓库地址: ●  https://github.com/RT-Thread/rt-thread RT-Thread 5.0.2 版本发布日志详情: ●  htt
    的头像 发表于 10-10 18:45 1182次阅读
    <b class='flag-5'>RT-Thread</b> v5.0.2 发布

    RT-Thread Studio上配置rtthread CANFD驱动来控制M3508电机

    本文旨在RT-Thread Studio上配置rtthread CANFD驱动来控制M3508电机,不涉及任何原理 开发环境:RT-Thread Studio v2.2.6
    发表于 10-08 11:44 1047次阅读
    在<b class='flag-5'>RT-Thread</b> Studio上配置rtthread CANFD<b class='flag-5'>驱动</b>来控制M3508电机

    基于RT-Thread的RoboMaster电控框架(二)

    由于 RT-Thread 稳定高效的内核,丰富的文档教程,积极活跃的社区氛围,以及设备驱动框架、Kconfig、Scons、日志系统、海量的软件包
    的头像 发表于 09-20 15:16 629次阅读

    基于 RT-Thread 的 RoboMaster 电控框架(一)

    由于 RT-Thread 稳定高效的内核,丰富的文档教程,积极活跃的社区氛围,以及设备驱动框架、Kconfig、Scons、日志系统、海量的软件包……很难不选择 RT-Thread
    的头像 发表于 09-19 19:55 633次阅读