物聯網操作系統 LiteOS 內核開發與實踐
劉旭明 劉火良 李雪峰
- 出版商: 人民郵電
- 出版日期: 2020-07-01
- 定價: $299
- 售價: 8.5 折 $254
- 語言: 簡體中文
- 頁數: 280
- 裝訂: 平裝
- ISBN: 7115529094
- ISBN-13: 9787115529091
-
相關分類:
Operating-system、物聯網 IoT
立即出貨
買這商品的人也買了...
-
$280$238 -
$474$450 -
$490$382 -
$658STM32 庫開發實戰指南:基於 STM32F4
-
$834$792 -
$774$735 -
$474$450 -
$607LwIP 應用開發實戰指南 : 基於 STM32
-
$454超大流量分佈式系統架構解決方案:人人都是架構師2.0
-
$305語音信號處理 (C++版)
-
$505百面深度學習 : 算法工程師帶你去面試
-
$672$638 -
$336$319 -
$560$442 -
$400$340 -
$550$435 -
$480$379 -
$465Python 編程:從數據分析到數據科學, 2/e
-
$199嵌入式技術應用項目式教程(STM32版)
-
$620$489 -
$880$748 -
$779$740 -
$403STM32 單片機全案例開發實戰
-
$720$562 -
$680$537
相關主題
商品描述
本書較為全面地介紹了華為物聯網操作系統LiteOS內核相關知識。
全書共12章,介紹了LiteOS的移植與內核資源的應用,如創建任務、任務管理、
消息隊列、信號量、互斥鎖、事件、軟件定時器、內存管理、中斷管理及鍊錶等操作,
深入講解了內核資源的概念、運行機制、應用場景及源碼。
本書提供了大量實驗,通過練習和操作實踐,讀者可鞏固所學的內容。
本書可以作為高校物聯網、嵌入式等相關專業的教材,也可以作為物聯網、
嵌入式培訓班的教材,還適合物聯網開發人員、
從事物聯網技術支持的專業人員和廣大嵌入式愛好者自學使用。
作者簡介
劉火良
野火電子創始人,系統工程師,近十年來一直從事嵌入式系統的軟硬件開發工作,
出版著作有《STM32庫開發實戰指南-基於STM32F103(*2版)》,
《STM32庫開發實戰指南-基於STM32F4》,《freeRTOS內核實現與應用開發實戰指南》,
《ucosiii內核實現與應用開發實戰指南》《RT-Thread內核實現與應用開發實戰指南》,
《Lwip應用開發實戰指南》。
目錄大綱
目錄:
第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章創建任務42
3.1硬件初始化42
3.2創建單任務43
3.2.1動態內存空間的堆43
3.2.2 LiteOS核心初始化44
3.2.3定義任務函數45
3.2. 4定義任務ID變量46
3.2.5任務控制塊46
3.2.6創建具體任務47
3.3 main.c文件內容全貌48
3.4創建多任務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任務狀態的基本概念67
4.1.4任務狀態遷移67
4.2常用的任務函數68
4.2.1任務創建函數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任務創建函數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消息隊列創建函數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二值信號量創建函數LOS_BinarySemCreate 118
6.5.4計數信號量創建函數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互斥鎖的優先級繼承機制140
7.3互斥鎖的運行機制142
7.4互斥鎖的應用場景142
7.5互斥鎖的使用143
7.5. 1互斥鎖控制塊143
7.5.2互斥鎖錯誤代碼143
7.5.3互斥鎖創建函數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模擬優先級翻轉實驗152
7.6.2互斥鎖實驗158
7.7實驗現象164
7.7.1模擬優先級翻轉實驗現象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軟件定時器開發典型流程187
9.2. 4軟件定時器創建函數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靜態內存池的使用208
10.4.1靜態內存池控制塊208
10.4.2靜態內存池初始化函數LOS_MemboxInit 208
10.4.3靜態內存池分配函數LOS_MemboxAlloc 210
10.4.4靜態內存池釋放函數LOS_MemboxFree 212
10.4.5靜態內存池內容清除函數LOS_MemboxClr 213
10.5動態內存的使用213
10.5.1動態內存初始化函數LOS_MemInit 214
10.5.2動態內存分配函數LOS_MemAlloc 217
10.5.3動態內存釋放函數LOS_MemFree 220
10.6內存管理實驗223
10.6.1靜態內存池管理實驗223
10.6.2動態內存管理實驗229
10.7實驗現象235
10.7.1靜態內存池管理實驗現象235
10.7.2動態內存管理實驗現象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向鍊錶中添加節點函數LOS_ListAdd 259
12.2.3從鍊錶中刪除節點函數LOS_ListDelete 260
12.3雙向鍊錶實驗261
12.4實驗現象264