近年來國內(nèi)芯片產(chǎn)業(yè)和物聯(lián)網(wǎng)產(chǎn)業(yè)的快速崛起,行業(yè)發(fā)展迫切需要更多人才,尤其需要掌握嵌入式操作系統(tǒng)等底層技術(shù)的人才。隨著RT-Thread被更廣泛地應(yīng)用于行業(yè)中,開發(fā)者對嵌入式驅(qū)動開發(fā)的需求越來越強(qiáng)烈,他們迫切地希望有一本可以指導(dǎo)他們在RT-Thread上開發(fā)驅(qū)動的指南。
為了解決開發(fā)者的燃眉之急,《RT-Thread設(shè)備驅(qū)動開發(fā)指南》來了!希望幫助RT-Thread的開發(fā)者掌握驅(qū)動開發(fā)的知識點(diǎn),讓開發(fā)者能夠更簡單、更方便地開發(fā)驅(qū)動,加速產(chǎn)品上市,讓RT-Thread賦能更多行業(yè),真正做到“積識成睿,慧澤百川”。
讀者對象
- 熟悉RT-Thread并想在其上開發(fā)設(shè)備驅(qū)動的人員
- 嵌入式軟硬件工程師、電子工程師、物聯(lián)網(wǎng)開發(fā)工程師
- 高等院校的計(jì)算機(jī)、電子、自動化、通信相關(guān)專業(yè)師生
- 其他對嵌入式操作系統(tǒng)感興趣的人員
如何閱讀本書
本書要求讀者具備RT-Thread基礎(chǔ)知識,因此建議大家先學(xué)習(xí)《嵌入式實(shí)時操作系統(tǒng):RT-Thread設(shè)計(jì)與實(shí)現(xiàn)》,再學(xué)習(xí)本書內(nèi)容。使用過RT-Thread上的設(shè)備框架的讀者的閱讀體驗(yàn)會更佳。本書的每章都有配套示例代碼,這些代碼大多是僅供理解上下文參考的,不能真正運(yùn)行,建議讀者對照具體bsp目錄下已有的驅(qū)動,并結(jié)合本書進(jìn)行學(xué)習(xí)。本書內(nèi)容分為三篇:基礎(chǔ)篇、進(jìn)階篇與高級篇。基礎(chǔ)篇(第1~11章)第1章概述RT-Thread與設(shè)備框架;第2~11章介紹一些常用的設(shè)備驅(qū)動框架,包括PIN、I2C、SPI等,適合剛接觸驅(qū)動開發(fā)的讀者閱讀。進(jìn)階篇(第12~20章)介紹稍復(fù)雜一些的外設(shè)驅(qū)動,如SDIO、觸摸、顯示、傳感器、加解密設(shè)備等。高級篇(第21~27章)介紹一些復(fù)雜的驅(qū)動,如網(wǎng)絡(luò)、音頻、USBD(H)、CAN等,開發(fā)此類設(shè)備驅(qū)動要求開發(fā)者比較熟悉相應(yīng)的外設(shè)協(xié)議。本書更像是一本工具書,讀者不需要一章一章地從頭讀到尾,讀完前面幾章內(nèi)容,熟悉了驅(qū)動開發(fā)的基本流程之后,就可以根據(jù)自己的需要,選擇對應(yīng)的章節(jié)學(xué)習(xí)。
配套軟件
本書是基于RT-Thread 4.1.0 編寫的,讀者在跟隨本書學(xué)習(xí)驅(qū)動開發(fā)的時候,也需要選擇對應(yīng)的源碼版本。
目錄
上拉下滑查看目錄 ↓
前言
第一篇基礎(chǔ)篇
第1章RT-Thread與設(shè)備框架
簡介 2
1.1RT-Thread概述 2
1.2RT-Thread I/O設(shè)備框架 5
1.2.1I/O設(shè)備模型與分類 8
1.2.2I/O設(shè)備管理接口 10
1.2.3驅(qū)動編寫流程與規(guī)范 15
1.3本章小結(jié) 16
第2章UART設(shè)備驅(qū)動開發(fā) 17
2.1UART層級結(jié)構(gòu) 18
2.2創(chuàng)建UART設(shè)備 19
2.3實(shí)現(xiàn)UART設(shè)備的操作方法 20
2.3.1configure:配置UART
設(shè)備 21
2.3.2control:控制UART設(shè)備 23
2.3.3putc:發(fā)送一個字符 26
2.3.4getc:接收一個字符 27
2.3.5transmit:數(shù)據(jù)發(fā)送 28
2.4注冊UART設(shè)備 29
2.5UART設(shè)備中斷處理 30
2.6增加DMA模式 32
2.7驅(qū)動配置 37
2.8驅(qū)動驗(yàn)證 38
2.9本章小結(jié) 39
第3章PIN設(shè)備驅(qū)動開發(fā) 41
3.1PIN層級結(jié)構(gòu) 41
3.2實(shí)現(xiàn)PIN設(shè)備的操作方法 42
3.3注冊PIN設(shè)備 51
3.4驅(qū)動配置 52
3.5驅(qū)動驗(yàn)證 52
3.6本章小結(jié) 53
第4章I2C總線設(shè)備驅(qū)動開發(fā) 54
4.1I2C層級結(jié)構(gòu) 55
4.2I2C總線設(shè)備結(jié)構(gòu) 55
4.3硬件I2C總線設(shè)備驅(qū)動開發(fā) 56
4.3.1實(shí)現(xiàn)設(shè)備的操作方法 57
4.3.2注冊設(shè)備 59
4.3.3驅(qū)動配置 60
4.3.4驅(qū)動驗(yàn)證 61
4.4軟件I2C總線設(shè)備驅(qū)動開發(fā) 61
4.4.1實(shí)現(xiàn)設(shè)備的操作方法 62
4.4.2注冊設(shè)備 66
4.5本章小結(jié) 67
第5章SPI/QSPI總線設(shè)備驅(qū)動
開發(fā) 68
5.1SPI/QSPI層級結(jié)構(gòu) 69
5.2SPI總線設(shè)備驅(qū)動開發(fā) 70
5.2.1創(chuàng)建SPI總線設(shè)備 70
5.2.2實(shí)現(xiàn)SPI總線設(shè)備的操作
方法 72
5.2.3注冊SPI總線設(shè)備 76
5.2.4增加DMA功能 77
5.2.5實(shí)現(xiàn)掛載SPI從設(shè)備功能 80
5.2.6SPI總線設(shè)備驅(qū)動配置 81
5.2.7驅(qū)動驗(yàn)證 82
5.3QSPI 總線設(shè)備驅(qū)動開發(fā) 83
5.3.1創(chuàng)建QSPI總線設(shè)備 83
5.3.2實(shí)現(xiàn)QSPI總線設(shè)備的
操作方法 84
5.3.3注冊QSPI總線設(shè)備 87
5.3.4實(shí)現(xiàn)掛載QSPI從設(shè)備
功能 87
5.3.5QSPI 總線設(shè)備驅(qū)動配置 89
5.3.6驅(qū)動驗(yàn)證 89
5.4本章小結(jié) 90
第6章HWTIMER設(shè)備驅(qū)動
開發(fā) 91
6.1HWTIMER層級結(jié)構(gòu) 91
6.2創(chuàng)建HWTIMER設(shè)備 92
6.3實(shí)現(xiàn)HWTIMER設(shè)備的操作
方法 93
6.3.1init:初始化設(shè)備 93
6.3.2start:啟動設(shè)備 95
6.3.3stop:停止設(shè)備 96
6.3.4count_get:獲取設(shè)備
當(dāng)前值 96
6.3.5control:控制設(shè)備 97
6.4注冊HWTIMER設(shè)備 98
6.5HWTIMER設(shè)備中斷處理 99
6.6驅(qū)動配置 100
6.7驅(qū)動驗(yàn)證 101
6.8本章小結(jié) 101
第7章PWM設(shè)備驅(qū)動開發(fā) 102
7.1PWM層級結(jié)構(gòu) 103
7.2創(chuàng)建PWM設(shè)備 104
7.3實(shí)現(xiàn)PWM設(shè)備的操作方法 105
7.4注冊PWM設(shè)備 108
7.5驅(qū)動配置 109
7.6驗(yàn)證與使用 110
7.7本章小結(jié) 111
第8章RTC設(shè)備驅(qū)動開發(fā) 112
8.1RTC層級結(jié)構(gòu) 112
8.2創(chuàng)建RTC設(shè)備 113
8.3實(shí)現(xiàn)RTC設(shè)備的操作方法 113
8.3.1為設(shè)備定義操作方法 114
8.3.2init:初始化設(shè)備 115
8.3.3get_secs:獲取時間 115
8.3.4set_secs:設(shè)置時間 116
8.3.5get_timeval:獲取timeval
結(jié)構(gòu) 117
8.4注冊RTC設(shè)備 118
8.5驅(qū)動配置 119
8.6驅(qū)動驗(yàn)證 120
8.7本章小結(jié) 121
第9章ADC設(shè)備驅(qū)動開發(fā) 122
9.1ADC層級結(jié)構(gòu) 122
9.2創(chuàng)建ADC設(shè)備 123
9.3實(shí)現(xiàn)ADC設(shè)備的操作方法 124
9.3.1enabled:控制ADC
通道 125
9.3.2convert:轉(zhuǎn)換并獲取ADC
采樣值 125
9.4注冊ADC設(shè)備 126
9.5驅(qū)動配置 127
9.6驅(qū)動驗(yàn)證 128
9.7本章小結(jié) 129
第10章DAC設(shè)備驅(qū)動開發(fā) 130
10.1DAC層級結(jié)構(gòu) 130
10.2創(chuàng)建DAC設(shè)備 131
10.3實(shí)現(xiàn)設(shè)備的操作方法 132
10.3.1enabled:使能DAC
通道 133
10.3.2disabled:禁止DAC
通道 133
10.3.3convert:設(shè)置DAC輸出值
并啟動數(shù)模轉(zhuǎn)換 134
10.4注冊DAC設(shè)備 135
10.5驅(qū)動配置 136
10.6驅(qū)動驗(yàn)證 136
10.7本章小結(jié) 138
第11章WDT設(shè)備驅(qū)動開發(fā) 139
11.1WDT層級結(jié)構(gòu) 139
11.2創(chuàng)建WDT設(shè)備 140
11.3實(shí)現(xiàn)WDT設(shè)備的操作方法 141
11.3.1為設(shè)備定義操作方法 141
11.3.2init:初始化看門狗
設(shè)備 141
11.3.3control:控制看門狗
設(shè)備 142
11.4注冊WDT設(shè)備 143
11.5驅(qū)動配置 144
11.6驅(qū)動驗(yàn)證 145
11.7本章小結(jié) 146
第二篇進(jìn)階篇
第12章SDIO 設(shè)備驅(qū)動開發(fā)148
12.1SDIO層級結(jié)構(gòu) 148
12.2實(shí)現(xiàn)SDIO設(shè)備的操作方法 149
12.2.1request:發(fā)送請求 149
12.2.2set_iocfg:配置SDIO 154
12.2.3get_card_status:獲取
狀態(tài) 156
12.2.4enable_sdio_irq:配置
中斷 156
12.3創(chuàng)建并激活SDIO主機(jī) 157
12.4驅(qū)動配置 159
12.5驅(qū)動驗(yàn)證 159
12.6本章小結(jié) 160
第13章Touch設(shè)備驅(qū)動開發(fā) 161
13.1Touch層級結(jié)構(gòu) 161
13.2GT9147觸摸芯片 162
13.3創(chuàng)建Touch設(shè)備 162
13.4實(shí)現(xiàn)Touch設(shè)備的操作方法 163
13.4.1touch_readpoint:讀觸摸點(diǎn)
信息 163
13.4.2touch_control:控制
設(shè)備 166
13.5注冊Touch設(shè)備 168
13.6驅(qū)動配置 169
13.7驅(qū)動驗(yàn)證 170
13.8本章小結(jié) 172
第14章LCD設(shè)備驅(qū)動開發(fā) 173
14.1LCD層級結(jié)構(gòu) 173
14.2創(chuàng)建LCD設(shè)備 174
14.3實(shí)現(xiàn)LCD設(shè)備的操作方法 174
14.3.1init:初始化LCD設(shè)備 175
14.3.2control:控制LCD設(shè)備 175
14.4實(shí)現(xiàn)繪圖的操作方法 177
14.4.1set_pixel:畫點(diǎn) 178
14.4.2get_pixel:讀取像素點(diǎn)
顏色 178
14.4.3draw_hline:畫橫線 179
14.4.4draw_vline:畫豎線 180
14.4.5blit_line:畫雜色水
平線 181
14.5注冊LCD設(shè)備 182
14.6驅(qū)動配置 183
14.7驅(qū)動驗(yàn)證 184
14.8本章小結(jié) 185
第15章傳感器設(shè)備驅(qū)動開發(fā) 186
15.1傳感器層級結(jié)構(gòu) 186
15.2創(chuàng)建傳感器設(shè)備 187
15.3實(shí)現(xiàn)傳感器設(shè)備的操作方法 188
15.3.1fetch_data:獲取傳感器
數(shù)據(jù) 188
15.3.2control:控制傳感器
設(shè)備 189
15.4設(shè)備注冊 191
15.5驅(qū)動配置 193
15.6驅(qū)動驗(yàn)證 194
15.7本章小結(jié) 195
第16章MTD NOR設(shè)備驅(qū)動
開發(fā) 196
16.1MTD NOR層級結(jié)構(gòu) 196
16.2創(chuàng)建MTD NOR設(shè)備 197
16.3實(shí)現(xiàn)MTD NOR設(shè)備的操作
方法 198
16.3.1read_id:讀取設(shè)備ID 198
16.3.2read:從設(shè)備中讀數(shù)據(jù) 199
16.3.3write:向設(shè)備中寫數(shù)據(jù) 200
16.3.4erase_block:擦除數(shù)據(jù) 201
16.4注冊MTD NOR設(shè)備 202
16.5驅(qū)動配置 204
16.6驅(qū)動驗(yàn)證 204
16.7本章小結(jié) 205
第17章MTD NAND設(shè)備驅(qū)動
開發(fā) 206
17.1MTD NAND層級結(jié)構(gòu) 206
17.2創(chuàng)建MTD NAND設(shè)備 207
17.3實(shí)現(xiàn)MTD NAND設(shè)備的操作
方法 207
17.3.1read_id:讀取設(shè)備ID 208
17.3.2read_page:從設(shè)備中讀
數(shù)據(jù) 208
17.3.3write_page:向設(shè)備中寫
數(shù)據(jù) 210
17.3.4erase_block:擦除設(shè)備 213
17.4注冊MTD NAND設(shè)備 214
17.5驅(qū)動配置 215
17.6驅(qū)動驗(yàn)證 216
17.7本章小結(jié) 217
第18章脈沖編碼器設(shè)備驅(qū)動
開發(fā)218
18.1脈沖編碼器層級結(jié)構(gòu) 219
18.2創(chuàng)建脈沖編碼器設(shè)備 220
18.3實(shí)現(xiàn)脈沖編碼器設(shè)備的操作
方法 220
18.3.1init:初始化脈沖
編碼器 221
18.3.2control:控制脈沖
編碼器 222
18.3.3get_count:獲取編碼器
計(jì)數(shù) 223
18.3.4clear_count:清空編碼器
計(jì)數(shù) 224
18.4注冊脈沖編碼器設(shè)備 224
18.5脈沖編碼器中斷處理 225
18.6驅(qū)動配置 226
18.7驅(qū)動驗(yàn)證 227
18.8本章小結(jié) 229
第19章加解密設(shè)備驅(qū)動開發(fā) 230
19.1加解密設(shè)備層級結(jié)構(gòu) 230
19.2創(chuàng)建加解密設(shè)備 231
19.3實(shí)現(xiàn)加解密設(shè)備的操作方法 231
19.3.1create:創(chuàng)建設(shè)備 232
19.3.2destroy:銷毀設(shè)備 236
19.3.3copy:復(fù)制上下文 237
19.3.4reset:復(fù)位設(shè)備 239
19.4注冊加解密設(shè)備 240
19.5驅(qū)動配置 241
19.6驅(qū)動驗(yàn)證 241
19.7本章小結(jié) 242
第20章PM設(shè)備驅(qū)動開發(fā)243
20.1PM層級結(jié)構(gòu) 243
20.2實(shí)現(xiàn)PM設(shè)備的操作方法 244
20.2.1sleep:切換休眠模式 244
20.2.2run:切換運(yùn)行模式 246
20.2.3timer_start:定時器
啟動 247
20.2.4timer_get_tick:獲取
時鐘值 248
20.2.5timer_stop:定時器停止 248
20.3注冊PM設(shè)備 249
20.4驅(qū)動配置 250
20.5驅(qū)動驗(yàn)證 250
20.6本章小結(jié) 251
第三篇高級篇
第21章WLAN設(shè)備驅(qū)動
開發(fā) 254
21.1WLAN層級結(jié)構(gòu) 254
21.2創(chuàng)建WLAN設(shè)備 256
21.3實(shí)現(xiàn)WLAN設(shè)備的操作方法 256
21.3.1wlan_init:初始化設(shè)備 257
21.3.2wlan_scan:掃描 258
強(qiáng)度 258
21.3.4wlan_cfg_promisc:配置
混雜模式 259
21.3.5wlan_set_channel:設(shè)置
信道 259
21.3.6wlan_set_country:設(shè)置
國家碼 260
21.3.7wlan_send:發(fā)送數(shù)據(jù) 261
21.4注冊WLAN設(shè)備 261
21.5驅(qū)動配置 262
21.6驅(qū)動驗(yàn)證 263
21.7本章小結(jié) 264
第22章ETH設(shè)備驅(qū)動開發(fā) 265
22.1ETH層級結(jié)構(gòu) 265
22.2創(chuàng)建ETH設(shè)備 266
22.3實(shí)現(xiàn)ETH設(shè)備的操作方法 267
22.3.1eth_rx:數(shù)據(jù)接收 268
22.3.2eth_tx:數(shù)據(jù)發(fā)送 270
22.4注冊ETH設(shè)備 271
22.5驅(qū)動配置 272
22.6驅(qū)動驗(yàn)證 272
22.7本章小結(jié) 273
第23章AUDIO MIC設(shè)備驅(qū)動
開發(fā) 274
23.1AUDIO層級結(jié)構(gòu) 274
23.2創(chuàng)建MIC設(shè)備 275
23.3實(shí)現(xiàn)MIC設(shè)備的操作方法 276
23.3.1getcaps:獲取設(shè)備功能 276
23.3.2configure:配置設(shè)備 279
23.3.3init:初始化設(shè)備 281
23.3.4start:啟動設(shè)備 281
23.3.5stop:停止設(shè)備 282
23.4音頻數(shù)據(jù)流處理 282
23.5注冊MIC設(shè)備 284
23.6驅(qū)動配置 285
23.7驅(qū)動驗(yàn)證 286
23.8本章小結(jié) 286
第24章AUDIO SOUND設(shè)備驅(qū)動開發(fā) 287
24.1創(chuàng)建SOUND設(shè)備 287
24.2實(shí)現(xiàn)SOUND設(shè)備的操作
方法 287
24.2.1getcaps:獲取設(shè)備功能 288
24.2.2configure:配置設(shè)備 291
24.2.3init:初始化設(shè)備 293
24.2.4start:啟動設(shè)備 293
24.2.5stop:停止設(shè)備 294
24.2.6buffer_info:獲取緩沖區(qū)
信息 294
24.3音頻數(shù)據(jù)流處理 295
24.4注冊SOUND設(shè)備 297
24.5驅(qū)動配置 298
24.6驅(qū)動驗(yàn)證 299
24.7本章小結(jié) 300
第25章USBD設(shè)備驅(qū)動開發(fā) 301
25.1USBD層級結(jié)構(gòu) 301
25.2創(chuàng)建USBD設(shè)備 302
25.3實(shí)現(xiàn)USBD設(shè)備的操作方法 303
25.3.1set_address:設(shè)置USBD
設(shè)備地址 304
25.3.2set_config:配置USBD
設(shè)備 305
25.3.3ep_set_stall:設(shè)置端點(diǎn)
STALL狀態(tài) 305
25.3.4ep_clear_stall:清除端點(diǎn)STALL狀態(tài) 305
25.3.5ep_enable:使能端點(diǎn) 306
25.3.6ep_disable:禁用端點(diǎn) 306
25.3.7ep_read_prepare:端點(diǎn)接收數(shù)據(jù)準(zhǔn)備信號 307
25.3.8ep_read:端點(diǎn)接收數(shù)據(jù) 307
25.3.9ep_write:端點(diǎn)發(fā)送
數(shù)據(jù) 308
25.3.10ep0_send_status:通知主機(jī)
數(shù)據(jù)傳輸結(jié)束 308
25.3.11suspend:掛起USBD
設(shè)備 308
25.3.12wakeup:喚醒USBD
設(shè)備 309
25.4注冊USBD設(shè)備 309
25.5USBD中斷處理 311
25.5.1rt_usbd_ep0_setup_handler:端點(diǎn)0 SETUP回調(diào)函數(shù) 312
25.5.2rt_usbd_ep0_in_handler:IN令牌包回調(diào)函數(shù) 312
25.5.3rt_usbd_ep0_out_handler:OUT令牌包回調(diào)函數(shù) 313
25.5.4其他回調(diào)函數(shù) 313
25.6驅(qū)動配置 314
25.7驅(qū)動驗(yàn)證 315
25.8本章小結(jié) 315
第26章USBH設(shè)備驅(qū)動開發(fā) 316
26.1USBH層級結(jié)構(gòu) 316
26.2創(chuàng)建USBH設(shè)備 317
26.3實(shí)現(xiàn)USBH設(shè)備的操作方法 318
26.3.1reset_port:重置端口 318
26.3.2pipe_xfer:傳輸數(shù)據(jù) 319
26.3.3open_pipe:開啟傳輸
管道 322
26.3.4close_pipe:關(guān)閉傳輸
管道 323
26.4注冊USBH設(shè)備 323
26.5USBH中斷處理 324
26.5.1rt_usbh_root_hub_connect_handler:連接成功回調(diào)
函數(shù) 324
26.5.2rt_usbh_root_hub_disconnect_handler:斷開連接回調(diào)
函數(shù) 325
26.5.3其他中斷處理 326
26.6驅(qū)動配置 326
26.7驅(qū)動驗(yàn)證 327
26.8本章小結(jié) 327
第27章CAN設(shè)備驅(qū)動開發(fā) 328
27.1CAN層級結(jié)構(gòu) 328
27.2創(chuàng)建CAN設(shè)備 329
27.3實(shí)現(xiàn)CAN設(shè)備的操作方法 330
27.3.1configure:配置CAN
設(shè)備 330
27.3.2control:控制CAN
設(shè)備 331
27.3.3sendmsg:發(fā)送一幀
數(shù)據(jù) 334
27.3.4recvmsg:接收一幀
數(shù)據(jù) 336
27.4CAN中斷處理 337
27.5注冊CAN設(shè)備 339
27.6驅(qū)動配置 340
27.7驅(qū)動驗(yàn)證 341
27.8本章小結(jié) 344
了解更多 ↓
本文來源:IT閱讀排行榜,圖片來源:原創(chuàng)
責(zé)任編輯:王瑩,部門領(lǐng)導(dǎo):盧志堅(jiān)
發(fā)布人:尹文敏
-
設(shè)備驅(qū)動
+關(guān)注
關(guān)注
0文章
68瀏覽量
10888 -
開發(fā)者
+關(guān)注
關(guān)注
1文章
575瀏覽量
17009 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1289瀏覽量
40122
發(fā)布評論請先 登錄
相關(guān)推薦
評論