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