最近我國自研的操作系統接連開源,先是MiniGui(Github地址:https://github.com/VincentWei/minigui),可能現在提起MiniGui大家已經比較陌生了。
不過對于筆者-曾經的CSDN嵌入式論壇版主而言,MiniGui是個如雷貫耳的名字,在十幾年前MiniGui和WINCE是各個各種開發板的標配,當時論壇上也有各種關于MiniGui移植及開發的帖子。
但是由于當時的嵌入式系統多用來制作手持式PDA,車載導航儀等設備,所以安卓出現后迅速占領了上述市場,MiniGUI等嵌入式操作系統逐漸沒落。
但是我們整理互聯網發展的脈絡可以看到,內容的不斷豐富與終端的不斷擴展是兩條主線,隨著網上數據量的持續爆炸性增長,今后新增的流量肯定主要來自于對于萬物互聯的紅利。
而與傳統互聯網內容+用戶的模式不同,物聯網則是場景+用戶的模式,誰能整合場景誰能笑到最后。所以之后的嵌入式系統又迎來了生命中的第二個春天。
巨頭們的布局
騰訊在三天前正式發布了其物聯網終端的操作系統TinyOS(Github地址:https://github.com/Tencent/TencentOS-tiny),其系統架構圖如下:
目前看其內核部分已經開發完成,并已經完全開源。雖然從其從tinyos內核的代碼來看(詳見https://blog.csdn.net/BEYONDMA/article/details/101355221),還是為物聯終端做了一定優化與裁減的,不過從下面的場景圖來看,騰訊其實醉翁之意不在酒,以操作系統為契機入局物聯網的相關鏈條已經規劃完整。
而且從比操作系統發布還早幾天就掛在淘寶上的開發板來看,更是說明騰訊對于旗下云平臺能夠整合物聯場景的巨大野心。
AliOS Thing3.0發布
云棲大會第三天,阿里不出意外的拿出了AliOS Things 3.0(Github地址https://github.com/alibaba/AliOS-Things/tree/rel_3.0.0),與TencentOS Tiny一樣這款OS也是與阿里云平臺無縫對接的,而且它的內核還直接支持了自家的AI芯片,提前布局AI+物聯網。
由于AliOS Things已經開源兩年有余,所以其開發者體驗相對較好,他們的IDE是基于VSCODE的,筆者已經下單他們的開發板了,后續親測OS后再發體驗。
可見巨頭的邏輯就是要整合物聯網時代的場景,他們的OS都是免費的,而且技術支持也強,不過巨頭就是要做物聯時代的ANDROID,最終一統天下。
老牌嵌入式操作系統的選擇
MiniGui做為已經存在了20多年的嵌入式操作系統,其架構圖如下:
從底至上,MiniGUI 由如下幾個模塊組成:
圖形抽象層(Graphics Abstraction Layer,GAL):
圖形抽象層將來自不同操作系統或設備的圖形接口進行抽象,為 MiniGUI 上層提供統一的圖形接口。在圖形抽象層內,包含有針對 Linux FB 設備、eCos LCD 設備等的軟件組成部分。
這些軟件組成部分通過調用底層設備的接口來實現具體的圖形抽象層操作,如打開設備、設置分辨率及顯示模式、關閉設備等。
我們將這些用于適配圖形抽象層接口的軟件組成部分稱為“引擎(engine)”,其概念和操作系統中的設備驅動程序類似。
輸入抽象層(Input Abstraction Layer,IAL):
和 GAL 類似,輸入抽象層將 MiniGUI 涉及的所有輸入設備,如鍵盤(keyboard)、小鍵盤(keypad)、鼠標(mouse)、觸摸屏(touch screen)等抽象了出來,為上層提供一致的接口。要支持不同的鍵盤、觸摸屏或者鼠標接口,則通過為 IAL 編寫不同的輸入引擎實現。
MiniGUI 通過 IAL 及其輸入引擎,提供對 Linux 控制臺(鍵盤及鼠標)、觸摸屏、遙控器、小鍵盤等輸入設備的支持。
圖形設備接口(Graphics Device Interfaces,GDI):
該模塊基于圖形抽象層為上層應用程序提供圖形相關的接口,如繪制曲線、輸出文本、填充矩形等等。圖形設備接口中含包含其他比較獨立的子模塊,如字體字符集(font and charset)支持、圖像(image)支持等。
消息處理模塊(Messaging Module):
該模塊在輸入抽象層基礎上,實現了 MiniGUI 的消息處理機制,為上層提供了完備的消息管理接口。
眾所周知,幾乎所有的GUI 系統本質上都是事件驅動的,系統自身的運行,以及GUI 應用程序的運行,都依賴于消息處理模塊。
多窗口處理模塊(Windowing Module)和控件(Control 或 Widget):
基于圖形設備接口和消息處理模塊,MiniGUI 實現了多窗口處理模塊。該模塊為上層應用程序提供了創建主窗口和控件的基本接口,并負責維護控件類。
控件類是用來實現控件代碼重用的重要概念,利用控件類(control class),我們可以創建屬于某個控件類的多個控件實例(instance),從而讓這些控件實例使用同一個控件類的代碼,這樣,我們就實現了類似 C++ 那樣的類和實例概念,從而可以最大程度上重復利用已有代碼,并提高軟件的可維護性。
MiniGUI 的控件模塊實現了常見的 GUI 控件,如靜態框、按鈕、編輯框、列表框、下拉框等等。
外觀支持(Look and Feel):
這個模塊是 MiniGUI V3.0 提供給上層應用程序的接口,可用來定制 MiniGUI 窗口、控件的繪制。
在 MiniGUI V3.0 之前的版本中,對主窗口和控件的定制能力,還沒有被抽離出來形成獨立的模塊,但我們仍然可以通過配置選項讓 MiniGUI 的主窗口、控件具有三種顯示風格,分別是:類似 PC 的三維風格(PC3D)、平板風格(FLAT)、流行風格(FASHION)。
在 MiniGUI 3.0 中,主窗口和控件的外觀可完全由應用程序自行定制,在創建主窗口或者控件時,指定外觀渲染器(renderer)的名稱,就可以讓主窗口或者控件具有各自不同的外觀。
可以看到MiniGUI從創立伊始就放棄了對于RTOS內核的編寫,直接基于linux等內核來做封裝。簡單聊兩句基于MiniGUI的圖形應用開發。
typedefstruct _MSG { HWND hwnd;int message; WPARAM wParam; LPARAM lParam;#ifdef _LITE_VERSIONunsignedint time;#elsestructtimevaltime;#endifPOINT pt;#ifndef _LITE_VERSIONvoid* pAdd;#endif }MSG;typedef MSG* PMSG;
可以看到其對于消息的定義幾乎與WINDOWS一致,其建立窗體等操作也幾乎與WINDOWS一樣。所以MiniGUI的設計有很大程序是為降低嵌入式系統圖形界面開發難度而產生的。
國產實時操作系統內核的先驅RTthread
提到咱們國產的loT操作系統RTthread也是一個無論如何也繞不過去的標志,如果RTthread在06年初就發布了第一版,而且經過了這十幾年的上億臺設備裝機的技術沉淀,RTthread的社區也已經儼然發展成為國內最強的嵌入式社區了,筆者剛剛到他們的論壇上逛了一圈,真的是強手如云,大咖云集。
具體內核相關知識后續會再發文介紹這里也就不再贅述了。而且最新的消息顯示MiniGUI開始支持RTthread的內核了,可見傳統的嵌入式操作系統廠商的策略是要盡量保持生態的多元化,抱團取暖。
HybridOS的開源計劃
最近MiniGUI的飛漫軟件又官宣了他們的HybridOS開源計劃,而根據目前的材料看HybridOS最大的看點是要用HTML來統一UI的開發,這與之前使用WIN32的設計來統一UI開發的邏輯如出一轍。
我們知道由于物聯網終端真的是不一而足,與手機終端完全不同,其不同終端的碎片化需求太多太復雜,比如,有的智能燈泡要藍牙即可,而智能空調可能就要有Wi-Fi了。
而我們金融行業要做智能合約可能對于終端的算力又有一定的要求,這樣碎片化的場景,由于Android硬件設備的要求門檻較高,就不太適合了, 而直接用Linux裁減,這對于人才的要求又太高。
所以與騰訊等巨頭整合全場景的目標不同,MiniGUI的背后其是保持生態多樣性的邏輯,他的目標是降低開發門檻,避免初創公司必須選擇鴻蒙或者TinyOS這種大廠的操作系統。
讓場景的提供方可以通過較低成本驗證自身的想法,而避免從一開始就走上巨頭們早已畫好的圓圈。
在他們的官宣當中對于其后續要發布的HybridOS物聯網操作系統有如目標:
1. HybridOS 的設備端系統基于 Linux 內核,充分利用 Linux 內核生態,降低各種驅動程序的開發難度以及各種協議棧的支持難度,從而降低開發成本。
2. 和基于 RTOS(實時操作系統)技術發展而來的物聯網操作系統(如RT-Thread、LiteOS)相比,HybridOS 更傾向于運行在具有更高硬件配置的智能物聯網設備上,而不是小型的單功能物聯網設備上,后者的硬件配置往往有限。
3. HybridOS 不僅僅運行在智能物聯網設備中,它同時還提供了針對云端以及客戶端的標準框架和編程接口,為開發者提供了從設備到云再到客戶端的完整軟件棧和協議棧。在未來,HybridOS 還計劃統一客戶端和設備端上的 App 開發接口。
4. HybridOS 將基于區塊鏈技術為物與物之間的通訊提供一個全新的實現方法。在 HybridOS定義的實現方法下,所有的數據都帶有不可篡改的數字簽名以及時間戳,而所有數據的傳輸和存儲都可加密。這將從根本上提高物聯網的安全性。
后記
我們可以看到巨頭的邏輯是要讓其它公司免費使用其OS上車,然后接入其loT云平臺成者直接收購無縫整合,敗者自生自滅,從而將自己立于不敗之地,而傳統的嵌入式公司邏輯則是降低OS的使用開發門檻,讓物聯網生態鏈上的企業能有自主選擇。也讓我們拭目以待,物聯網時代能否產生新的巨頭。
-
嵌入式系統
+關注
關注
41文章
3618瀏覽量
129642 -
物聯網
+關注
關注
2912文章
44897瀏覽量
375801 -
代碼
+關注
關注
30文章
4821瀏覽量
68890
發布評論請先 登錄
相關推薦
評論