RT-Thread設備驅(qū)動開發(fā)指南
定 價:99 元
叢書名:電子與嵌入式系統(tǒng)設計叢書
- 作者:楊潔 郭占鑫 劉康 熊譜翔 著
- 出版時間:2023/1/1
- ISBN:9787111717454
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.567-62
- 頁碼:344
- 紙張:
- 版次:
- 開本:16
本書由自研開源嵌入式實時操作系統(tǒng)RT-Thread核心開發(fā)者撰寫,專業(yè)性毋庸置疑,系統(tǒng)講解RT-Thread設備驅(qū)動開發(fā)方法,剖析26種設備驅(qū)動開發(fā)案例,助力開發(fā)者快速掌握RT-Thread設備驅(qū)動開發(fā)技能。
本書的內(nèi)容共27章,分為三篇。
基礎篇(第1~11章),先對RT-Thread以及設備框架進行總體介紹,再分別介紹RT-Thread中常用的設備,包括串口、I2C、SPI等,適合剛接觸驅(qū)動開發(fā)的人學習。
進階篇(第12~20章),介紹稍復雜一些的外設驅(qū)動,如SDIO、觸摸、顯示、傳感器、加解密設備等。
高級篇(第21~27章),介紹一些復雜的驅(qū)動,如網(wǎng)絡、音頻、USB、CAN等,開發(fā)此類設備驅(qū)動要求開發(fā)者本身對相應的外設協(xié)議比較熟悉。
各章均配有配套案例,方便讀者動手實踐和參考。
前言
第一篇 基礎篇
第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 驅(qū)動編寫流程與規(guī)范 15
1.3 本章小結 16
第2章 UART設備驅(qū)動開發(fā) 17
2.1 UART層級結構 18
2.2 創(chuàng)建UART設備 19
2.3 實現(xiàn)UART設備的操作方法 20
2.3.1 configure:配置UART
設備 21
2.3.2 control:控制UART設備 23
2.3.3 putc:發(fā)送一個字符 26
2.3.4 getc:接收一個字符 27
2.3.5 transmit:數(shù)據(jù)發(fā)送 28
2.4 注冊UART設備 29
2.5 UART設備中斷處理 30
2.6 增加DMA模式 32
2.7 驅(qū)動配置 37
2.8 驅(qū)動驗證 38
2.9 本章小結 39
第3章 PIN設備驅(qū)動開發(fā) 41
3.1 PIN層級結構 41
3.2 實現(xiàn)PIN設備的操作方法 42
3.3 注冊PIN設備 51
3.4 驅(qū)動配置 52
3.5 驅(qū)動驗證 52
3.6 本章小結 53
第4章 I2C總線設備驅(qū)動開發(fā) 54
4.1 I2C層級結構 55
4.2 I2C總線設備結構 55
4.3 硬件I2C總線設備驅(qū)動開發(fā) 56
4.3.1 實現(xiàn)設備的操作方法 57
4.3.2 注冊設備 59
4.3.3 驅(qū)動配置 60
4.3.4 驅(qū)動驗證 61
4.4 軟件I2C總線設備驅(qū)動開發(fā) 61
4.4.1 實現(xiàn)設備的操作方法 62
4.4.2 注冊設備 66
4.5 本章小結 67
第5章 SPI/QSPI總線設備驅(qū)動
開發(fā) 68
5.1 SPI/QSPI層級結構 69
5.2 SPI總線設備驅(qū)動開發(fā) 70
5.2.1 創(chuàng)建SPI總線設備 70
5.2.2 實現(xiàn)SPI總線設備的操作
方法 72
5.2.3 注冊SPI總線設備 76
5.2.4 增加DMA功能 77
5.2.5 實現(xiàn)掛載SPI從設備功能 80
5.2.6 SPI總線設備驅(qū)動配置 81
5.2.7 驅(qū)動驗證 82
5.3 QSPI 總線設備驅(qū)動開發(fā) 83
5.3.1 創(chuàng)建QSPI總線設備 83
5.3.2 實現(xiàn)QSPI總線設備的
操作方法 84
5.3.3 注冊QSPI總線設備 87
5.3.4 實現(xiàn)掛載QSPI從設備
功能 87
5.3.5 QSPI 總線設備驅(qū)動配置 89
5.3.6 驅(qū)動驗證 89
5.4 本章小結 90
第6章 HWTIMER設備驅(qū)動
開發(fā) 91
6.1 HWTIMER層級結構 91
6.2 創(chuàng)建HWTIMER設備 92
6.3 實現(xiàn)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 驅(qū)動配置 100
6.7 驅(qū)動驗證 101
6.8 本章小結 101
第7章 PWM設備驅(qū)動開發(fā) 102
7.1 PWM層級結構 103
7.2 創(chuàng)建PWM設備 104
7.3 實現(xiàn)PWM設備的操作方法 105
7.4 注冊PWM設備 108
7.5 驅(qū)動配置 109
7.6 驗證與使用 110
7.7 本章小結 111
第8章 RTC設備驅(qū)動開發(fā) 112
8.1 RTC層級結構 112
8.2 創(chuàng)建RTC設備 113
8.3 實現(xiàn)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 驅(qū)動配置 119
8.6 驅(qū)動驗證 120
8.7 本章小結 121
第9章 ADC設備驅(qū)動開發(fā) 122
9.1 ADC層級結構 122
9.2 創(chuàng)建ADC設備 123
9.3 實現(xiàn)ADC設備的操作方法 124
9.3.1 enabled:控制ADC
通道 125
9.3.2 convert:轉(zhuǎn)換并獲取ADC
采樣值 125
9.4 注冊ADC設備 126
9.5 驅(qū)動配置 127
9.6 驅(qū)動驗證 128
9.7 本章小結 129
第10章 DAC設備驅(qū)動開發(fā) 130
10.1 DAC層級結構 130
10.2 創(chuàng)建DAC設備 131
10.3 實現(xiàn)設備的操作方法 132
10.3.1 enabled:使能DAC
通道 133
10.3.2 disabled:禁止DAC
通道 133
10.3.3 convert:設置DAC輸出值
并啟動數(shù)模轉(zhuǎn)換 134
10.4 注冊DAC設備 135
10.5 驅(qū)動配置 136
10.6 驅(qū)動驗證 136
10.7 本章小結 138
第11章 WDT設備驅(qū)動開發(fā) 139
11.1 WDT層級結構 139
11.2 創(chuàng)建WDT設備 140
11.3 實現(xiàn)WDT設備的操作方法 141
11.3.1 為設備定義操作方法 141
11.3.2 init:初始化看門狗
設備 141
11.3.3 control:控制看門狗
設備 142
11.4 注冊WDT設備 143
11.5 驅(qū)動配置 144
11.6 驅(qū)動驗證 145
11.7 本章小結 146
第二篇 進階篇
第12章 SDIO 設備驅(qū)動開發(fā)148
12.1 SDIO層級結構 148
12.2 實現(xiàn)SDIO設備的操作方法 149
12.2.1 request:發(fā)送請求 149
12.2.2 set_iocfg:配置SDIO 154
12.2.3 get_card_status:獲取
狀態(tài) 156
12.2.4 enable_sdio_irq:配置
中斷 156
12.3 創(chuàng)建并激活SDIO主機 157
12.4 驅(qū)動配置 159
12.5 驅(qū)動驗證 159
12.6 本章小結 160
第13章 Touch設備驅(qū)動開發(fā) 161
13.1 Touch層級結構 161
13.2 GT9147觸摸芯片 162
13.3 創(chuàng)建Touch設備 162
13.4 實現(xiàn)Touch設備的操作方法 163
13.4.1 touch_readpoint:讀觸摸點
信息 163
13.4.2 touch_control:控制
設備 166
13.5 注冊Touch設備 168
13.6 驅(qū)動配置 169
13.7 驅(qū)動驗證 170
13.8 本章小結 172
第14章 LCD設備驅(qū)動開發(fā) 173
14.1 LCD層級結構 173
14.2 創(chuàng)建LCD設備 174
14.3 實現(xiàn)LCD設備的操作方法 174
14.3.1 init:初始化LCD設備 175
14.3.2 control:控制LCD設備 175
14.4 實現(xiàn)繪圖的操作方法 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 驅(qū)動配置 183
14.7 驅(qū)動驗證 184
14.8 本章小結 185
第15章 傳感器設備驅(qū)動開發(fā) 186
15.1 傳感器層級結構 186
15.2 創(chuàng)建傳感器設備 187
15.3 實現(xiàn)傳感器設備的操作方法 188
15.3.1 fetch_data:獲取傳感器
數(shù)據(jù) 188
15.3.2 control:控制傳感器
設備 189
15.4 設備注冊 191
15.5 驅(qū)動配置 193
15.6 驅(qū)動驗證 194
15.7 本章小結 195
第16章 MTD NOR設備驅(qū)動
開發(fā) 196
16.1 MTD NOR層級結構 196
16.2 創(chuàng)建MTD NOR設備 197
16.3 實現(xiàn)MTD NOR設備的操作
方法 198
16.3.1 read_id:讀取設備ID 198
16.3.2 read:從設備中讀數(shù)據(jù) 199
16.3.3 write:向設備中寫數(shù)據(jù) 200
16.3.4 erase_block:擦除數(shù)據(jù) 201
16.4 注冊MTD NOR設備 202
16.5 驅(qū)動配置 204
16.6 驅(qū)動驗證 204
16.7 本章小結 205
第17章 MTD NAND設備驅(qū)動
開發(fā) 206
17.1 MTD NAND層級結構 206
17.2 創(chuàng)建MTD NAND設備 207
17.3 實現(xiàn)MTD NAND設備的操作
方法 207
17.3.1 read_id:讀取設備ID 208
17.3.2 read_page:從設備中讀
數(shù)據(jù) 208
17.3.3 write_page:向設備中寫
數(shù)據(jù) 210
17.3.4 erase_block:擦除設備 213
17.4 注冊MTD NAND設備 214
17.5 驅(qū)動配置 215
17.6 驅(qū)動驗證 216
17.7 本章小結 217
第18章 脈沖編碼器設備驅(qū)動
開發(fā)218
18.1 脈沖編碼器層級結構 219
18.2 創(chuàng)建脈沖編碼器設備 220
18.3 實現(xiàn)脈沖編碼器設備的操作
方法 220
18.3.1 init:初始化脈沖
編碼器 221
18.3.2 control:控制脈沖
編碼器 222
18.3.3 get_count:獲取編碼器
計數(shù) 223
18.3.4 clear_count:清空編碼器
計數(shù) 224
18.4 注冊脈沖編碼器設備 224
18.5 脈沖編碼器中斷處理 225
18.6 驅(qū)動配置 226
18.7 驅(qū)動驗證 227
18.8 本章小結 229
第19章 加解密設備驅(qū)動開發(fā) 230
19.1 加解密設備層級結構 230
19.2 創(chuàng)建加解密設備 231
19.3 實現(xiàn)加解密設備的操作方法 231
19.3.1 create:創(chuàng)建設備 232
19.3.2 destroy:銷毀設備 236
19.3.3 copy:復制上下文 237
19.3.4 reset:復位設備 239
19.4 注冊加解密設備 240
19.5 驅(qū)動配置 241
19.6 驅(qū)動驗證 241
19.7 本章小結 242
第20章 PM設備驅(qū)動開發(fā)243
20.1 PM層級結構 243
20.2 實現(xiàn)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 驅(qū)動配置 250
20.5 驅(qū)動驗證 250
20.6 本章小結 251
第三篇 高級篇
第21章 WLAN設備驅(qū)動
開發(fā) 254
21.1 WLAN層級結構 254
21.2 創(chuàng)建WLAN設備 256
21.3 實現(xiàn)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:發(fā)送數(shù)據(jù) 261
21.4 注冊WLAN設備 261
21.5 驅(qū)動配置 262
21.6 驅(qū)動驗證 263
21.7 本章小結 264
第22章 ETH設備驅(qū)動開發(fā) 265
22.1 ETH層級結構 265
22.2 創(chuàng)建ETH設備 266
22.3 實現(xiàn)ETH設備的操作方法 267
22.3.1 eth_rx:數(shù)據(jù)接收 268
22.3.2 eth_tx:數(shù)據(jù)發(fā)送 270
22.4 注冊ETH設備 271
22.5 驅(qū)動配置 272
22.6 驅(qū)動驗證 272
22.7 本章小結 273
第23章 AUDIO MIC設備驅(qū)動
開發(fā) 274
23.1 AUDIO層級結構 274
23.2 創(chuàng)建MIC設備 275
23.3 實現(xiàn)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 音頻數(shù)據(jù)流處理 282
23.5 注冊MIC設備 284
23.6 驅(qū)動配置 285
23.7 驅(qū)動驗證 286
23.8 本章小結 286
第24章 AUDIO SOUND設備驅(qū)動開發(fā) 287
24.1 創(chuàng)建SOUND設備 287
24.2 實現(xiàn)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:獲取緩沖區(qū)
信息 294
24.3 音頻數(shù)據(jù)流處理 295
24.4 注冊SOUND設備 297
24.5 驅(qū)動配置 298
24.6 驅(qū)動驗證 299
24.7 本章小結 300
第25章 USBD設備驅(qū)動開發(fā) 301
25.1 USBD層級結構 301
25.2 創(chuàng)建USBD設備 302
25.3 實現(xiàn)USBD設備的操作方法 303
25.3.1 set_address:設置USBD
設備地址 304
25.3.2 set_config:配置USBD
設備 305
25.3.3 ep_set_stall:設置端點
STALL狀態(tài) 305
25.3.4 ep_clear_stall:清除端點STALL狀態(tài) 305
25.3.5 ep_enable:使能端點 306
25.3.6 ep_disable:禁用端點 306
25.3.7 ep_read_prepare:端點接收數(shù)據(jù)準備信號 307
25.3.8 ep_read:端點接收數(shù)據(jù) 307
25.3.9 ep_write:端點發(fā)送
數(shù)據(jù) 308
25.3.10 ep0_send_status:通知主機
數(shù)據(jù)傳輸結束 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回調(diào)函數(shù) 312
25.5.2 rt_usbd_ep0_in_handler:IN令牌包回調(diào)函數(shù) 312
25.5.3 rt_usbd_ep0_out_handler:OUT令牌包回調(diào)函數(shù) 313
25.5.4 其他回調(diào)函數(shù) 313
25.6 驅(qū)動配置 314
25.7 驅(qū)動驗證 315
25.8 本章小結 315
第26章 USBH設備驅(qū)動開發(fā) 316
26.1 USBH層級結構 316
26.2 創(chuàng)建USBH設備 317
26.3 實現(xiàn)USBH設備的操作方法 318
26.3.1 reset_port:重置端口 318
26.3.2 pipe_xfer:傳輸數(shù)據(jù) 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:連接成功回調(diào)
函數(shù) 324
26.5.2 rt_usbh_root_hub_disconnect_handler:斷開連接回調(diào)
函數(shù) 325
26.5.3 其他中斷處理 326
26.6 驅(qū)動配置 326
26.7 驅(qū)動驗證 327
26.8 本章小結 327
第27章 CAN設備驅(qū)動開發(fā) 328
27.1 CAN層級結構 328
27.2 創(chuàng)建CAN設備 329
27.3 實現(xiàn)CAN設備的操作方法 330
27.3.1 configure:配置CAN
設備 330
27.3.2 control:控制CAN
設備 331
27.3.3 sendmsg:發(fā)送一幀
數(shù)據(jù) 334
27.3.4 recvmsg:接收一幀
數(shù)據(jù) 336
27.4 CAN中斷處理 337
27.5 注冊CAN設備 339
27.6 驅(qū)動配置 340
27.7 驅(qū)動驗證 341
27.8 本章小結 344