TA能讓你家的那些「啞」終端都「活」過來

2021-10-09 03:41:06 字數 3078 閱讀 3579

提到作業系統,第一時間我們就會想到執行在電腦上的windows,想起執行在手機上的安卓。這些系統直接執行在「裸機」裝置的最低層,搭建起其他軟體、應用執行的環境與基礎。作業系統的興起、完善,促成了軟體與應用的興起,鑄就了輝煌的pc時代與移動網際網路時代。

談到物聯網,最大的問題之一就在於溝通,不同裝置、不同標準之間的溝通、軟體與硬體的溝通。如何解決這種 「溝通」問題,作業系統變得尤為重要。物聯網作業系統排程「物體」本身,對「物體」的排程過程通過層層分發、層層下達,通過排程雲、邊、端,不同層級中不同裝置的計算資源而實現。因此,物聯網中的作業系統涉及到晶元層、終端層、邊緣層、雲端層等多個層面

當前很多物聯網裝置已經從傳統意義上的「啞」裝置成功轉型為智慧型化裝置。那麼乙個裝置從「啞」到智慧型化,必須面對兩個問題:資源管理、裝置的互聯互通。而在這物聯網作業系統百家爭鳴,百花齊放的時代,華為liteos物聯網作業系統要如何破浪前進?

liteos資源管理:麻雀雖小,五臟俱全

說到物聯網作業系統,不得不提物聯網的核心,乙個核心要具備尺寸伸縮性強、實時性必須足夠強、架構可擴充套件性強、足夠安全和可靠、低功耗節能省電等優良特質。比如,乙個極端的情況下,核心尺寸必須維持在10k以內,以支撐記憶體和cpu效能都很受限的感測器。這要求核心需具備完善的任務排程、記憶體管理、本地儲存、複雜的網路協議等功能,以滿足高配置的智慧型物聯網終端的要求。

liteos

核心的資源管理,可分為四個部分:時間管理、儲存管理、硬體管理、同步通訊資源。在liteos的最底層,實現的是對各類硬體的乙個總體抽象,這主要是解決liteos和cpu體系的耦合。對於作業系統核心而言,和cpu的耦合主要在於任務的排程、異常的處理等,這和每個cpu體系架構強相關。liteos的任務排程,正是基於cpu架構而非單個特定的cpu,目前已經支援armv6m、armv7m、risic-v等,這就意味著,liteos可以在不同的mcu廠商的產品上做到無縫移植,降低裝置廠商切換硬體的難度。

一般的記憶體管理都是採用的雙鏈表模式,按需分配。那麼這個時候就會帶來乙個問題,如何管理這個雙向鍊錶呢?普通的雙向鍊錶,對查詢比較麻煩,有序的雙向鍊錶,對排序的時間存在不確定性,這會給開發者帶來困擾。為了降低開發者對時間搜尋的不確定性,liteos採用了tlsf以及基於紅黑樹的二叉搜尋樹,這兩個方法將會大大的降低我們搜尋的複雜度。當記憶體經過多次的申請和釋放之後,組織空閒記憶體的線性鍊錶可能很長,在這種情況下如果去搜尋乙個匹配的記憶體可能很費勁,因為你不知道最合適的內存在什麼位置(有可能在鍊錶尾部)。而採用tlsf的方式,通過計算map的位置,可以一次命中,這樣就讓開發者查詢一塊空閒的記憶體時間變得更加確定。

同時,liteos的中斷管理、驅動等功能,還給傳統裸機開發者帶來更好的開發體驗。例如中斷管理,我們知道在mcu上,串列埠的數量比較多,每個串列埠都可能分配乙個中斷號,如果是裸機開發者,就不得不寫很多中斷服務函式掛載到中斷表中。而liteos的中斷管理,開發者可以通過採用註冊的方式,傳遞相同的服務函式,只需引數不同即可,這就意味著開發者可以實現串列埠中斷函式的最大復用,同樣的道理,還可以應用到驅動程式中。

liteos互聯互通:有趣的靈魂萬里挑一,做開發者鍾愛的皮囊——提供快速整合和統一的協議

liteos

