電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 2120|回復(fù): 0
收起左側(cè)

嵌入式開(kāi)發(fā)自學(xué)步驟_嵌入式系統(tǒng)又迎來(lái)了生命中的第二個(gè)春天

[復(fù)制鏈接]

2607

主題

2607

帖子

7472

積分

高級(jí)會(huì)員

Rank: 5Rank: 5

積分
7472
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-7-22 10:54:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
嵌入式開(kāi)發(fā)自學(xué)步驟_嵌入式系統(tǒng)又迎來(lái)了生命中的第二個(gè)春天,   

最近我國(guó)自研的操作系統(tǒng)接連開(kāi)源,先是MiniGui(Github地址:https://github.com/VincentWei/minigui),可能現(xiàn)在提起MiniGui大家已經(jīng)比較陌生了。

不過(guò)對(duì)于筆者-曾經(jīng)的CSDN嵌入式論壇版主而言,MiniGui是個(gè)如雷貫耳的名字,在十幾年前MiniGui和WINCE是各個(gè)各種開(kāi)發(fā)板的標(biāo)配,當(dāng)時(shí)論壇上也有各種關(guān)于MiniGui移植及開(kāi)發(fā)的帖子。

但是由于當(dāng)時(shí)的嵌入式系統(tǒng)多用來(lái)制作手持式PDA,車(chē)載導(dǎo)航儀等設(shè)備,所以安卓出現(xiàn)后迅速占領(lǐng)了上述市場(chǎng),MiniGUI等嵌入式操作系統(tǒng)逐漸沒(méi)落。

但是我們整理互聯(lián)網(wǎng)發(fā)展的脈絡(luò)可以看到,內(nèi)容的不斷豐富與終端的不斷擴(kuò)展是兩條主線(xiàn),隨著網(wǎng)上數(shù)據(jù)量的持續(xù)爆炸性增長(zhǎng),今后新增的流量肯定主要來(lái)自于對(duì)于萬(wàn)物互聯(lián)的紅利。

而與傳統(tǒng)互聯(lián)網(wǎng)內(nèi)容+用戶(hù)的模式不同,物聯(lián)網(wǎng)則是場(chǎng)景+用戶(hù)的模式,誰(shuí)能整合場(chǎng)景誰(shuí)能笑到最后。所以之后的嵌入式系統(tǒng)又迎來(lái)了生命中的第二個(gè)春天。
巨頭們的布局

騰訊在三天前正式發(fā)布了其物聯(lián)網(wǎng)終端的操作系統(tǒng)TinyOS(Github地址:https://github.com/Tencent/TencentOS-tiny),其系統(tǒng)架構(gòu)圖如下:

  

目前看其內(nèi)核部分已經(jīng)開(kāi)發(fā)完成,并已經(jīng)完全開(kāi)源。雖然從其從tinyos內(nèi)核的代碼來(lái)看(詳見(jiàn)https://blog.csdn.net/BEYONDMA/article/details/101355221),還是為物聯(lián)終端做了一定優(yōu)化與裁減的,不過(guò)從下面的場(chǎng)景圖來(lái)看,騰訊其實(shí)醉翁之意不在酒,以操作系統(tǒng)為契機(jī)入局物聯(lián)網(wǎng)的相關(guān)鏈條已經(jīng)規(guī)劃完整。

  

而且從比操作系統(tǒng)發(fā)布還早幾天就掛在淘寶上的開(kāi)發(fā)板來(lái)看,更是說(shuō)明騰訊對(duì)于旗下云平臺(tái)能夠整合物聯(lián)場(chǎng)景的巨大野心。
AliOS Thing3.0發(fā)布

云棲大會(huì)第三天,阿里不出意外的拿出了AliOS Things 3.0(Github地址https://github.com/alibaba/AliOS-Things/tree/rel_3.0.0),與TencentOS Tiny一樣這款OS也是與阿里云平臺(tái)無(wú)縫對(duì)接的,而且它的內(nèi)核還直接支持了自家的AI芯片,提前布局AI+物聯(lián)網(wǎng)。

由于A(yíng)liOS Things已經(jīng)開(kāi)源兩年有余,所以其開(kāi)發(fā)者體驗(yàn)相對(duì)較好,他們的IDE是基于VSCODE的,筆者已經(jīng)下單他們的開(kāi)發(fā)板了,后續(xù)親測(cè)OS后再發(fā)體驗(yàn)。

可見(jiàn)巨頭的邏輯就是要整合物聯(lián)網(wǎng)時(shí)代的場(chǎng)景,他們的OS都是免費(fèi)的,而且技術(shù)支持也強(qiáng),不過(guò)巨頭就是要做物聯(lián)時(shí)代的ANDROID,最終一統(tǒng)天下。
老牌嵌入式操作系統(tǒng)的選擇

MiniGui做為已經(jīng)存在了20多年的嵌入式操作系統(tǒng),其架構(gòu)圖如下:

  

從底至上,MiniGUI 由如下幾個(gè)模塊組成:

圖形抽象層(Graphics Abstraction Layer,GAL):

圖形抽象層將來(lái)自不同操作系統(tǒng)或設(shè)備的圖形接口進(jìn)行抽象,為 MiniGUI 上層提供統(tǒng)一的圖形接口。在圖形抽象層內(nèi),包含有針對(duì) Linux FB 設(shè)備、eCos LCD 設(shè)備等的軟件組成部分。

這些軟件組成部分通過(guò)調(diào)用底層設(shè)備的接口來(lái)實(shí)現(xiàn)具體的圖形抽象層操作,如打開(kāi)設(shè)備、設(shè)置分辨率及顯示模式、關(guān)閉設(shè)備等。

我們將這些用于適配圖形抽象層接口的軟件組成部分稱(chēng)為“引擎(engine)”,其概念和操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序類(lèi)似。

輸入抽象層(Input Abstraction Layer,IAL):

和 GAL 類(lèi)似,輸入抽象層將 MiniGUI 涉及的所有輸入設(shè)備,如鍵盤(pán)(keyboard)、小鍵盤(pán)(keypad)、鼠標(biāo)(mouse)、觸摸屏(touch screen)等抽象了出來(lái),為上層提供一致的接口。要支持不同的鍵盤(pán)、觸摸屏或者鼠標(biāo)接口,則通過(guò)為 IAL 編寫(xiě)不同的輸入引擎實(shí)現(xiàn)。

MiniGUI 通過(guò) IAL 及其輸入引擎,提供對(duì) Linux 控制臺(tái)(鍵盤(pán)及鼠標(biāo))、觸摸屏、遙控器、小鍵盤(pán)等輸入設(shè)備的支持。

圖形設(shè)備接口(Graphics Device Interfaces,GDI):

該模塊基于圖形抽象層為上層應(yīng)用程序提供圖形相關(guān)的接口,如繪制曲線(xiàn)、輸出文本、填充矩形等等。圖形設(shè)備接口中含包含其他比較獨(dú)立的子模塊,如字體字符集(font and charset)支持、圖像(image)支持等。

消息處理模塊(Messaging Module):

該模塊在輸入抽象層基礎(chǔ)上,實(shí)現(xiàn)了 MiniGUI 的消息處理機(jī)制,為上層提供了完備的消息管理接口。

眾所周知,幾乎所有的GUI 系統(tǒng)本質(zhì)上都是事件驅(qū)動(dòng)的,系統(tǒng)自身的運(yùn)行,以及GUI 應(yīng)用程序的運(yùn)行,都依賴(lài)于消息處理模塊。

多窗口處理模塊(Windowing Module)和控件(Control 或 Widget):

基于圖形設(shè)備接口和消息處理模塊,MiniGUI 實(shí)現(xiàn)了多窗口處理模塊。該模塊為上層應(yīng)用程序提供了創(chuàng)建主窗口和控件的基本接口,并負(fù)責(zé)維護(hù)控件類(lèi)。

控件類(lèi)是用來(lái)實(shí)現(xiàn)控件代碼重用的重要概念,利用控件類(lèi)(control class),我們可以創(chuàng)建屬于某個(gè)控件類(lèi)的多個(gè)控件實(shí)例(instance),從而讓這些控件實(shí)例使用同一個(gè)控件類(lèi)的代碼,這樣,我們就實(shí)現(xiàn)了類(lèi)似 C++++ 那樣的類(lèi)和實(shí)例概念,從而可以最大程度上重復(fù)利用已有代碼,并提高軟件的可維護(hù)性。

MiniGUI 的控件模塊實(shí)現(xiàn)了常見(jiàn)的 GUI 控件,如靜態(tài)框、按鈕、編輯框、列表框、下拉框等等。

外觀(guān)支持(Look and Feel):

這個(gè)模塊是 MiniGUI V3.0 提供給上層應(yīng)用程序的接口,可用來(lái)定制 MiniGUI 窗口、控件的繪制。

在 MiniGUI V3.0 之前的版本中,對(duì)主窗口和控件的定制能力,還沒(méi)有被抽離出來(lái)形成獨(dú)立的模塊,但我們?nèi)匀豢梢酝ㄟ^(guò)配置選項(xiàng)讓 MiniGUI 的主窗口、控件具有三種顯示風(fēng)格,分別是:類(lèi)似 PC 的三維風(fēng)格(PC3D)、平板風(fēng)格(FLAT)、流行風(fēng)格(FASHION)。

在 MiniGUI 3.0 中,主窗口和控件的外觀(guān)可完全由應(yīng)用程序自行定制,在創(chuàng)建主窗口或者控件時(shí),指定外觀(guān)渲染器(renderer)的名稱(chēng),就可以讓主窗口或者控件具有各自不同的外觀(guān)。

可以看到MiniGUI從創(chuàng)立伊始就放棄了對(duì)于RTOS內(nèi)核的編寫(xiě),直接基于linux等內(nèi)核來(lái)做封裝。簡(jiǎn)單聊兩句基于MiniGUI的圖形應(yīng)用開(kāi)發(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;

可以看到其對(duì)于消息的定義幾乎與WINDOWS一致,其建立窗體等操作也幾乎與WINDOWS一樣。所以MiniGUI的設(shè)計(jì)有很大程序是為降低嵌入式系統(tǒng)圖形界面開(kāi)發(fā)難度而產(chǎn)生的。

國(guó)產(chǎn)實(shí)時(shí)操作系統(tǒng)內(nèi)核的先驅(qū)RTthread

提到咱們國(guó)產(chǎn)的loT操作系統(tǒng)RTthread也是一個(gè)無(wú)論如何也繞不過(guò)去的標(biāo)志,如果RTthread在06年初就發(fā)布了第一版,而且經(jīng)過(guò)了這十幾年的上億臺(tái)設(shè)備裝機(jī)的技術(shù)沉淀,RTthread的社區(qū)也已經(jīng)儼然發(fā)展成為國(guó)內(nèi)最強(qiáng)的嵌入式社區(qū)了,筆者剛剛到他們的論壇上逛了一圈,真的是強(qiáng)手如云,大咖云集。

具體內(nèi)核相關(guān)知識(shí)后續(xù)會(huì)再發(fā)文介紹這里也就不再贅述了。而且最新的消息顯示MiniGUI開(kāi)始支持RTthread的內(nèi)核了,可見(jiàn)傳統(tǒng)的嵌入式操作系統(tǒng)廠(chǎng)商的策略是要盡量保持生態(tài)的多元化,抱團(tuán)取暖。
HybridOS的開(kāi)源計(jì)劃

最近MiniGUI的飛漫軟件又官宣了他們的HybridOS開(kāi)源計(jì)劃,而根據(jù)目前的材料看HybridOS最大的看點(diǎn)是要用HTML來(lái)統(tǒng)一UI的開(kāi)發(fā),這與之前使用WIN32的設(shè)計(jì)來(lái)統(tǒng)一UI開(kāi)發(fā)的邏輯如出一轍。

我們知道由于物聯(lián)網(wǎng)終端真的是不一而足,與手機(jī)終端完全不同,其不同終端的碎片化需求太多太復(fù)雜,比如,有的智能燈泡要藍(lán)牙即可,而智能空調(diào)可能就要有Wi-Fi了。

而我們金融行業(yè)要做智能合約可能對(duì)于終端的算力又有一定的要求,這樣碎片化的場(chǎng)景,由于A(yíng)ndroid硬件設(shè)備的要求門(mén)檻較高,就不太適合了, 而直接用Linux裁減,這對(duì)于人才的要求又太高。

所以與騰訊等巨頭整合全場(chǎng)景的目標(biāo)不同,MiniGUI的背后其是保持生態(tài)多樣性的邏輯,他的目標(biāo)是降低開(kāi)發(fā)門(mén)檻,避免初創(chuàng)公司必須選擇鴻蒙或者TinyOS這種大廠(chǎng)的操作系統(tǒng)。

讓場(chǎng)景的提供方可以通過(guò)較低成本驗(yàn)證自身的想法,而避免從一開(kāi)始就走上巨頭們?cè)缫旬?huà)好的圓圈。

在他們的官宣當(dāng)中對(duì)于其后續(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ū)動(dòng)程序的開(kāi)發(fā)難度以及各種協(xié)議棧的支持難度,從而降低開(kāi)發(fā)成本。

2. 和基于 RTOS(實(shí)時(shí)操作系統(tǒng))技術(shù)發(fā)展而來(lái)的物聯(lián)網(wǎng)操作系統(tǒng)(如RT-Thread、LiteOS)相比,HybridOS 更傾向于運(yùn)行在具有更高硬件配置的智能物聯(lián)網(wǎng)設(shè)備上,而不是小型的單功能物聯(lián)網(wǎng)設(shè)備上,后者的硬件配置往往有限。

3. HybridOS 不僅僅運(yùn)行在智能物聯(lián)網(wǎng)設(shè)備中,它同時(shí)還提供了針對(duì)云端以及客戶(hù)端的標(biāo)準(zhǔn)框架和編程接口,為開(kāi)發(fā)者提供了從設(shè)備到云再到客戶(hù)端的完整軟件棧和協(xié)議棧。在未來(lái),HybridOS 還計(jì)劃統(tǒng)一客戶(hù)端和設(shè)備端上的 App 開(kāi)發(fā)接口。

4. HybridOS 將基于區(qū)塊鏈技術(shù)為物與物之間的通訊提供一個(gè)全新的實(shí)現(xiàn)方法。在 HybridOS定義的實(shí)現(xiàn)方法下,所有的數(shù)據(jù)都帶有不可篡改的數(shù)字簽名以及時(shí)間戳,而所有數(shù)據(jù)的傳輸和存儲(chǔ)都可加密。這將從根本上提高物聯(lián)網(wǎng)的安全性。

后記

我們可以看到巨頭的邏輯是要讓其它公司免費(fèi)使用其OS上車(chē),然后接入其loT云平臺(tái)成者直接收購(gòu)無(wú)縫整合,敗者自生自滅,從而將自己立于不敗之地,而傳統(tǒng)的嵌入式公司邏輯則是降低OS的使用開(kāi)發(fā)門(mén)檻,讓物聯(lián)網(wǎng)生態(tài)鏈上的企業(yè)能有自主選擇。也讓我們拭目以待,物聯(lián)網(wǎng)時(shí)代能否產(chǎn)生新的巨頭。

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表