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