物聯網操作系統 LiteOS 內核開發與實踐

劉旭明 劉火良 李雪峰

立即出貨

  • 物聯網操作系統 LiteOS 內核開發與實踐-preview-1
  • 物聯網操作系統 LiteOS 內核開發與實踐-preview-2
物聯網操作系統 LiteOS 內核開發與實踐-preview-1

買這商品的人也買了...

商品描述

本書較為全面地介紹了華為物聯網操作系統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