【堅(jiān)果系列】OpenHarmony應(yīng)用開發(fā)【02】-OpenHarmony開源項(xiàng)目介紹
作者:堅(jiān)果
公眾號(hào):"大前端之旅"
OpenHarmony布道師,InfoQ簽約作者,CSDN博客專家,華為云享專家,阿里云專家博主,51CTO博客首席體驗(yàn)官,開源項(xiàng)目GVA成員之一,專注于大前端技術(shù)的分享,包括Flutter,鴻蒙,小程序,安卓,VUE,JavaScript。
目錄
OpenHarmony應(yīng)用開發(fā)【01】-工具安裝環(huán)境配置
摘要:本文主要對(duì)OpenHarmony項(xiàng)目進(jìn)行簡(jiǎn)單介紹,同時(shí)了解開放原子開源基金會(huì),以及OpenHarmony技術(shù)架構(gòu),并進(jìn)一步了解技術(shù)特性,系統(tǒng)類型,以及它的多內(nèi)核,最后列出OpenHarmony目前支持的開發(fā)版。
接下來開始正文:
本節(jié),都是純理論,可能會(huì)有點(diǎn)無聊,還是希望可以安靜看完哦。
項(xiàng)目介紹
上一節(jié)我們完成了工具準(zhǔn)備和環(huán)境配置接下來我們就一起來了解一下關(guān)于OpenHarmony的一些理論,對(duì)于 OpenHarmony,看“open”就知道是開源的意思,事實(shí)也是這樣的,關(guān)于Open,有著開放,公開,開源的意思,其實(shí)對(duì)于隨著軟件技術(shù)的發(fā)展,底層技術(shù)的發(fā)展主要有兩種趨勢(shì),
第一種是閉源,軟件源代碼不公開,由專人開發(fā)推進(jìn)
第二種就是開源
開源有開放性,公開性,自發(fā)性,參與人員多樣性,以及興趣趨勢(shì),所以開源在一定程度上質(zhì)量更高,成本更低。
好的說完開源,我們就來說OpenHarmony
從Open就可以看出,他是一個(gè)開源項(xiàng)目,是由華為雇了一幫人,然后由這些人commit代碼,最后華為把 HarmonyOS 中基礎(chǔ)功能提取出來,打包成功一個(gè)項(xiàng)目叫做“Openharmony” ,把 Openharmony 捐獻(xiàn)給了原子開源基金會(huì)。
OpenHarmony是由開放原子開源基金會(huì)孵化及運(yùn)營(yíng)的,未來華為也將持續(xù)為OpenHarmony開源項(xiàng)目貢獻(xiàn)代碼
目標(biāo)是面向全場(chǎng)景、全連接、全智能時(shí)代,基于開源的方式,搭建一個(gè)智能終端設(shè)備操作系統(tǒng)的框架和平臺(tái),促進(jìn)萬物互聯(lián)產(chǎn)業(yè)的繁榮發(fā)展
所以大家有了了解了吧,OpenHarmony就是由開放原子開源基金會(huì)(OpenAtom Foundation)孵化及運(yùn)營(yíng)的開源項(xiàng)目,目標(biāo)是面向全場(chǎng)景、全連接、全智能時(shí)代,基于開源的方式,搭建一個(gè)智能終端設(shè)備操作系統(tǒng)的框架和平臺(tái),促進(jìn)萬物互聯(lián)產(chǎn)業(yè)的繁榮發(fā)展。
然后來看一下OpenHarmony在代碼托管平臺(tái)Gitee的情況,
OpenHarmony目前是Gitee上最有價(jià)值的開源項(xiàng)目之一,倉(cāng)庫(kù)數(shù)436個(gè),成員238人,star數(shù)19.4k,fork數(shù)29.8k,PR3.3k,無一不在說明他的開源價(jià)值和活躍度。
說OpenHarmony,就不得不提到一個(gè)組織,開放原子開源基金會(huì)
開放原子開源基金會(huì)
開放原子開源基金會(huì)是中國(guó)內(nèi)地首個(gè)開源領(lǐng)域的基金會(huì),成立于2020年6月,由阿里巴巴、百度、華為、浪潮、360、騰訊、招商銀行等企業(yè)聯(lián)合發(fā)起,是在中華人民共和國(guó)民政部注冊(cè)的非營(yíng)利性獨(dú)立法人機(jī)構(gòu)。基金會(huì)涵蓋OpenHarmony、TecentOS Tiny、AliOS Things、UBLM、TKEstack、XuperChain等項(xiàng)目。
說完項(xiàng)目的簡(jiǎn)單介紹,以及開放原子開源基金會(huì)組織,也該到了了解OpenHarmony技術(shù)架構(gòu)的時(shí)間,
OpenHarmony技術(shù)架構(gòu)
OpenHarmony整體遵從分層設(shè)計(jì),從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層四層。
系統(tǒng)功能按照“系統(tǒng) > 子系統(tǒng) > 組件”逐級(jí)展開,在多設(shè)備部署場(chǎng)景下,支持根據(jù)實(shí)際需求裁剪某些非必要的組件。
OpenHarmony技術(shù)架構(gòu)如上圖所示,大家在這里可以先記住這張圖。然后我們對(duì)內(nèi)核層、系統(tǒng)服務(wù)層、框架層以及應(yīng)用層四層進(jìn)行進(jìn)一步了解。
內(nèi)核層
內(nèi)核子系統(tǒng):采用多內(nèi)核(Linux內(nèi)核或者LiteOS)設(shè)計(jì),支持針對(duì)不同資源受限設(shè)備選用適合的OS內(nèi)核。內(nèi)核抽象層(KAL,Kernel Abstract Layer)通過屏蔽多內(nèi)核差異,對(duì)上層提供基礎(chǔ)的內(nèi)核能力,包括進(jìn)程/線程管理、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)管理和外設(shè)管理等。
驅(qū)動(dòng)子系統(tǒng):驅(qū)動(dòng)框架(HDF)是系統(tǒng)硬件生態(tài)開放的基礎(chǔ),提供統(tǒng)一外設(shè)訪問能力和驅(qū)動(dòng)開發(fā)、管理框架。
系統(tǒng)服務(wù)層
系統(tǒng)服務(wù)層是OpenHarmony的核心能力集合,通過框架層對(duì)應(yīng)用程序提供服務(wù)。該層包含以下幾個(gè)部分:
系統(tǒng)基本能力子系統(tǒng)集:為分布式應(yīng)用在多設(shè)備上的運(yùn)行、調(diào)度、遷移等操作提供了基礎(chǔ)能力,由分布式軟總線、分布式數(shù)據(jù)管理、分布式任務(wù)調(diào)度、公共基礎(chǔ)庫(kù)、多模輸入、圖形、安全、AI等子系統(tǒng)組成。
基礎(chǔ)軟件服務(wù)子系統(tǒng)集:提供公共的、通用的軟件服務(wù),由事件通知、電話、多媒體、DFX(Design For X) 等子系統(tǒng)組成。
增強(qiáng)軟件服務(wù)子系統(tǒng)集:提供針對(duì)不同設(shè)備的、差異化的能力增強(qiáng)型軟件服務(wù),由智慧屏專有業(yè)務(wù)、穿戴專有業(yè)務(wù)、IoT專有業(yè)務(wù)等子系統(tǒng)組成。
硬件服務(wù)子系統(tǒng)集:提供硬件服務(wù),由位置服務(wù)、用戶IAM、穿戴專有硬件服務(wù)、IoT專有硬件服務(wù)等子系統(tǒng)組成。
根據(jù)不同設(shè)備形態(tài)的部署環(huán)境,基礎(chǔ)軟件服務(wù)子系統(tǒng)集、增強(qiáng)軟件服務(wù)子系統(tǒng)集、硬件服務(wù)子系統(tǒng)集內(nèi)部可以按子系統(tǒng)粒度裁剪,每個(gè)子系統(tǒng)內(nèi)部又可以按功能粒度裁剪。
框架層
框架層為應(yīng)用開發(fā)提供了C/C++/JS等多語言的用戶程序框架和Ability框架,適用于JS語言的ArkUI框架,以及各種軟硬件服務(wù)對(duì)外開放的多語言框架API。根據(jù)系統(tǒng)的組件化裁剪程度,設(shè)備支持的API也會(huì)有所不同。
應(yīng)用層
應(yīng)用層包括系統(tǒng)應(yīng)用和第三方非系統(tǒng)應(yīng)用。應(yīng)用由一個(gè)或多個(gè)FA(Feature Ability)或PA(Particle Ability)組成。其中,F(xiàn)A有UI界面,提供與用戶交互的能力;而PA無UI界面,提供后臺(tái)運(yùn)行任務(wù)的能力以及統(tǒng)一的數(shù)據(jù)訪問抽象。基于FA/PA開發(fā)的應(yīng)用,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能,支持跨設(shè)備調(diào)度與分發(fā),為用戶提供一致、高效的應(yīng)用體驗(yàn)。
技術(shù)特性
OpenHarmony技術(shù)特性主要有三個(gè)方面,概括來說,就是硬件互助,資源共享;一次開發(fā),多端部署;統(tǒng)一OS,彈性部署。
硬件互助,資源共享
主要通過下列模塊達(dá)成
分布式軟總線
分布式軟總線是多設(shè)備終端的統(tǒng)一基座,為設(shè)備間的無縫互聯(lián)提供了統(tǒng)一的分布式通信能力,能夠快速發(fā)現(xiàn)并連接設(shè)備,高效地傳輸任務(wù)和數(shù)據(jù)。
分布式數(shù)據(jù)管理
分布式數(shù)據(jù)管理位于基于分布式軟總線之上的能力,實(shí)現(xiàn)了應(yīng)用程序數(shù)據(jù)和用戶數(shù)據(jù)的分布式管理。用戶數(shù)據(jù)不再與單一物理設(shè)備綁定,業(yè)務(wù)邏輯與數(shù)據(jù)存儲(chǔ)分離,應(yīng)用跨設(shè)備運(yùn)行時(shí)數(shù)據(jù)無縫銜接,為打造一致、流暢的用戶體驗(yàn)創(chuàng)造了基礎(chǔ)條件
分布式任務(wù)調(diào)度
分布式任務(wù)調(diào)度基于分布式軟總線、分布式數(shù)據(jù)管理、分布式Profile等技術(shù)特性,構(gòu)建統(tǒng)一的分布式服務(wù)管理(發(fā)現(xiàn)、同步、注冊(cè)、調(diào)用)機(jī)制,支持對(duì)跨設(shè)備的應(yīng)用進(jìn)行遠(yuǎn)程啟動(dòng)、遠(yuǎn)程調(diào)用、綁定/解綁、以及遷移等操作,能夠根據(jù)不同設(shè)備的能力、位置、業(yè)務(wù)運(yùn)行狀態(tài)、資源使用情況并結(jié)合用戶的習(xí)慣和意圖,選擇最合適的設(shè)備運(yùn)行分布式任務(wù)
設(shè)備虛擬化
分布式設(shè)備虛擬化平臺(tái)可以實(shí)現(xiàn)不同設(shè)備的資源融合、設(shè)備管理、數(shù)據(jù)處理,將周邊設(shè)備作為手機(jī)能力的延伸,共同形成一個(gè)超級(jí)虛擬終端。
一次開發(fā),多端部署
OpenHarmony提供用戶程序框架、Ability框架以及UI框架,能夠保證開發(fā)的應(yīng)用在多終端運(yùn)行時(shí)保證一致性。一次開發(fā)、多端部署。
多終端軟件平臺(tái)API具備一致性,確保用戶程序的運(yùn)行兼容性。
支持在開發(fā)過程中預(yù)覽終端的能力適配情況(CPU/內(nèi)存/外設(shè)/軟件資源等)。
支持根據(jù)用戶程序與軟件平臺(tái)的兼容性來調(diào)度用戶呈現(xiàn)。
統(tǒng)一OS,彈性部署
OpenHarmony通過組件化和組件彈性化等設(shè)計(jì)方法,做到硬件資源的可大可小,在多種終端設(shè)備間,按需彈性部署,全面覆蓋了ARM、RISC-V、x86等各種CPU,從百KiB到GiB級(jí)別的RAM。
系統(tǒng)類型
OpenHarmony支持如下幾種系統(tǒng)類型:
輕量系統(tǒng)(mini system)
面向MCU類處理器例如Arm Cortex-M、RISC-V 32位的設(shè)備,硬件資源極其有限,支持的設(shè)備最小內(nèi)存為128KiB,可以提供多種輕量級(jí)網(wǎng)絡(luò)協(xié)議,輕量級(jí)的圖形框架,以及豐富的IOT總線讀寫部件等。可支撐的產(chǎn)品如智能家居領(lǐng)域的連接類模組、傳感器設(shè)備、穿戴類設(shè)備等。
小型系統(tǒng)(small system)
面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為1MiB,可以提供更高的安全能力、標(biāo)準(zhǔn)的圖形框架、視頻編解碼的多媒體能力。可支撐的產(chǎn)品如智能家居領(lǐng)域的IP Camera、電子貓眼、路由器以及智慧出行域的行車記錄儀等。
標(biāo)準(zhǔn)系統(tǒng)(standard system)
面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為128MiB,可以提供增強(qiáng)的交互能力、3D GPU以及硬件合成能力、更多控件以及動(dòng)效更豐富的圖形能力、完整的應(yīng)用框架。可支撐的產(chǎn)品如高端的冰箱顯示屏。
從上面的定義可以看出。內(nèi)存是限制系統(tǒng)類型的非常重要的一個(gè)指標(biāo)。
多內(nèi)核
我們可以把Open Harmony簡(jiǎn)單的分為
Open Harmony = Open Harmony 內(nèi)核態(tài)層 + Open Harmony 用戶態(tài)層
其中Open Harmony 內(nèi)核層就是上圖的紫色部分,可以看到,它主要由內(nèi)核本身(如Linux Kernel,LiteOS),和一些運(yùn)行在內(nèi)核態(tài)的一些特性組成,比如HDF等。
而Open Harmony用戶態(tài)層,在上圖,就是紫色之外的部分。可以看到,由下往上看,它主要由系統(tǒng)服務(wù)層,框架層,應(yīng)用層組成。在這兒我們將這三層整體稱為“Open Harmony 用戶態(tài)層”。
OpenHarmony內(nèi)核層是采用多內(nèi)核設(shè)計(jì),支持針對(duì)不同資源受限設(shè)備選用適合的OS內(nèi)核。OpenHarmony提供了內(nèi)核抽象層(KAL,Kernel Abstract Layer)通過屏蔽多內(nèi)核差異,對(duì)上層提供基礎(chǔ)的內(nèi)核能力,在最上面的圖片中也可以看到OpenHarmony可以使用LiteOS或者Linux內(nèi)核,而OpenHarmony 輕量級(jí)內(nèi)核是基于IoT領(lǐng)域輕量級(jí)物聯(lián)網(wǎng)操作系統(tǒng)Huawei LiteOS內(nèi)核演進(jìn)發(fā)展的新一代內(nèi)核,包含LiteOS-M和LiteOS-A兩類內(nèi)核。,所以借此,我們就來把多內(nèi)核相關(guān)的知識(shí)也了解了。
LiteOS-M內(nèi)核
LiteOS-M內(nèi)核是面向IoT領(lǐng)域構(gòu)建的輕量級(jí)物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核,具有小體積、低功耗、高性能的特點(diǎn)。其代碼結(jié)構(gòu)簡(jiǎn)單,主要包括內(nèi)核最小功能集、內(nèi)核抽象層、可選組件以及工程目錄等。面向的MCU一般是百K級(jí)內(nèi)存,可支持MPU隔離,業(yè)界類似的內(nèi)核有FreeRTOS或ThreadX等。
LiteOS-A內(nèi)核
LiteOS-A內(nèi)核主要應(yīng)用于小型系統(tǒng),面向設(shè)備一般是M級(jí)內(nèi)存,可支持MMU隔離,業(yè)界類似的內(nèi)核有Zircon或Darwin等。
Linux內(nèi)核
面向標(biāo)準(zhǔn)系統(tǒng)類設(shè)備(參考內(nèi)存≥128MB),OpenHarmony選擇Linux內(nèi)核作為基礎(chǔ)內(nèi)核,可以對(duì)不同資源受限的設(shè)備產(chǎn)品配置出適合的OS內(nèi)核,為上層提供基礎(chǔ)的操作系統(tǒng)能力。OpenHarmony中Linux內(nèi)核從LTS版本中選擇合適的版本作為內(nèi)核的基礎(chǔ)版本。
了解完上面的這些,我們就來接著了解兩個(gè)概念,子系統(tǒng)和組件到底是什么?
子系統(tǒng)和組件到底是什么?
子系統(tǒng)
OpenHarmony整體遵從分層設(shè)計(jì),從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層。系統(tǒng)功能按照“系統(tǒng) > 子系統(tǒng) > 組件”逐級(jí)展開,在多設(shè)備部署場(chǎng)景下,支持根據(jù)實(shí)際需求裁剪某些非必要的組件。子系統(tǒng)是一個(gè)邏輯概念,它具體由對(duì)應(yīng)的組件構(gòu)成。
組件
對(duì)子系統(tǒng)的進(jìn)一步拆分,可復(fù)用的軟件單元,它包含源碼、配置文件、資源文件和編譯腳本;能獨(dú)立構(gòu)建,以二進(jìn)制方式集成,具備獨(dú)立驗(yàn)證能力的二進(jìn)制單元。
上一節(jié)在OpenHarmony環(huán)境搭建中也說了OpenHarmony目前支持的開發(fā)版類型,在本文中,我會(huì)單獨(dú)列出。
支持的開發(fā)板
當(dāng)前OpenHarmony支持以下6款開發(fā)板,具體介紹如下:
系統(tǒng)類型 | 開發(fā)板型號(hào) | 芯片型號(hào) | 主要能力 | 典型應(yīng)用場(chǎng)景 | 開發(fā)板代碼倉(cāng)及社區(qū)每日構(gòu)建版本獲取地址 |
---|---|---|---|---|---|
標(biāo)準(zhǔn)系統(tǒng) | Hi3516DV300 | Hi3516DV300 | Hi3516DV300是新一代Smart HD IP攝像機(jī)SOC,集成新一代ISP(Image Signal Processor)、H.265視頻壓縮編碼器、高性能NNIE引擎,在低碼率、高畫質(zhì)、智能處理和分析、低功耗等方面有較好的性能。 | 可用在帶屏設(shè)備上,比如帶屏冰箱、車機(jī)等。 | 代碼倉(cāng): device_soc_hisilicon device_board_hisilicon vendor_hisilicon 社區(qū)每日構(gòu)建版本獲取地址: http://ci.openharmony.cn/dailys/dailybuilds |
標(biāo)準(zhǔn)系統(tǒng) | 潤(rùn)和DAYU200 | RK3568 | 潤(rùn)和HH-SCDAYU200是基于Rockchip RK3568,集成雙核心架構(gòu)GPU以及高效能NPU;板載四核64位Cortex-A55 處理器采用22nm先進(jìn)工藝,主頻高達(dá)2.0GHz;支持藍(lán)牙、Wi-Fi、音頻、視頻和攝像頭等功能,擁有豐富的擴(kuò)展接口,支持多種視頻輸入輸出接口;配置雙千兆自適應(yīng)RJ45以太網(wǎng)口,可滿足NVR、工業(yè)網(wǎng)關(guān)等多網(wǎng)口產(chǎn)品需求。 | 影音娛樂、智慧出行、智能家居,如煙機(jī)、烤箱、跑步機(jī)等。 | 代碼倉(cāng): device_soc_rockchip device_board_hihope vendor_hihope 社區(qū)每日構(gòu)建版本獲取地址: http://ci.openharmony.cn/dailys/dailybuilds |
輕量 | 匯頂GR5515-STARTER-KIT | GR5515 | 支持Bluetooth 5.1的單模低功耗藍(lán)牙SoC,多功能按鍵和LED指示燈。 | 智能硬件,如手表、手環(huán)、價(jià)格類標(biāo)簽。 | 代碼倉(cāng): device_soc_goodix device_board_goodix 社區(qū)每日構(gòu)建版本獲取地址: http://ci.openharmony.cn/dailys/dailybuilds |
輕量 | 朗國(guó)LANGO200 | ASR582X | LANGO200 IOT開發(fā)板,集成了高性能的WIFI-BLE雙模芯片ASR5822、外部存儲(chǔ)芯片、語音播放芯片以及模數(shù)轉(zhuǎn)換等,同時(shí)支持SPI等IOT設(shè)備常用外設(shè)接口,可外擴(kuò)OLED顯示屏、紅外遙控等。 | 智能家居連接類模組。 | 代碼倉(cāng): device_soc_asrmicro device_board_lango vendor_asrmicro 社區(qū)每日構(gòu)建版本獲取地址: http://ci.openharmony.cn/dailys/dailybuilds |
輕量 | 歐智通V200ZR | BES2600 | Multi-modal V200Z-R開發(fā)板是基于恒玄科技BES2600WM芯片的一款高性能、多功能、高性價(jià)比AIoT SoC開發(fā)板Multi-modal V200Z-R開發(fā)板,單模組集成四核ARM處理器(最高主頻1GHz),集成雙頻WiFi + 雙模藍(lán)牙,支持標(biāo)準(zhǔn)的802.11 a/b/g/n/協(xié)議,支持BT/BLE 5.2協(xié)議,內(nèi)建多種容量的RAM(最大42MB)和Flash(最大32MB),支持MIPI DSI及CSI,適用于各種AIoT多模態(tài)VUI + GUI交互硬件場(chǎng)景。 | 智能硬件帶屏類模組產(chǎn)品,如音箱、手表等。 | 代碼倉(cāng): device_soc_bestechnic device_board_fnlink vendor_bestechnic 社區(qū)每日構(gòu)建版本獲取地址: http://ci.openharmony.cn/dailys/dailybuilds |
輕量 | 小熊派BearPi-HM Nano | Hi3861 | BearPi-HM_Nano開發(fā)板是一塊專門為OpenHarmony設(shè)計(jì)的開發(fā)板,板載高度集成的2.4GHz WiFi SoC芯片Hi3861,并板載NFC電路及標(biāo)準(zhǔn)的E53接口,標(biāo)準(zhǔn)的E53接口可擴(kuò)展智能加濕器、智能臺(tái)燈、智能安防、智能煙感等案例。 | 智慧路燈、智慧物流、人體紅外等連接類設(shè)備。 | 代碼倉(cāng): device_soc_hisilicon device_board_bearpi vendor_bearpi 社區(qū)每日構(gòu)建版本獲取地址: http://ci.openharmony.cn/dailys/dailybuilds |
我手頭目前有的是DA YU200的板子,這兒要感謝一下潤(rùn)和軟件和社區(qū),后面的組件學(xué)習(xí)更多的我也會(huì)基于DA YU200來實(shí)現(xiàn)。
可能剛?cè)胧值腄A YU200的板子,系統(tǒng)不是最新的,這個(gè)時(shí)候拿到板子之后,之后先燒錄。
總結(jié)
因?yàn)檫@篇文章都是一些理論,但是也是很重要的,比如我們了解了OpenHarmony整體遵從分層設(shè)計(jì),從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層四層,Open Harmony = Open Harmony 內(nèi)核態(tài)層 + Open Harmony 用戶態(tài)層,OpenHarmony技術(shù)特性,概括來說,就是硬件互助,資源共享;一次開發(fā),多端部署;統(tǒng)一OS,彈性部署,以及多內(nèi)核,子系統(tǒng)和組件到底是什么?等重要問題,最后列出目前支持的六種主流板子。
參考
OpenHarmony中相關(guān)的子系統(tǒng)
潤(rùn)和軟件
DAYU200
DAYU200燒錄工具和指南
-
HarmonyOS
+關(guān)注
關(guān)注
79文章
1974瀏覽量
30147 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3716瀏覽量
16271
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論