嵌入式實時操作系統(tǒng):RT-Thread設(shè)計與實現(xiàn)
定 價:89 元
叢書名:電子與嵌入式系統(tǒng)設(shè)計叢書
- 作者:邱祎,熊譜翔,朱天龍 著
- 出版時間:2019/3/1
- ISBN:9787111619345
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP316.2
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書由自研開源嵌入式實時操作系統(tǒng)RT-Thread核心作者撰寫,專業(yè)性毋庸置疑,系統(tǒng)剖析嵌入式系統(tǒng)核心設(shè)計與實現(xiàn),掌握物聯(lián)網(wǎng)操作系統(tǒng)精髓。本書分為兩大部分,共16章,第1~10章為內(nèi)核篇;第11~16章為組件篇。
內(nèi)核篇(第1~10章)詳解RT-Thread內(nèi)核,先對RT-Thread進行總體介紹,再分別介紹RT-Thread的核心技術(shù)線程管理、時鐘管理、線程間同步、線程間通信、內(nèi)存管理、中斷管理與內(nèi)核移植。
組件篇(第11~16章)分別介紹Env開發(fā)環(huán)境、FinSH控制臺、設(shè)備管理、文件系統(tǒng)和網(wǎng)絡(luò)框架。
各章均有配套示例,方便讀者動手實踐和參考。
邱祎,睿賽德科技聯(lián)合創(chuàng)始人。從2006年在校時起參與開發(fā)RT-Thread開源操作系統(tǒng),和中國國內(nèi)優(yōu)秀的工程師一起將RT-Thread從零發(fā)展起來,RT-Thread被廣泛應(yīng)用于能源、車載、醫(yī)療、消費電子等眾多行業(yè),成為國人自主開發(fā)、成熟穩(wěn)定和裝機量大的開源嵌入式操作系統(tǒng)。
熊譜翔,睿賽德科技創(chuàng)始人兼CEO,于2006年創(chuàng)立了RT-Thread開源操作系統(tǒng),并以開源社區(qū)的形式,帶領(lǐng)中國國內(nèi)優(yōu)秀的工程師,以從無到有的方式,融入實時面向?qū)ο笤O(shè)計開發(fā)了RT-Thread自主操作系統(tǒng)內(nèi)核,及大量周邊成熟、穩(wěn)定軟件組件,如文件系統(tǒng)、命令行、圖形用戶界面等。
朱天龍(Armink),睿賽德科技技術(shù)總監(jiān),負責(zé)RT-Thread物聯(lián)網(wǎng)組件的研發(fā),前沿技術(shù)探索及團隊管理。曾任職于國內(nèi)某知名醫(yī)療設(shè)備企業(yè),擔(dān)任研發(fā)部門經(jīng)理要職,主導(dǎo)多個項目的研發(fā)實施和量產(chǎn),并獲得10余項國家發(fā)明專利。擁有近10年RT-Thread開發(fā)經(jīng)驗。他也是一位嵌入式開源極客,分享開源了EasyLogger、EasyFlash、CmBacktrace等數(shù)個活躍度極高的開源軟件。
前言
第一篇內(nèi)核篇
第1章嵌入式實時操作系統(tǒng)2
1.1嵌入式系統(tǒng)3
1.2實時系統(tǒng)4
1.3嵌入式實時操作系統(tǒng)6
1.3.1主流嵌入式實時操作系統(tǒng)7
1.3.2發(fā)展趨勢8
1.4本章小結(jié)8
第2章了解與快速上手RT-Thread9
2.1RT-Thread概述9
2.2RT-Thread的架構(gòu)10
2.3RT-Thread的獲取11
2.4RT-Thread快速上手12
2.4.1準備環(huán)境13
2.4.2初識RT-Thread16
2.4.3跑馬燈的例子20
2.5本章小結(jié)21
第3章內(nèi)核基礎(chǔ)22
3.1RT-Thread內(nèi)核介紹22
3.2RT-Thread啟動流程24
3.3RT-Thread程序內(nèi)存分布26
3.4RT-Thread自動初始化機制28
3.5RT-Thread內(nèi)核對象模型29
3.5.1靜態(tài)對象和動態(tài)對象29
3.5.2內(nèi)核對象管理架構(gòu)31
3.5.3對象控制塊33
3.5.4內(nèi)核對象管理方式34
3.6RT-Thread內(nèi)核配置示例36
3.7常見宏定義說明38
3.8本章小結(jié)39
第4章線程管理40
4.1線程管理的功能特點40
4.2線程的工作機制41
4.2.1線程控制塊41
4.2.2線程的重要屬性42
4.2.3線程狀態(tài)切換45
4.2.4系統(tǒng)線程46
4.3線程的管理方式46
4.3.1創(chuàng)建和刪除線程47
4.3.2初始化和脫離線程48
4.3.3啟動線程49
4.3.4獲得當(dāng)前線程50
4.3.5使線程讓出處理器資源50
4.3.6使線程睡眠50
4.3.7掛起和恢復(fù)線程51
4.3.8控制線程52
4.3.9設(shè)置和刪除空閑鉤子52
4.3.10設(shè)置調(diào)度器鉤子53
4.4線程應(yīng)用示例53
4.4.1創(chuàng)建線程示例54
4.4.2線程時間片輪轉(zhuǎn)調(diào)度示例56
4.4.3線程調(diào)度器鉤子示例57
4.5本章小結(jié)59
第5章時鐘管理60
5.1時鐘節(jié)拍60
5.1.1時鐘節(jié)拍的實現(xiàn)方式60
5.1.2獲取時鐘節(jié)拍61
5.2定時器管理62
5.2.1RT-Thread定時器介紹62
5.2.2定時器的工作機制63
5.2.3定時器的管理方式65
5.3定時器應(yīng)用示例69
5.4高精度延時72
5.5本章小結(jié)73
第6章線程間同步74
6.1信號量75
6.1.1信號量的工作機制75
6.1.2信號量控制塊75
6.1.3信號量的管理方式76
6.1.4信號量應(yīng)用示例79
6.1.5信號量的使用場合85
6.2互斥量87
6.2.1互斥量的工作機制87
6.2.2互斥量控制塊89
6.2.3互斥量的管理方式89
6.2.4互斥量應(yīng)用示例92
6.2.5互斥量的使用場合97
6.3事件集97
6.3.1事件集的工作機制97
6.3.2事件集控制塊98
6.3.3事件集的管理方式99
6.3.4事件集應(yīng)用示例101
6.3.5事件集的使用場合104
6.4本章小結(jié)104
第7章線程間通信105
7.1郵箱105
7.1.1郵箱的工作機制105
7.1.2郵箱控制塊106
7.1.3郵箱的管理方式106
7.1.4郵箱使用示例110
7.1.5郵箱的使用場合112
7.2消息隊列113
7.2.1消息隊列的工作機制113
7.2.2消息隊列控制塊114
7.2.3消息隊列的管理方式115
7.2.4消息隊列應(yīng)用示例118
7.2.5消息隊列的使用場合121
7.3信號123
7.3.1信號的工作機制123
7.3.2信號的管理方式124
7.3.3信號應(yīng)用示例126
7.4本章小節(jié)128
第8章內(nèi)存管理129
8.1內(nèi)存管理的功能特點129
8.2內(nèi)存堆管理130
8.2.1小內(nèi)存管理算法131
8.2.2slab管理算法132
8.2.3memheap管理算法133
8.2.4內(nèi)存堆配置和初始化134
8.2.5內(nèi)存堆的管理方式134
8.2.6內(nèi)存堆管理應(yīng)用示例136
8.3內(nèi)存池138
8.3.1內(nèi)存池的工作機制139
8.3.2內(nèi)存池的管理方式140
8.3.3內(nèi)存池應(yīng)用示例143
8.4本章小結(jié)145
第9章中斷管理146
9.1Cortex-MCPU架構(gòu)基礎(chǔ)146
9.1.1寄存器介紹147
9.1.2操作模式和特權(quán)級別148
9.1.3嵌套向量中斷控制器148
9.1.4PendSV系統(tǒng)調(diào)用149
9.2RT-Thread中斷工作機制149
9.2.1中斷向量表149
9.2.2中斷處理過程151
9.2.3中斷嵌套153
9.2.4中斷棧154
9.2.5中斷的底半處理154
9.3RT-Thread中斷管理接口156
9.3.1中斷服務(wù)程序掛接157
9.3.2中斷源管理158
9.3.3全局中斷開關(guān)158
9.3.4中斷通知160
9.4中斷與輪詢161
9.5全局中斷開關(guān)使用示例162
9.6本章小結(jié)164
第10章內(nèi)核移植165
10.1CPU架構(gòu)移植165
10.1.1實現(xiàn)全局中斷開關(guān)166
10.1.2實現(xiàn)線程棧初始化167
10.1.3實現(xiàn)上下文切換168
10.1.4實現(xiàn)時鐘節(jié)拍174
10.2BSP移植175
10.3內(nèi)核移植示例175
10.3.1準備裸機工程176
10.3.2建立RT-Thread工程177
10.3.3實現(xiàn)時鐘管理179
10.3.4實現(xiàn)控制臺輸出180
10.3.5實現(xiàn)動態(tài)堆內(nèi)存管理181
10.3.6移植到更多開發(fā)板183
10.4本章小結(jié)184
第二篇組件篇
第11章Env輔助開發(fā)環(huán)境186
11.1Env簡介186
11.2Env的功能特點187
11.3Env工程構(gòu)建示例189
11.4構(gòu)建更多MDK工程196
11.4.1創(chuàng)建外設(shè)示例工程196
11.4.2創(chuàng)建文件系統(tǒng)示例工程198
11.4.3創(chuàng)建網(wǎng)絡(luò)示例工程202
11.5本章小結(jié)206
第12章FinSH控制臺207
12.1FinSH介紹207
12.2FinSH內(nèi)置命令209
12.2.1顯示線程狀態(tài)210
12.2.2顯示信號量狀態(tài)210
12.2.3顯示事件狀態(tài)210
12.2.4顯示互斥量狀態(tài)210
12.2.5顯示郵箱狀態(tài)211
12.2.6顯示消息隊列狀態(tài)211
12.2.7顯示內(nèi)存池狀態(tài)211
12.2.8顯示定時器狀態(tài)212
12.2.9顯示設(shè)備狀態(tài)212
12.2.10顯示動態(tài)內(nèi)存狀態(tài)212
12.3自定義FinSH命令213
12.3.1自定義msh命令213
12.3.2自定義C-Style命令和變量213
12.3.3自定義命令重命名214
12.4FinSH功能配置214
12.5FinSH應(yīng)用示例216
12.5.1自定義msh命令示例216
12.5.2帶參數(shù)的msh命令示例217
12.6本章小結(jié)218
第13章I/O設(shè)備管理219
13.1I/O設(shè)備介紹219
13.1.1I/O設(shè)備管理框架219
13.1.2I/O設(shè)備模型221
13.1.3I/O設(shè)備類型222
13.2創(chuàng)建和注冊I/O設(shè)備223
13.3訪問I/O設(shè)備226
13.3.1查找設(shè)備226
13.3.2初始化設(shè)備227
13.3.3打開和關(guān)閉設(shè)備227
13.3.4控制設(shè)備228
13.3.5讀寫設(shè)備229
13.3.6數(shù)據(jù)收發(fā)回調(diào)229
13.3.7設(shè)備訪問示例230
13.4本章小結(jié)231
第14章通用外設(shè)接口232
14.1UART串口232
14.1.1串口設(shè)備管理233
14.1.2創(chuàng)建和注冊串口設(shè)備233
14.1.3訪問串口設(shè)備235
14.1.4串口設(shè)備使用示例235
14.2GPIO237
14.2.1PIN設(shè)備管理238
14.2.2創(chuàng)建和注冊PIN設(shè)備238
14.2.3訪問PIN設(shè)備239
14.2.4PIN設(shè)備使用示例242
14.3SPI總線243
14.3.1SPI設(shè)備管理244
14.3.2創(chuàng)建和注冊SPI總線設(shè)備246
14.3.3創(chuàng)建和掛載SPI從設(shè)備247
14.3.4訪問SPI從設(shè)備249
14.3.5特殊使用場景254
14.3.6SPI設(shè)備使用示例255
14.4I2C總線256
14.4.1I2C設(shè)備管理258
14.4.2創(chuàng)建和注冊I2C總線設(shè)備258
14.4.3訪問I2C設(shè)備259
14.4.4I2C設(shè)備應(yīng)用示例260
14.5運行設(shè)備應(yīng)用示例263
14.5.1運行PIN設(shè)備示例264
14.5.2運行SPI設(shè)備示例265
14.5.3運行I2C設(shè)備示例266
14.5.4運行串口設(shè)備示例266
14.6本章小結(jié)267
第15章虛擬文件系統(tǒng)268
15.1DFS介紹268
15.1.1DFS架構(gòu)269
15.1.2POSIX接口層269
15.1.3虛擬文件系統(tǒng)層270
15.1.4設(shè)備抽象層270
15.2文件系統(tǒng)掛載管理271
15.2.1DFS組件初始化271
15.2.2注冊文件系統(tǒng)271
15.2.3將存儲設(shè)備注冊為塊設(shè)備271
15.2.4格式化文件系統(tǒng)272
15.2.5掛載文件系統(tǒng)273
15.2.6卸載文件系統(tǒng)273
15.3文件管理273
15.3.1打開和關(guān)閉文件273
15.3.2讀寫數(shù)據(jù)274
15.3.3重命名275
15.3.4獲取狀態(tài)275
15.3.5刪除文件275
15.3.6同步文件數(shù)據(jù)到存儲設(shè)備276
15.3.7查詢文件系統(tǒng)相關(guān)信息276
15.3.8監(jiān)視I/O設(shè)備狀態(tài)276
15.4目錄管理277
15.4.1創(chuàng)建和刪除目錄277
15.4.2打開和關(guān)閉目錄277
15.4.3讀取目錄278
15.4.4獲取目錄流的讀取位置278
15.4.5設(shè)置下次讀取目錄的位置278
15.4.6重設(shè)讀取目錄的位置為開頭位置279
15.5DFS功能配置279
15.6DFS應(yīng)用示例279
15.6.1準備工作280
15.6.2讀寫文件示例283
15.6.3更改文件名稱示例284
15.6.4獲取文件狀態(tài)示例285
15.6.5創(chuàng)建目錄示例286
15.6.6讀取目錄示例286
15.6.7設(shè)置讀取目錄位置示例287
15.7本章小結(jié)289
第16章網(wǎng)絡(luò)框架290
16.1TCP/IP網(wǎng)絡(luò)協(xié)議簡介290
16.1.1OSI參考模型290
16.1.2TCP/IP參考模型291
16.1.3TCP/IP參考模型和OSI參考模型的區(qū)別291
16.1.4IP地址292
16.1.5子網(wǎng)掩碼292
16.1.6MAC地址292
16.2RT-Thread網(wǎng)絡(luò)框架介紹292
16.3網(wǎng)絡(luò)框架工作流程294
16.3.1網(wǎng)絡(luò)協(xié)議簇注冊294
16.3.2網(wǎng)絡(luò)數(shù)據(jù)接收流程295
16.3.3網(wǎng)絡(luò)數(shù)據(jù)發(fā)送流程296
16.4網(wǎng)絡(luò)套接字編程296
16.4.1TCPsocket通信流程296
16.4.2UDPsocket通信流程297
16.4.3創(chuàng)建套接字298
16.4.4綁定套接字298
16.4.5建立TCP連接299
16.4.6數(shù)據(jù)傳輸300
16.4.7關(guān)閉網(wǎng)絡(luò)連接301
16.5網(wǎng)絡(luò)功能配置302
16.6網(wǎng)絡(luò)應(yīng)用示例303
16.6.1準備工作303
16.6.2TCP客戶端示例306
16.6.3UDP客戶端示例310
16.7本章小結(jié)312
附錄Amenuconfig配置選項313
附錄BSCons構(gòu)建系統(tǒng)317