近年來國內芯片產業和物聯網產業的快速崛起,行業發展迫切需要更多人才,尤其需要掌握嵌入式操作系統等底層技術的人才。隨著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瀏覽量
10888 -
開發者
+關注
關注
1文章
575瀏覽量
17009 -
RT-Thread
+關注
關注
31文章
1289瀏覽量
40124
發布評論請先 登錄
相關推薦
評論