的資源管理,是為滿足開發者對資源管理的訴求,解決物聯網硬體上的碎片化而生。就拿tcpip通訊來說,實現方式就千奇百怪,有使用蜂窩模組自帶的socket、有使用ppp撥號、有使用wiif模組、有使用lwip這樣的軟體協議棧的。不是說這樣不好,畢竟它們都是有趣的靈魂;但是對於開發者而言,會帶來乙個問題——為了保證相容性,他們不得不基於tcpip進行開發,從而導致**出現各種各樣的巨集開關,到最後這種**幾乎沒有辦法維護。

為了解決開發者委曲求全的適配各種方式帶來毀滅性的維護問題,liteos提出元件功能標準化。不論你是wifi模組還是lte模組,還是其他的軟體棧,只要採用統一的標準api之後,各種各樣形態的元件,就像是選單上的乙個選項,只需要打勾選擇想要即可。liteos作業系統從核心到網際網路協議的抽象層框架,構建統一的api標準。基於這個標準,開發者可以快速將協議或者其他元件插入到框架,幫助開發者復用已有能力,也加快了整合的效率。

liteos一鍵上雲:採用積木式的元件和組裝模式,更靈活輕便

在華為雲iot的雲管端戰略中,liteos承擔著雲服務落地的關鍵角色,因此如何更好的、更合理的引導終端裝置快速的上雲是liteos的主要目標。整體看,liteos可以分作兩部分:

原則上,liteos的各個模組在開發設計過程中,可以做到模組解耦、可裁剪、可配置。從這可以看出liteos在開發整體上,可以說是屬於 「積木型開發」,開發者像搭建積木一樣簡單來使用,可以按照自己的實際應用場景,選擇不同的解決方案,從而解決物聯網碎片化的問題。

但用原始的小積木搭建乙個滿意的作品,也要有設計的乙個過程,包括選擇何種協議,使用哪個元件。事實上,物聯網裝置存在乙個「老大難」的問題——儲存資源、計算資源有限。例如,tls除了要占用大幾十kb的rom和ram以外,還非常消耗我們的計算資源;在乙個200m主頻的mcu在echda模式下,握手協議過程都需要接近10秒鐘,對於那些低速裝置可能會更長。

在這種情況下,如果告訴你,有個模組,通過簡單的at指令就可以直接和華為雲iot互通,你會不會很驚喜呢?華為liteos將互聯互通功能整合到了模組內部,豐富自運算資源、儲存資源。裝置廠家通過簡單的at指令就可以呼叫liteos的互聯api,省卻了移植、配置等煩惱,再也不用考慮和雲對接的底層流程和詳細細節。

關於liteos也許你還好奇

linux

系統作為目前物聯網裝置中應用最廣泛的作業系統,liteos與linux有什麼區別?

和其他物聯網作業系統對比,我們liteos的靠譜(優勢)在**呢?

採用華為liteos系統和用其他系統接入華為雲lot平台是否有區別?

未來,liteos會有哪些新特性?

☟☟☟【devrun開發者沙龍直播】攻城獅與攻城獅plus的硬核對話,liteos專場

你家的WiFi訊號強嗎?

前段時間家裡換了上網 之前用的兩兆實在不夠用。無線路由器放客廳,但是房門一關,房間的訊號就弱了很多。即使下了wifi共享精靈9www.wifigx.com0,訊號也不是特別強。這讓我很苦惱。沒辦法了,得公升級上網 了。不過藉此也詢問了有哪些因素影響了 wifi 訊號?無線路由器放客廳,其實不只是房間...

金融中TA的概念

ta是transfer agent縮寫,通常稱為 登記過戶 ta系統 登記過戶系統 在乙隻金融產品生命週期中,最重要的作用有 1 管理產品 客戶的份額 2 收益計算。其他功能 賬戶開戶 銷戶 客戶資料修改 賬戶凍結 解凍 賬戶登記 取消登記 認購 申購 贖回 轉委託 非交易過戶 產品轉換 修改分紅方...

ant design pro最常用的元件Table

前段開發心得體會 基於react 開發的 import from antd 從 ant design 中引入table元件 沒有 key 值 對應 解決辦法 rowkey bordered 邊框 loading columns 表頭 datasource 表資料 pagination 頁尾 rows...