《考取HCIA證書看我就夠了》第五篇:[HCIA-IoT]物聯網技術之感知層技術概覽
系列文章目錄
《考取HCIA證書,看我就夠了》
1.華為職業認證體系及HCIA介紹
2.[HCIA-IoT]物聯網起源與發展
3.[HCIA-IoT]物聯網技術之網絡層技術概覽
4.[HCIA-IoT]物聯網技術之平臺層技術概覽
5.[HCIA-IoT]物聯網技術之感知層技術概覽
6.[HCIA-IoT]華為物聯網解決方案
如果你是第一次觀看本系列文章,建議先閱讀下之前的文章
本文目錄
系列文章目錄
前言
一、感知層硬件技術
1.1單片機技術
1.1.1微型計算機技術概述
1.1.2指令集
1.1.3處理單元分類
1.1.4單片機架構
1.2傳感器技術
1.2.1 ADC/DAC
1.2.2傳感技術
1.2.3傳感器分類
二、感知層軟件技術
2.1操作系統概述
2.1.1操作系統是什么
2.1.2操作系統發展史
2.2為什么需要物聯網操作系統
2.2.1物聯網終端開發面臨的挑戰
2.2.2終端智能化
2.3物聯網操作系統Huawei LiteOS概述
2.4 Huawei LiteOS的內核
2.4.1 Huawei LiteOS任務管理
2.4.2 Huawei LiteOS內存管理
2.4.3 Huawei LiteOS中斷管理
2.4.4 Huawei LiteOS任務間通信
2.4.5 Huawei LiteOS時間管理
2.4.6 Huawei LiteOS定時器
2.5 Huawei LiteOS的中間件
2.5.1 Huawei LiteOS SDK
2.5.2 Huawei LiteOS端云互通組件
2.5.3 Huawei LiteOS互聯框架
2.5.4 Huawei LiteOS互聯框架
2.5.5 Huawei LiteOS安全框架
2.6 Huawei LiteOS API
三、通信模組開發介紹
3.1什么是AT指令
3.2AT指令分類
3.1.1 NB-IoT指令集
3.1.2 Wi-Fi指令集
3.1.3 華為認證模組AT指令
3.2通信模組對接流程
3.2.1 NB-loT終端對接流程
3.2.2 Wi-Fi終端對接流程
總結
前言
本文為《考取HCIA證書,看我就夠了》系列文章第五篇
本文將主要介紹HCIA-IoT認證物聯網技術中感知層的主要技術,通過本次分享,你將會知道操作系統、單片機到底是什么。此外你還會了解有關LiteOS的知識,了解如何使用AT指令。
本次分享可能需要一些模電、數電的基礎知識。
本文面向人群:ICT從業人員、學生
在 [HCIA-IoT]篇物聯網起源與發展中我們知道物聯網可分為四層,分別是感知層、網絡層、平臺層和應用層四層。
上一次我分享了平臺層的內容,這次為大家帶來感知層技術概覽。
一、感知層硬件技術
1.1單片機技術
1.1.1微型計算機技術概述
當要講這部分時,我腦海中瞬間就出現了這段我非常喜歡的小說情節
“陛下,您的軍隊真是舉世無雙,這么短的時間,就完成了如此復雜的訓練。”馮·諾伊曼對秦始皇贊嘆道。 “雖然整體上復雜,但每個士兵要做的很簡單,比起以前為粉碎馬其頓方陣進行的訓練來,這算不了什么。”秦始皇按著長劍劍柄說。
“上帝也保佑,連著兩個這樣長的恒紀元。”牛頓說。
“即使是亂紀元,朕的軍隊也照樣訓練,以后,他們也會在亂紀元完成你們的計算。”秦始皇驕傲地掃視著方陣說。
“那么,請陛下發出您偉大的號令吧!”馮·諾伊曼用激動得發顫的聲音說。
秦始皇點點頭,一名衛士奔跑過來,握住皇帝的劍柄向后退了幾步,抽出了那柄皇帝本人無法抽出的青銅長劍.然后上前跪下將劍呈給皇帝,秦始皇對著長空揚起長劍,高聲喊道:
“成計算機隊列!”
金字塔四角的四尊青銅大鼎同時轟地燃燒起來,站滿了金字塔面向方陣一面坡墻的士兵用宏大的合唱將始皇帝的號令傳誦下去:
“成計算機隊列——”
下面的大地上,方陣均勻的色彩開始出現擾動,復雜精細的回路結構浮現出來,并漸漸充滿了整個方陣,十分鐘后,大地上出現了一塊三十六平方公里的計算機主板。
馮·諾伊曼指著下方巨大的人列回路開始介紹:“陛下,我們把這臺計算機命名為‘秦一號’。請看,那里,中心部分,是CPU,是計算機的核心計算元件.由您最精銳的五個軍團構成,對照這張圖您可以看到里面的加法器、寄存器、堆棧存貯器;外圍整齊的部分是內存,構建這部分時我們發現人手不夠,好在這部分每個單元的動作最簡單,就訓練每個士兵拿多種顏色的旗幟,組合起來后,一個人就能同時完成最初二十個人的操作,這就使內存容量達到了運行‘秦1.0’操作系統的最低要求;你再看那條貫穿整個陣列的通道,還有那些在通道上待命的輕轉兵,那是BUS,系統總線,負責在整個系統間傳遞信息。”
“總線結構是個偉大的發明,新的插件,最大可由十個軍團構成,能夠快捷地掛接到總線上運行,這使得‘秦一號’的硬件擴展和升級十分便利;再看最遠處那一邊,可能要用望遠鏡才能看清,那是外存,我們又用了哥白尼起的名字,叫它‘硬盤’,那是由三百萬名文化程度較高的人構成,您上次坑儒時把他們留下是對了,他們每個人手中都有一個記錄本和筆,負責記錄運算結果,當然,他們最大的工作量還是作為虛擬內存,存貯中間運算結果,運算速度的瓶頸就在他們那里。這兒,離我們最近的地方,是顯示陣列,能顯示計算機運行的主要狀態參數。”
馮·諾伊曼和牛頓搬來一個一人多高的大紙卷,在秦始皇面前展開來,當紙卷展到盡頭時,汪淼一陣頭皮發緊,但他想象中的×××并沒有出現,面前只有一張寫滿符號的大紙,那些符號都是蠅頭大小,密密麻麻,看上去與下面的計算機陣列一樣令人頭暈目眩。
“陛下,這是就我們開發的‘秦1.0’版操作系統,計算軟件將在它上面運行。陛下您看——”馮·諾伊曼指指下面的人列計算機,這陣列是硬件,而這張紙上寫的是軟件,硬件和軟件,就如同琴和樂譜的關系。”說著他和牛頓又展開了一張同樣大小的紙,”陛下,這就是數值法解那一組微分方程的軟件,將天文觀測得到的三個太陽在某一時間斷面的運動矢量輸入,它的運行就能為我們預測以后任一時刻太陽的運行狀態。我們這次計算,將對以后兩年太陽的運行做出完整預測,每組預測值的時間間隔為一百二十小時。”
秦始皇點點頭:“那就開始吧。” 馮·諾伊曼雙手過頂,莊嚴地喊道:“奉圣上御旨,計算機啟動!系統自檢!”
在金字塔的中部,一排旗手用旗語發出指令,一時間,下面大地上三千萬人構成的巨型主板仿佛液化了,充滿了細密的粼粼波光,那是幾千萬面小旗在揮動。在靠近金字塔底部的顯示陣列中,一條由無數面綠色大旗構成的進度條在延伸著,標示著自檢的進度。十分鐘后,進度條走到了頭。
“自檢完成!引導程序運行!操作系統加載!!” 下面,貫穿人列計算機的系統總線上的輕轉兵快速運動起來,總線立刻變成了一條湍急的河流.這河流沿途又分成無數條細小的支流,滲入到各個模塊陣列之中。很快,黑白旗的漣漪演化成洶涌的浪潮,激蕩在整塊主板上。中央的CPU區激蕩最為劇烈,像一片燃燒的火藥。突然,仿佛火藥燃盡,CPU區的擾動漸漸平靜下來,最后竟完全靜止了,以它為圓心,這靜止向各個方向飛快擴散開來,像快速封凍的海面,最后整塊主板大部分靜止了,其間只有一些零星的死循環在以不變的節奏沒有生氣地閃動著,顯示陣列中出現了閃動的紅色。
“系統鎖死!”一名信號官高喊。故障原因很快查清,是CPU狀態寄存器中的一個門電路運行出錯。
“系統重新熱啟動!”馮·諾伊受胸有成竹地命令道。
“慢!”牛頓揮手制止了信號官,轉身一臉陰毒地對秦始皇說,“陛下,為了系統的穩定運行,對故障率較高的部件應該采取一些維修措施。”
秦始皇拄著長劍說:“更換出錯部件,組成那個部件的所有兵卒,斬!以后故障照此辦理。”
馮·諾伊曼厭惡地看了牛頓一眼,看著一組利劍出鞘的騎兵沖進主板,“維修”了故障部件后,重新發布了熱啟動命令。這次啟動十分順利,二十分鐘后,三體世界的馮,諾伊曼結構人列計算機在“秦1.0”操作系統下進入運行狀態。
“啟動太陽軌道計算軟件‘Three-Body
l.0’!”牛頓聲嘶力竭地發令,“啟動計算主控!加載差分模塊!加載有限元模塊!加載譜方法模塊……調入初始條件參數!計算啟動!!”
主板上波光粼粼,顯示陣列上的各色標志此起彼伏地閃動,人列計算機開始了漫長的計算。
“真是很有意思。”秦始皇手指壯觀的計算機說,“每個人如此簡單的行為,竟產生了如此復雜的大東西!歐洲人罵朕獨裁暴政,扼殺了社會的創造力,其實在嚴格紀律約束下的大量的人,合為一個整體后也能產生偉大的智慧。”
“偉大的始皇帝,這是機器的機械運行,不是智慧。這些普通卑賤的人都是一個個0,只有在最前面加上您這樣一個1,他們的整體才有意義。”牛頓帶著奉承的微笑說。
“惡心的哲學。”馮·諾伊曼瞥了牛頓一眼說,“如果到時候,按你的理論和數學模型計算出的結果與預測不符,你我可就連零都不是了。”
“對,那時你們可真的什么都不是了!”秦始皇說著,拂袖而去。
時光飛逝,人列計算機運行了一年零四個月,除去程序的調試時間,實際計算時間約一年兩個月,這期間,只因亂紀元過分惡劣的氣候中斷過兩次,但計算機存貯了中斷現場數據,都成功地從斷點恢復了運行。當秦始皇和歐洲學者們再次登上金字塔頂部時,第一階段的計算已經完成,這批結果數據,精確地描述了以后兩年太陽運行的軌道狀況。
這是一個寒冷的黎明,徹夜照耀著巨大主板的無數火炬已經熄滅,計算機完成后,“秦1.0”進入待機狀態,主板表面洶涌的浪濤變成了平靜的微波......
上面的選段基本上描述了現代計算機的組成,區別就是文章里是由人替代一個一個的門電路
我們所熟悉的手機、電腦的處理器芯片,其實都是由一個個簡單的門電路組成
門電路就是可以完成與、或、非基本邏輯運算的電路,分為與、或、非門等,上面文章中加粗的字段就是描述了一個與門的運算邏輯。
與門
或門
非門
當然,若想要實現多功能,就需要在電路當中增加其他如選擇器、寄存器等電路。
選擇器用來選擇想要實現的功能。(例如︰兩數相加或相減)
寄存器可以對之前的結果和之后運行的指令進行記錄
然后利用單晶硅晶圓作為基底,敷設不同的材料層,在再上面刻蝕出一個個門電路,數以億計的門電路就形成了我們的芯片
之后現代計算機(無論大型或微型)在此基礎上又設計了成百上千個不同的指令,來實現數學、邏輯或存儲的功能。
其實,所有的程序都是用不同的指令的集合,來完成對于計算機數據的處理。
1.1.2指令集
計算機指令就是指揮機器工作的指示和命令,軟件就是為了使用計算機進行計算而編寫的用戶或系統程序,而程序就是一系列按一定順序排列的指令,執行程序的過程就是計算機的工作過程。
指令集,就是CPU中用來計算和控制計算機系統的一套指令的集合,而每一種新型的CPU在設計時就規定了一系列與其他硬件電路相配合的指令系統。
從現階段的主流體系結構講,指令集可分為復雜指令集和精簡指令集兩部分
1.1.3處理單元分類
現代可編程設備可以被分為兩個不同的類別:微處理器(Microprocessor,MPU)和微控制器(Microcontroller,MCU)
微處理器通常就是一塊CPU(Certral Processing Unit),通常被放在電腦、服務器或游戲設備等當中用來處理高功耗、高復雜度的任務。其特點在于微處理器只能用來處理數據,所有必要的存儲器和外設都必須分別外接
微控制器又稱單片機,其中包含CPU,存儲器和一系列輸入輸出設備。通常被設計為MP3播放器、照相機、遠程控制設備等低功耗嵌入式應用
1.1.4單片機架構
單片機主要分為四部分:CPU、存儲器、輸入輸出接口、系統總線
1.CPU
處理器(Processor,CPU ),處理器在微控制器當中用來控制整個系統,它串行地讀取并解碼程序指令,執行需要處理器的任務并且為其余部分任務生成控制信號。它執行所有算術和邏輯運算,并且具有相同處理器的微控制器可以執行相同的程序。
2.存儲器
存儲器( Memory ),存儲系統包含存儲器和地址解碼電路。
通常存儲器被分為兩類:隨機存儲器(RAM)、只讀存儲器(ROM)
RAM: Random Access Memory,用來存儲運行在程序當中的數據(如:運算結果等),掉電后數據消失
ROM: Read Only Memory,用來存儲需要被微控制器執行的程序,掉電后數據不消失。
3.輸入輸出接口(I/O)
連接外接設備和微控制器的接口,通常可以是數字I/O,模擬I/O,串口等。類似計算機的USB接口。
模擬數據(Analog Data)是由傳感器采集得到的連續變化的值,例如溫度、壓力,以及目前在電話、無線電和電視廣播中的聲音和圖像。
數字數據(Digital Data)則是模擬數據經量化后得到的離散的值,例如在計算機中用二進制代碼表示的字符、圖形、音頻與視頻數據。
4.總線(BUS)
總線如同城市的主干道一樣,可以連接單片機的各個部分,并進行數據的通信,通常情況下微控制器中的總線可以被分為三類:數據總線、地址總線和控制總線
數據總線:用于在處理器、存儲器和/o之間傳遞數據的雙向總線。
地址總線∶用于選擇處理器需要讀取/寫入到特定存儲器位置的總線。地址總線的數據流動方向是單向的,從處理器到內存和I/O。
控制總線∶由許多單獨的控制/信令線路組成。典型的信號包括讀/寫線路,用于隨數據總線指示數據行進的方向。
1.2傳感器技術
我們人體能夠感應到周圍的環境狀態,主要是因為我們有各種感覺器官
單片機想要獲取周圍的環境狀態,就要依靠各類傳感器
1.2.1 ADC/DAC
有些同學看到ADC可能DNA動了一下,但是這個ADC可不是游戲中的ADC
在單片機當中通常存在模擬外設ADC(模數轉換器,Analog to Digital Converter)和 DAC(數模轉換器,Digital to Analog Converter)來進行模擬信號和數字信號之間的轉換。
一個ADC接口通常可以作為輸入接口將外界的模擬信號轉換為數字信號在單片機內進行使用,例如接口的額定電壓為3.3v,則該接口可接受的電壓范圍為0~3.3V。若此ADC為2bit,則可以表示4個不同的電壓等級。
一個DAC接口與ADC接口的作用相反,可以將單片機內的數字信號輸出為一個模擬信號來進行使用,若不使用DAC對電壓進行分級,接口只能表示低電平或高電平。
1.2.2傳感技術
傳感技術同計算機技術與通信一起被稱為信息技術的三大支柱。從物聯網角度看,傳感技術是衡量一個國家信息化程度的重要標志。
傳感技術就是傳感器技術,可以感知周圍環境或者特殊物質,比如氣體感知、光線感知、溫濕度感知、人體感知等等,把模擬信號轉化成數字信號,給中央處理器處理。最終結果形成氣體濃度參數、光線強度參數、范圍內是否有人、溫度濕度數據等等。
我們常用的聲控燈,就是通過檢測周圍聲音變化來控制亮滅(部分也會加入光敏傳感器,實現黑夜才亮)
1.2.3傳感器分類
傳感器的功能常與人類5大感覺器官相比擬:
光敏傳感器——視覺
聲敏傳感器——聽覺。
氣敏傳感器——嗅覺。
化學傳感器――味覺
壓敏、溫敏、流體傳感器——觸覺
通常據其基本感知功能可分為熱敏元件、光敏元件、氣敏元件、力敏元件、磁敏元件、濕敏元件、聲敏元件、放射線敏感元件、色敏元件和味敏元件等十大類。
1.光敏傳感器
光敏傳感器是利用光敏元件將光信號轉換為電信號的傳感器,它的敏感波長在可見光波長附近,包括紅外線波長和紫外線波長。
2.溫度傳感器
溫度傳感器是指能感受溫度并轉換成可用輸出信號的傳感器。按照傳感器材料及電子元件特性,溫度傳感器可以被分為電阻傳感式和熱電偶傳感式兩類。
3.加速度傳感器
加速度傳感器是一種能夠測量加速度的傳感器,通常由質量塊、阻尼器、彈性元件、敏感元件和適調電路等部分組成。多數加速度傳感器是根據壓電效應的原理來工作的。
壓電效應:對于不存在對稱中心的異極晶體加在晶體上的外力除了使晶體發生形變以外,還將改變晶體的極化狀態,在晶體內部建立電場,這種由于機械力作用使介質發生極化的現象稱為正壓電效應。
4.脈搏傳感器
脈搏傳感器指的是用于檢測脈搏相關信號的傳感器。脈搏傳感器按照采集信號的方式主要可以分為壓電式、壓阻式、光電式三種。
二、感知層軟件技術
2.1操作系統概述
2.1.1操作系統是什么
操作系統(Operating System,簡稱OS)是管理計算機硬件與軟件資源的計算機程序。
在計算機中,操作系統是其最基本也是最為重要的基礎性系統軟件。簡單點說,操作系統是一種可以讓我們更方便地使用計算機各種能力的程序。
常見的操作系統有Windows、Linux、Android等
2.1.2操作系統發展史
1.最早的“操作系統”
穿孔紙帶/卡片——人工操作方式
程序員將事先已穿孔的紙帶(或卡片)裝入紙帶輸入機(或卡片輸入機),再啟動它們將紙帶(或卡片)上的程序和數據輸入計算機,最后啟動計算機運行。
2.批處理操作系統”
單道批處理系統:系統對作業的處理是成批進行的,但內存中始終保持一道作業。
多道批處理系統:允許多個程序同時進入內存并運行。
3.分時操作系統”
以時間片為單位輪流為各個用戶、作業服務,各個用戶可通過終端與計算機進行交互。
4.實時操作系統”
保證在一定時間限制內完成特定功能的操作系統。實時操作系統有軟實時系統和硬實時系統之分。
5.網絡操作系統/分布式探作系統”
網絡中各種資源進行共享以及各臺計算機之間進行通信,通過網絡實現不同計算機間的協作。
分布式操作系統與網絡操作系統本質上的不同之處在于分布式操作系統中,若干臺計算機協同完成同一任務。
2.2為什么需要物聯網操作系統
2.2.1物聯網終端開發面臨的挑戰
1.超大連接數量
不同的時代對操作系統的要求也不同,物聯網時代超大的連接數量與過去全然不同,這意味著需要新的物聯網操作系統。
2.繁雜的終端種類
對于物聯網發展而言,“碎片化”是主要的問題,其中芯片、傳感器、通信協議、應用場景千差萬別,“山頭林立”。比如無線通信標準,就有藍牙、Wi-Fi、ZigBee、PLC、Z-Wave、RF、Z-Wave、NFC、LiFi、NB一loT、LoRa等等。
開發人員需要為不同的設備分別進行適配,讓發量本就不多程序員更加憂愁。
3.多傳感器協同管理復雜
4.視頻場景下性能、功耗要求高
2.2.2終端智能化
通過上述例子可以看出,終端智能化是物聯網的基礎
而終端智能化的內涵就是:聯接智能、組網智能、管理智能
華為提供完整、標準化物聯網操作系統Liteos,加速終端智能化進程
2.3物聯網操作系統Huawei LiteOS概述
Huawei LiteOS基礎架構是1+N架構,即1個內核N個中間件。
Huawei LiteOS內核的特點是:
低功耗,高實時性,高穩定性
超小內核,基礎內核體積可以裁剪至不到10KB
支持動態加載、分散加載
支持功能靜態裁剪
Huawei Liteos是華為面向loT領域,構建的輕量級物聯網操作系統,遵循BSD-3開源許可協議,可廣泛應用于智能家居、個人穿戴、車聯網、城市公共服務、制造業等領域。
BSD協議全稱“Berkeley Software Distribution”,是五大開源許可協議之一。
2.4 Huawei LiteOS的內核
Huawei LiteOs Kernel是操作系統內核,其中基礎內核是最精簡的 HuaweiLiteOs操作系統,它包括任務管理、內存管理、時間管理、通信機制、中斷管理、隊列管理、事件管理、定時器等操作系統基礎組件,可以單獨運行。同時為了更好地支持低功耗場景,支持tickless機制。
Tickless低功耗機制是當前小型RTOS所采用的通用低功耗方法。
RTOS:實時操作系統,常見的實時操作系統有uc/os-ii、FreeRTOS、RT-Thread
2.4.1 Huawei LiteOS任務管理
任務是競爭系統資源的最小運行單元。任務可以使用或等待CPU、使用內存空間等系統資源,并獨立于其它任務運行。
Huawei LiteOs的任務模塊提供任務的創建、刪除、延遲、掛起、恢復等功能,以及鎖定和解鎖任務調度。任務的調度機制是基于優先級搶占式的調度機制,同時支持同優先級的任務基于時間片輪轉調度方式。
Huawei LiteOs的任務一共有32個優先級(0-31),最高優先級為0,最低優先級為31;高優先級的任務可打斷低優先級任務,低優先級任務必須在高優先級任務阻塞或結束后才能得到調度。
時間片輪轉調度是一種最古老,最簡單,最公平且使用最廣的算法。每個進程被分配一時間段,稱作它的時間片,即該進程允許運行的時間。
任務管理接口
2.4.2 Huawei LiteOS內存管理
內存管理模塊管理系統的內存資源,主要負責內存的初始化、分配及釋放。
Huawei LiteOs的內存管理提供靜態內存和動態內存兩類算法,靜態分配為membox,動態內存分配有:bestfit,bestfit_little和tlsf。此外,還提供內存統計、內存越界檢測功能。
1.動態內存管理
動態內存:在動態內存池中分配用戶指定大小的內存塊。
所有的內存塊用鏈表鏈接在一起(TLSF有多個鏈表),在內存釋放的時候,自動合并前后空閑內存。每塊內存塊開頭保存有管理結構(即便被分配出去的內存塊也有)。
優點
按需分配,分配大塊內存時比較劃算。
缺點
分配小塊內存時會因為塊開頭的管理結構導致內存浪費。內存池中可能出現碎片。
性能開銷稍大。
2.靜態內存管理
靜態內存:在靜態內存池中分配用戶初始化時預設(固定)大小的內存塊。一般也稱為對象池。本質是一個對象數組。
優點
性能較動態內存管理高。內存分配和釋放效率高,每塊被分配的內存塊沒有管理結構。靜態內存池中無內存碎片。
缺點
只能分配固定大小的內存塊,不能按需申請。不適合管理大對象。
內存管理接口
2.4.3 Huawei LiteOS中斷管理
什么是中斷呢?我記得老師舉過一個很形象的例子。
假如你正在燒水,這時你聽到有人敲門(中斷請求),這時你轉身去開門(中斷響應),開門后發現是剛買的快遞到了,你簽收快遞(中斷處理),簽收完后你又繼續回去燒水(中斷返回)。
中斷是指出現需要時,CPU暫停執行當前程序,轉而執行新程序的過程。
Huawei LiteoS支持對中斷不接管與中斷接管兩種方式。
Huawei LiteOS中斷模塊支持中斷初始化、中斷創建、開/關中斷、恢復中斷、中斷使能、中斷屏蔽等功能。
當中斷產生時,處理機將按如下的順序執行:
保存當前處理機狀態信息
載入異常或中斷處理函數到PC寄存器
把控制權轉交給處理函數并開始執行
當處理函數執行完成時,恢復處理器狀態信息
從異常或中斷中返回到前一個程序執行點
2.4.4 Huawei LiteOS任務間通信
系統運行時往往會存在多個任務,這些任務之間進行協調就需要任務間通信。
Huawei LiteOs的多任務同步、互斥及通信主要包括:
隊列
隊列又稱消息隊列,是一種常用于任務間通信的數據結構,實現了接收來自任務或中斷的不固定長度的消息,并根據不同的接口選擇傳遞消息是否存放在自己空間。
Huawei LiteOs的消息隊列支持隊列的創建、刪除、發送和接收功能。
事件
事件是一種實現任務間通信的機制,可用于實現任務間的同步,但事件通信只能是事件類型的通信,無數據傳輸。
事件不與任務相關聯,事件相互獨立,一個32位的變量,用于標識該任務發生的事件類型,其中每一位表示一種事件類型(0表示該事件類型未發生、1表示該事件類型已經發生),一共31種事件類型(第25位保留)。
一個任務可以等待多個事件的發生:
1.可以是任意一個事件發生時喚醒任務進行事件處理
2.也可以是幾個事件都發生后才喚醒任務進行事件處理
3.也可以是多次向任務發送同一事件類型,等效于只發送一次。
信號量
信號量( Semaphore )是一種實現任務間通信的機制,實現任務之間同步或臨界資源的互斥訪問。常用于協助一組相互競爭的任務來訪問臨界資源。
信號量允許多個任務在同一時刻訪問同一資源,但會限制同一時刻訪問此資源的最大任務數目。訪問同一資源的任務數達到該資源的最大數量時,會阻塞其他試圖獲取該資源的任務,直到有任務釋放該信號量。
互斥鎖
互斥鎖又稱互斥型信號量,是一種特殊的二值性信號量,用于實現對共享資源的獨占式處理。任意時刻互斥鎖的狀態只有兩種,開鎖或閉鎖。
當有任務持有時,互斥鎖處于閉鎖狀態,這個任務獲得該互斥鎖的所有權。
當該任務釋放它時,該互斥鎖被開鎖,任務失去該互斥鎖的所有權。當一個任務持有互斥鎖時,其他任務將不能再對該互斥鎖進行開鎖或持有。
2.4.5 Huawei LiteOS時間管理
時間管理以系統時鐘為基礎。時間管理提供給應用程序所有和時間有關的服務。就像是北京時間一樣,給我們一種有關時間的標準。
系統時鐘是由定時/計數器產生的輸出脈沖觸發中斷而產生的,一般定義為整數或長整數。輸出脈沖的周期叫做一個“時鐘滴答”。系統時鐘也稱為時標或者Tick。一個Tick的時長可以靜態配置。
用戶是以秒、毫秒為單位計時,而芯片CPU的計時是以Tick為單位的,當用戶需要對系統操作時,例如任務掛起、延時等,輸入秒為單位的數值,此時需要時間管理模塊對二者進行轉換。
2.4.6 Huawei LiteOS定時器
定時器分為軟件定時器和硬件定時器。
硬件定時器受硬件的限制,數量上不足以滿足用戶的實際需求,因此為了滿足用戶需求,提供更多的定時器,Huawei LiteOs操作系統提供軟件定時器功能。
軟件定時器,是基于系統Tick時鐘中斷且由軟件來模擬的定時器,當經過設定的Tick時鐘計數值后會觸發用戶定義的回調函數。定時精度與系統Tick時鐘的周期有關。軟件定時器擴展了定時器的數量,允許創建更多的定時業務。
軟件定時器分為單次模式和周期模式。
2.5 Huawei LiteOS的中間件
2.5.1 Huawei LiteOS SDK
Liteos SDK是Huawei LiteOs軟件開發工具包( Software Development Kit),其包括端云互通組件,FOTA升級,JS引擎、傳感器框架等內容。
LiteOS SDK由互聯組件和增強組件兩部分組成,互聯組件負責實現云端互通能力,增強組件配套華為loT云平臺OceanConnect為行業伙伴打造的電信級loT通用能力。
2.5.2 Huawei LiteOS端云互通組件
LiteOs SDK端云互通組件作為獨立的組件,不依賴特定的芯片架構和網絡硬件類型,可以輕松地集成到各種通信模組上,如NB-loT模組、eMT模組、Wi-Fi模組、GSM模組、以太網硬件等。
端云互通組件提供端云協同能力,集成了LwM2M、CoAP、mbed TLS、LwIlP等全套loT互聯互通協議棧。
2.5.3 Huawei LiteOS互聯框架
提供IP、TCP/UDP、CoAP完整協議棧,降低開發門檻,實現互聯。提供可靈活配置的應用Profile,實現不同設備的互通。
2.5.4 Huawei LiteOS互聯框架
提供多種傳感算法,應用無需開發,直接調用
抽象不同類型傳感器接口,屏蔽硬件細節,實現即插即用。
2.5.5 Huawei LiteOS安全框架
2.6 Huawei LiteOS API
開放的API屏蔽底層差異,讓應用開發者只需關注上層應用開發。友好的兼容性使得已熟悉在 Linux系統上開發應用的開發者,能夠非常平滑的切換到Huawei LiteOS 系統上開發,同時由于Huawei LiteOS 系統的精簡內核特性,使得開發者更容易理解內核。
例如基于端云互通組件提供的API,開發者通過簡單幾個步驟就能快速地實現與華為loT平臺OceanConnect安全可靠連接。
三、通信模組開發介紹
在物聯網中,對通信模組的調測、控制等主要依賴AT指令。
AT指令就像你和其他人之間約定好的暗號一樣,發送特定的暗號,對方會回應對應的動作。
3.1什么是AT指令
AT命令是用來控制TE ( Terminal Equipment,終端設備)和MT( Mobile Terminal,移動終端)之間交互的規則。
3.2AT指令分類
AT命令中的4種命令:
設置命令 =XX 用來設置AT命令中的屬性
測試命令 =? 用來顯示AT命令設置的合法參數值有哪些
查詢命令 ? 用來查詢當前AT命令設置的屬性值
執行命令 執行AT命令(不需要參數,例如查詢版本號等)
3.1.1 NB-IoT指令集
3.1.2 Wi-Fi指令集
Wi-Fi由于不涉及無線及核心網、SIM卡等運營商業務,故與NB-IoT指令有所不同。
3.1.3 華為認證模組AT指令
3.2通信模組對接流程
3.2.1 NB-loT終端對接流程
終端對接流程
終端上電,執行"AT+NRB"復位終端。如果返回OK,表示終端正常運行。
執行“AT+CFUN=O”關閉功能開關。如果執行成功,返回OK。
執行“AT+NTSETID=1,設備ID"設置設備ID。設備ID為IMEl號,如果執行成功,返回OK,詳細可參考附錄。
執行"AT+NCDP=IP,PORT”設置需要對接IOT平臺的地址,端口為5683。如果執行成功,返回OK。
執行"AT+CFUN=1開啟功能開關。如果執行成功,返回OK。
執行“AT+NBAND=頻段”設置頻段。如果執行成功,返回OK。
執行“AT+CGDCONT=1,‘IP’,‘APN’ "設置核心網APN。如果執行成功,返回OK,核心網APN可聯系運營商(與運營商網絡對接)或者OpenLab負責人(OpenLab網絡對接)進行獲取。
執行“AT+CGATT=1 ”進行入網。如果執行成功,返回OK。
執行"AT+CGPADDR"查詢終端是否獲取到核心網分配的地址,如果獲取到地址,表示終端入網成功。
執行“AT+NMGS=數據長度,數據"發送上行數據,如果上行數據發送成功,返回OK。
如果loT平臺向終端發送了下行數據,可以通過“AT+NMGR"進行獲取。
3.2.2 Wi-Fi終端對接流程
終端對接流程
終端上電,執行“AT+CWMODE=3”復位終端。如果返回OK,表示終端已配置Wi-Fi模式。
執行“AT+CWJAP= ‘SSID’, ‘password’ ”聯接路由器。如果執行成功,返回OK。
執行"AT+CIFSR”查詢ESP8266設備的IP地址。如果執行成功,返回OK,詳細可參考附錄。
執行"AT+CIPSTART= ‘TCP’,'IP,‘PORT’ ”設置需要對接IOT平臺的地址,端口為5683。如果執行成功,返回OK。
執行"AT+CIPSEND=”開始執行發送數據命令,返回“>”輸入數據。如果執行成功,返回SEND OK。
總結
本次文章主要介紹了物聯網技術中感知層的技術介紹,下一次將會簡單介紹一下華為物聯網的解決方案。
近期有一場HCIA-IoT的免費訓練營活動,參與活動不僅可以拿獎品、學習HCIA-IoT的考試內容,還可以獲得價值200美元的HCIA的免費考試券,簡直棒極了!
活動報名鏈接
這是本系列第五篇文章,我將持續分享自己學習HCIA-IoT與參加考試的心得,敬請關注,謝謝大家!
如果您喜歡我的文章,請不要吝嗇您的贊賞。
如果您不喜歡我的文章,請您留下寶貴的意見。
AI IoT 云社區 開發者 活動
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。