物聯(lián)網(wǎng)操作系統(tǒng)LiteOS內(nèi)核開發(fā)與實踐
定 價:49.8 元
- 作者:劉旭明 劉火良 李雪峰
- 出版時間:2020/7/1
- ISBN:9787115529091
- 出 版 社:人民郵電出版社
- 中圖法分類:TP316
- 頁碼:280
- 紙張:
- 版次:01
- 開本:16K
本書較為全面地介紹了華為物聯(lián)網(wǎng)操作系統(tǒng)LiteOS內(nèi)核相關(guān)知識。全書共12章,介紹了LiteOS的移植與內(nèi)核資源的應(yīng)用,如創(chuàng)建任務(wù)、任務(wù)管理、消息隊列、信號量、互斥鎖、事件、軟件定時器、內(nèi)存管理、中斷管理及鏈表等操作,深入講解了內(nèi)核資源的概念、運行機制、應(yīng)用場景及源碼。本書提供了大量實驗,通過練習(xí)和操作實踐,讀者可鞏固所學(xué)的內(nèi)容。
本書可以作為高校物聯(lián)網(wǎng)、嵌入式等相關(guān)專業(yè)的教材,也可以作為物聯(lián)網(wǎng)、嵌入式培訓(xùn)班的教材,還適合物聯(lián)網(wǎng)開發(fā)人員、從事物聯(lián)網(wǎng)技術(shù)支持的專業(yè)人員和廣大嵌入式愛好者自學(xué)使用。
1.理實一體、產(chǎn)教融合。由華為提供行業(yè)實際案例和實訓(xùn)項目,教師根據(jù)院校的實際教學(xué)情況安排知識內(nèi)容。
2.課證融通,對接崗位。和華為認(rèn)證緊密結(jié)合,做到大綱內(nèi)容全覆蓋,并提供部分真題訓(xùn)練,解決學(xué)生“不知道認(rèn)證”“對通過認(rèn)證沒有信心”的兩大難題。
3.資源豐富,易教利學(xué)。華為協(xié)助建設(shè)教學(xué)資源,幫助學(xué)校更好地進行課程建設(shè)。
劉火良,野火電子創(chuàng)始人,系統(tǒng)工程師,近十年來一直從事嵌入式系統(tǒng)的軟硬件開發(fā)工作,出版著作有《STM32庫開發(fā)實戰(zhàn)指南-基于STM32F103(第2版)》,《STM32庫開發(fā)實戰(zhàn)指南-基于STM32F4》,《freeRTOS內(nèi)核實現(xiàn)與應(yīng)用開發(fā)實戰(zhàn)指南》,《ucosiii內(nèi)核實現(xiàn)與應(yīng)用開發(fā)實戰(zhàn)指南》《RT-Thread內(nèi)核實現(xiàn)與應(yīng)用開發(fā)實戰(zhàn)指南》,《Lwip應(yīng)用開發(fā)實戰(zhàn)指南》。
第 1章 初識LiteOS 1
1.1 LiteOS概述 1
1.2 學(xué)習(xí)LiteOS 2
第 2章 移植LiteOS到STM32 4
2.1 移植前的準(zhǔn)備工作 4
2.1.1 獲取STM32的裸機工程模板 4
2.1.2 下載LiteOS源碼 4
2.1.3 LiteOS源碼核心文件夾分析 5
2.2 向裸機工程中添加LiteOS源碼 6
2.2.1 復(fù)制LiteOS文件夾到裸機工程根目錄中 6
2.2.2 將OS_CONFIG文件夾中配置文件復(fù)制到LiteOS文件夾中 7
2.2.3 復(fù)制Include文件夾到CMSIS文件夾中 7
2.2.4 LiteOS文件夾內(nèi)容介紹 7
2.2.5 添加LiteOS核心源碼到工程組文件夾中 9
2.3 接管中斷版本修改target_config.h 11
2.3.1 target_config.h文件內(nèi)容講解 11
2.3.2 target_config.h文件修改 22
2.4 非接管中斷版本修改target_config.h 29
2.4.1 target_config.h文件內(nèi)容 29
2.4.2 target_config.h文件修改 32
2.5 修改相關(guān)文件 34
2.5.1 啟動文件內(nèi)容修改 34
2.5.2 分散加載文件修改 36
2.5.3 修改中斷相關(guān)文件 38
2.5.4 修改core_cm3.h文件 39
2.6 修改工程配置 39
2.7 修改main.c 40
2.8 下載驗證 41
第3章 創(chuàng)建任務(wù) 42
3.1 硬件初始化 42
3.2 創(chuàng)建單任務(wù) 43
3.2.1 動態(tài)內(nèi)存空間的堆 43
3.2.2 LiteOS核心初始化 44
3.2.3 定義任務(wù)函數(shù) 45
3.2.4 定義任務(wù)ID變量 46
3.2.5 任務(wù)控制塊 46
3.2.6 創(chuàng)建具體任務(wù) 47
3.3 main.c文件內(nèi)容全貌 48
3.4 創(chuàng)建多任務(wù) 51
3.5 LiteOS的啟動流程 56
3.5.1 第 一種啟動方式 56
3.5.2 第二種啟動方式 57
3.5.3 LiteOS的啟動流程 59
第4章 任務(wù)管理 66
4.1 基本概念 66
4.1.1 任務(wù)的基本概念 66
4.1.2 調(diào)度器的基本概念 67
4.1.3 任務(wù)狀態(tài)的基本概念 67
4.1.4 任務(wù)狀態(tài)遷移 67
4.2 常用的任務(wù)函數(shù) 68
4.2.1 任務(wù)創(chuàng)建函數(shù)LOS_TaskCreate 68
4.2.2 任務(wù)刪除函數(shù)LOS_TaskDelete 70
4.2.3 任務(wù)延時函數(shù)LOS_TaskDelay 72
4.2.4 任務(wù)掛起函數(shù)LOS_TaskSuspend 73
4.2.5 任務(wù)恢復(fù)函數(shù)LOS_TaskResume 74
4.3 常用Task錯誤代碼說明 75
4.4 常用任務(wù)函數(shù)的使用方法 76
4.4.1 任務(wù)創(chuàng)建函數(shù)LOS_TaskCreate 76
4.4.2 任務(wù)刪除函數(shù)LOS_TaskDelete 77
4.4.3 任務(wù)延時函數(shù)LOS_TaskDelay 78
4.4.4 任務(wù)掛起與恢復(fù)函數(shù) 78
4.5 任務(wù)的設(shè)計要點 79
4.6 任務(wù)管理實驗 80
4.7 實驗現(xiàn)象 85
第5章 消息隊列 86
5.1 消息隊列的基本概念 86
5.2 消息隊列的運行機制 87
5.3 消息隊列的傳輸機制 88
5.4 消息隊列的阻塞機制 88
5.4.1 出隊阻塞 89
5.4.2 入隊阻塞 89
5.5 常見隊列錯誤代碼說明 89
5.6 常用消息隊列的函數(shù) 91
5.6.1 消息隊列創(chuàng)建函數(shù)LOS_QueueCreate 91
5.6.2 消息隊列刪除函數(shù)LOS_QueueDelete 94
5.6.3 消息隊列寫消息函數(shù) 96
5.6.4 通用的消息隊列處理函數(shù) 100
5.6.5 消息隊列讀消息函數(shù) 103
5.7 消息隊列實驗 107
5.8 實驗現(xiàn)象 112
第6章 信號量 114
6.1 信號量的基本概念 114
6.1.1 二值信號量 115
6.1.2 計數(shù)信號量 115
6.2 二值信號量的運行機制 116
6.3 二值信號量的應(yīng)用場景 116
6.4 計數(shù)信號量的運行機制 117
6.5 信號量的使用 117
6.5.1 信號量控制塊 117
6.5.2 常見信號量錯誤代碼 118
6.5.3 二值信號量創(chuàng)建函數(shù)LOS_BinarySemCreate 118
6.5.4 計數(shù)信號量創(chuàng)建函數(shù)LOS_SemCreate 120
6.5.5 信號量刪除函數(shù)LOS_SemDelete 121
6.5.6 信號量釋放函數(shù)LOS_SemPost 122
6.5.7 信號量獲取函數(shù)LOS_SemPend 124
6.6 二值信號量同步實驗 126
6.7 二值信號量同步實驗現(xiàn)象 131
6.8 計數(shù)信號量實驗 132
6.9 計數(shù)信號量實驗現(xiàn)象 137
第7章 互斥鎖 139
7.1 互斥鎖的基本概念 139
7.2 互斥鎖的優(yōu)先級繼承機制 140
7.3 互斥鎖的運行機制 142
7.4 互斥鎖的應(yīng)用場景 142
7.5 互斥鎖的使用 143
7.5.1 互斥鎖控制塊 143
7.5.2 互斥鎖錯誤代碼 143
7.5.3 互斥鎖創(chuàng)建函數(shù)LOS_MuxCreate 144
7.5.4 互斥鎖刪除函數(shù)LOS_MuxDelete 145
7.5.5 互斥鎖釋放函數(shù)LOS_MuxPost 147
7.5.6 互斥鎖獲取函數(shù)LOS_MuxPend 149
7.5.7 使用互斥鎖的注意事項 151
7.6 互斥鎖實驗 151
7.6.1 模擬優(yōu)先級翻轉(zhuǎn)實驗 152
7.6.2 互斥鎖實驗 158
7.7 實驗現(xiàn)象 164
7.7.1 模擬優(yōu)先級翻轉(zhuǎn)實驗現(xiàn)象 164
7.7.2 互斥鎖實驗現(xiàn)象 165
第8章 事件 166
8.1 事件的基本概念 166
8.2 事件的運行機制 167
8.3 事件的應(yīng)用場景 168
8.4 事件的使用 169
8.4.1 事件控制塊 169
8.4.2 常見事件錯誤代碼 169
8.4.3 事件初始化函數(shù)LOS_EventInit 169
8.4.4 事件銷毀函數(shù)LOS_EventDestory 170
8.4.5 寫指定事件函數(shù)LOS_EventWrite 170
8.4.6 讀指定事件函數(shù)LOS_EventRead 172
8.4.7 清除指定事件函數(shù)LOS_EventClear 175
8.5 事件標(biāo)志組實驗 176
8.6 實驗現(xiàn)象 182
第9章 軟件定時器 183
9.1 軟件定時器簡介 183
9.1.1 軟件定時器的基本概念 183
9.1.2 軟件定時器的運行機制 184
9.1.3 軟件定時器的精度 185
9.1.4 軟件定時器的應(yīng)用場景 185
9.2 軟件定時器的函數(shù) 185
9.2.1 軟件定時器控制塊 186
9.2.2 軟件定時器錯誤代碼 186
9.2.3 軟件定時器開發(fā)典型流程 187
9.2.4 軟件定時器創(chuàng)建函數(shù)LOS_SwtmrCreate 187
9.2.5 軟件定時器刪除函數(shù)LOS_SwtmrDelete 190
9.2.6 軟件定時器啟動函數(shù)LOS_SwtmrStart 192
9.2.7 軟件定時器停止函數(shù)LOS_SwtmrStop 196
9.3 軟件定時器實驗 198
9.4 實驗現(xiàn)象 202
第 10章 內(nèi)存管理 204
10.1 內(nèi)存管理的基本概念 204
10.2 內(nèi)存管理的運行機制 205
10.3 內(nèi)存管理的應(yīng)用場景 207
10.4 靜態(tài)內(nèi)存池的使用 208
10.4.1 靜態(tài)內(nèi)存池控制塊 208
10.4.2 靜態(tài)內(nèi)存池初始化函數(shù)LOS_MemboxInit 208
10.4.3 靜態(tài)內(nèi)存池分配函數(shù)LOS_MemboxAlloc 210
10.4.4 靜態(tài)內(nèi)存池釋放函數(shù)LOS_MemboxFree 212
10.4.5 靜態(tài)內(nèi)存池內(nèi)容清除函數(shù)LOS_MemboxClr 213
10.5 動態(tài)內(nèi)存的使用 213
10.5.1 動態(tài)內(nèi)存初始化函數(shù)LOS_MemInit 214
10.5.2 動態(tài)內(nèi)存分配函數(shù)LOS_MemAlloc 217
10.5.3 動態(tài)內(nèi)存釋放函數(shù)LOS_MemFree 220
10.6 內(nèi)存管理實驗 223
10.6.1 靜態(tài)內(nèi)存池管理實驗 223
10.6.2 動態(tài)內(nèi)存管理實驗 229
10.7 實驗現(xiàn)象 235
10.7.1 靜態(tài)內(nèi)存池管理實驗現(xiàn)象 235
10.7.2 動態(tài)內(nèi)存管理實驗現(xiàn)象 236
第 11章 中斷管理 237
11.1 中斷簡介 237
11.1.1 異常 237
11.1.2 中斷 238
11.2 中斷的運行機制 239
11.3 中斷的應(yīng)用場景 240
11.4 中斷延遲的基本概念 240
11.5 中斷的使用 241
11.5.1 接管中斷版本的移植 241
11.5.2 接管中斷版本的常用函數(shù) 241
11.5.3 非接管中斷 245
11.6 中斷管理實驗 246
11.6.1 接管中斷方式 246
11.6.2 非接管中斷方式 251
11.7 實驗現(xiàn)象 256
第 12章 鏈表 257
12.1 C語言中的鏈表 257
12.2 鏈表的使用 258
12.2.1 鏈表初始化函數(shù)LOS_ListInit 258
12.2.2 向鏈表中添加節(jié)點函數(shù)LOS_ListAdd 259
12.2.3 從鏈表中刪除節(jié)點函數(shù)LOS_ListDelete 260
12.3 雙向鏈表實驗 261
12.4 實驗現(xiàn)象 264