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

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

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

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

[復制鏈接]

2607

主題

2607

帖子

7472

積分

高級會員

Rank: 5Rank: 5

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

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

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

但是由于當時的嵌入式系統(tǒng)多用來制作手持式PDA,車載導航儀等設(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)、鼠標(mouse)、觸摸屏(touch screen)等抽象了出來,為上層提供一致的接口。要支持不同的鍵盤、觸摸屏或者鼠標接口,則通過為 IAL 編寫不同的輸入引擎實現(xiàn)。

MiniGUI 通過 IAL 及其輸入引擎,提供對 Linux 控制臺(鍵盤及鼠標)、觸摸屏、遙控器、小鍵盤等輸入設(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)建主窗口和控件的基本接口,并負責維護控件類。

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

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

外觀支持(Look and Feel):

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

在 MiniGUI V3.0 之前的版本中,對主窗口和控件的定制能力,還沒有被抽離出來形成獨立的模塊,但我們?nèi)匀豢梢酝ㄟ^配置選項讓 MiniGUI 的主窗口、控件具有三種顯示風格,分別是:類似 PC 的三維風格(PC3D)、平板風格(FLAT)、流行風格(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也是一個無論如何也繞不過去的標志,如果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)終端真的是不一而足,與手機終端完全不同,其不同終端的碎片化需求太多太復雜,比如,有的智能燈泡要藍牙即可,而智能空調(diào)可能就要有Wi-Fi了。

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

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

讓場景的提供方可以通過較低成本驗證自身的想法,而避免從一開始就走上巨頭們早已畫好的圓圈。

在他們的官宣當中對于其后續(xù)要發(fā)布的HybridOS物聯(lián)網(wǎng)操作系統(tǒng)有如目標:

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è)備中,它同時還提供了針對云端以及客戶端的標準框架和編程接口,為開發(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)生新的巨頭。
回復

使用道具 舉報

發(fā)表回復

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


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