簡介
華為鴻蒙系統(tǒng)是一款全新的面向全場景的分布式操作系統(tǒng),創(chuàng)造一個超級虛擬終端互聯(lián)的世界,將人、設(shè)備、場景有機地聯(lián)系在一起,將消費者在全場景生活中接觸的多種智能終端,實現(xiàn)極速發(fā)現(xiàn)、極速連接、硬件互助、資源共享,用合適的設(shè)備提供場景體驗。
1.1 抽象的藝術(shù)
華為的消費者業(yè)務(wù)很強大,個人消費品注重品控,這恰恰是華為的優(yōu)勢,華為設(shè)備的穩(wěn)定性和對需求響應(yīng)速度都是很好的,這也適合做個人消費品,可以這么說帖上華為的標(biāo)簽,價錢就能漲一點。
但是各種設(shè)備,這里可以統(tǒng)稱為AIOT物聯(lián)網(wǎng)設(shè)備,里面運行的程序千奇百怪,維護成本很高,這么多設(shè)備,里面如果有軟件共性的東西抽取出來一個核心,把這個核心做好,那么這些設(shè)備就不容易出問題,還容易維護,關(guān)鍵還能相互通信,因為有了共同的基礎(chǔ)OS。那么這個核心就是“微內(nèi)核”LiteOS,把最基礎(chǔ)OS的組件放入LiteOS,大家共用,這其實是軟件領(lǐng)域一種“抽象”的概念。
計算機科學(xué)中遇到的所有問題都可通過增加一層抽象來解決。
抽象的優(yōu)點在于它讓上層以較小的代價獲得所需的功能,并同時可以提供一些保護。但抽象同時也是一種限制,會喪失一些應(yīng)有的靈活性。
比如,當(dāng)你在考慮在項目中應(yīng)該使用哪個函數(shù)庫的時候,就常常需要這方面的權(quán)衡:過多的抽象和過少的抽象自然都是不合適的。理解應(yīng)用的需求也很重要。
一個能合理滿足應(yīng)用需求的操作系統(tǒng)設(shè)計是操作系統(tǒng)設(shè)計者需要深入考慮的問題。這也是一種權(quán)衡,過多的服務(wù)功能和過少的服務(wù)功能自然都是不合適的。實際上,我們通過應(yīng)用程序的特征和需求來判斷操作系統(tǒng)需要什么程度的抽象和功能。
軟件抽象的直接結(jié)果就是導(dǎo)致“模塊化”和“分層”,從軟件框架圖里面可以看出來:
LiteOS的特點:輕量級(內(nèi)核小于10k)、低功耗(1節(jié)5號電池最多可以工作5年)。鴻蒙系統(tǒng)可以覆蓋所有的設(shè)備,應(yīng)用在智能設(shè)備上,比如攝像頭、門鈴、體溫計等設(shè)備。利用軟總線將各個設(shè)備連接起來。
1.2 萬法歸一
上面說了抽象出微內(nèi)核,這還遠(yuǎn)遠(yuǎn)不夠,不僅底層代碼可以復(fù)用,野心更大一點上層代碼也可以在不同產(chǎn)品上復(fù)用,真正的“一為萬物,萬物歸一”,修成武林至高秘籍,站在軟件的最高峰。主要由以下概括:
統(tǒng)一OS,彈性部署 一套操作系統(tǒng),滿足大大小小所有設(shè)備的需求,小到耳機,大到車機,智慧屏,手機等,讓不同設(shè)備使用同一語言無縫溝通。
硬件互助,資源共享 搭載HarmonyOS 的每個設(shè)備都不是孤立的,在系統(tǒng)層讓多終端融為一體,成為“超級終端”,終端之間能力互助共享,帶來無縫協(xié)同體驗。
一次開發(fā),多端部署 開發(fā)者基于分布式應(yīng)用框架,寫一次邏輯代碼,就可以部署在多種終端上。
應(yīng)用自由跨端 HarmonyOS 原子化服務(wù)是輕量化服務(wù)的新物種,它提供了全新的服務(wù)和交互方式,可分可合,可流轉(zhuǎn),支持免安裝等特性,能夠讓應(yīng)用化繁為簡,讓服務(wù)觸手可及。
用“簡單”激活你的設(shè)備智能 HarmonyOS 是新一代智能終端操作系統(tǒng)。為不同設(shè)備的智能化、互聯(lián)與協(xié)同提供了統(tǒng)一的語言。設(shè)備可實現(xiàn)一碰入網(wǎng),無屏變有屏,操作可視化,一鍵直達原廠服務(wù)等全新功能。通過簡單而智能的服務(wù),實現(xiàn)設(shè)備智能化產(chǎn)業(yè)升級。
這種大一統(tǒng)的思想,怎么感覺這么熟悉,好像就是中國人骨子里面的“大一統(tǒng)”,我們要搞中央集權(quán),要集中力量辦大事,不允許分裂,吸納包容擴大自己,看來中國人也善于干這個事情。。。
1.3 分層誕生了軟總線
華為提出了“分布式軟總線”,是不是覺得這個名字很高大上,事實證明一個高大上的名字非常的重要,特別是需要對外宣傳的東西,或者是一個老的技術(shù)在一個新領(lǐng)域的應(yīng)用,足可以用高大上的名字去新的領(lǐng)域忽悠一波。分布式軟總線的實質(zhì)就是“通信”,其實就是一個通信協(xié)議,但是名字叫“XXX協(xié)議”,那不是爛大街了,你說很牛逼,原來就個這玩意,都沒人信。
不同設(shè)備間的通信,最常見的就是OSI七層協(xié)議模型,學(xué)過《計算機網(wǎng)絡(luò)》的都清楚。這里出現(xiàn)了一個不按套路出牌的,基于萬物互聯(lián)的需求,覺得七層太復(fù)雜了,需要簡化,直接砍掉三層七層變四層,然后改進下適應(yīng)自己的需求,也算是創(chuàng)新,如下圖:
全場景設(shè)備間可以基于軟總線完成設(shè)備虛擬化、跨設(shè)備服務(wù)調(diào)用、多屏協(xié)同、文件分享等分布式業(yè)務(wù)。分布式軟總線的典型特征:
自動發(fā)現(xiàn)/即連即用
高帶寬
低時延
高可靠
開放/標(biāo)準(zhǔn)
將中間的四層協(xié)議棧精簡為一層提升有效載荷,有效傳輸帶寬提升20%。極簡協(xié)議在傳統(tǒng)網(wǎng)絡(luò)協(xié)議的基礎(chǔ)上進行增強:
流式傳輸:基于UDP實現(xiàn)數(shù)據(jù)的保序和可靠傳輸;
雙輪驅(qū)動:顛覆傳統(tǒng)TCP每包確認(rèn)機制;
不懼網(wǎng)損:摒棄傳統(tǒng)滑動窗口機制,丟包快速恢復(fù),避免阻塞;
不懼抖動:智能感知網(wǎng)絡(luò)變化,自適應(yīng)流量控制和擁塞控制;
總結(jié)下,就是參考《計算機組成原理》里面硬件總線的概念,受到啟發(fā),然后把《計算機網(wǎng)絡(luò)》里面的七層模型改四層用起來,最后再根據(jù)業(yè)務(wù)需求做一些修正,滿足不同的需求??粗孟窈唵危鋵崗募夹g(shù)創(chuàng)新角度已經(jīng)算挺大創(chuàng)新了,特別是能工程應(yīng)用。最近看馬斯克吐槽發(fā)論文大多沒用,能工程實踐特別是利用基礎(chǔ)理論,才是一種更有益的創(chuàng)新吧。
1.4 軟件框架介紹
上面放過這個圖,解釋鴻蒙的特性。下面具體看下: 內(nèi)核層 內(nèi)核子系統(tǒng):采用多內(nèi)核(Linux內(nèi)核或者LiteOS)設(shè)計,支持針對不同資源受限設(shè)備選用適合的OS內(nèi)核。內(nèi)核抽象層(KAL,KernelAbstract Layer)通過屏蔽多內(nèi)核差異,對上層提供基礎(chǔ)的內(nèi)核能力,包括進程/線程管理、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)管理和外設(shè)管理等。
驅(qū)動子系統(tǒng):驅(qū)動框架(HDF)是系統(tǒng)硬件生態(tài)開放的基礎(chǔ),提供統(tǒng)一外設(shè)訪問能力和驅(qū)動開發(fā)、管理框架。
系統(tǒng)服務(wù)層
系統(tǒng)服務(wù)層是OpenHarmony的核心能力集合,通過框架層對應(yīng)用程序提供服務(wù)。該層包含以下幾個部分: 系統(tǒng)基本能力子系統(tǒng)集:為分布式應(yīng)用在多設(shè)備上的運行、調(diào)度、遷移等操作提供了基礎(chǔ)能力,由分布式軟總線、分布式數(shù)據(jù)管理、分布式任務(wù)調(diào)度、公共基礎(chǔ)庫、多模輸入、圖形、安全、AI等子系統(tǒng)組成。
基礎(chǔ)軟件服務(wù)子系統(tǒng)集:提供公共的、通用的軟件服務(wù),由事件通知、電話、多媒體、DFX(Design For X) 等子系統(tǒng)組成。
增強軟件服務(wù)子系統(tǒng)集:提供針對不同設(shè)備的、差異化的能力增強型軟件服務(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)集、增強軟件服務(wù)子系統(tǒng)集、硬件服務(wù)子系統(tǒng)集內(nèi)部可以按子系統(tǒng)粒度裁剪,每個子系統(tǒng)內(nèi)部又可以按功能粒度裁剪。
框架層
框架層為應(yīng)用開發(fā)提供了C/C++/JS等多語言的用戶程序框架和Ability框架,適用于JS語言的ArkUI框架,以及各種軟硬件服務(wù)對外開放的多語言框架API。根據(jù)系統(tǒng)的組件化裁剪程度,設(shè)備支持的API也會有所不同。
應(yīng)用層
應(yīng)用層包括系統(tǒng)應(yīng)用和第三方非系統(tǒng)應(yīng)用。應(yīng)用由一個或多個FA(Feature Ability)或PA(ParticleAbility)組成。其中,F(xiàn)A有UI界面,提供與用戶交互的能力;而PA無UI界面,提供后臺運行任務(wù)的能力以及統(tǒng)一的數(shù)據(jù)訪問抽象?;贔A/PA開發(fā)的應(yīng)用,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能,支持跨設(shè)備調(diào)度與分發(fā),為用戶提供一致、高效的應(yīng)用體驗。
1.5 鴻蒙微內(nèi)核LiteOS介紹
上面是HuaweiLiteOS架構(gòu)框圖,操作系統(tǒng)是一個大的概念,其中包含了內(nèi)核,鴻蒙的內(nèi)核就是LiteOS,但是內(nèi)核有時也單獨叫一個操作系統(tǒng),大家知道就可以。LiteOS基礎(chǔ)內(nèi)核:包括不可裁剪的極小內(nèi)核和可裁剪的其他模塊。極小內(nèi)核包含任務(wù)管理、內(nèi)存管理、中斷管理、異常管理和系統(tǒng)時鐘。可裁剪的模塊包括信號量、互斥鎖、隊列管理、事件管理、軟件定時器等。
對于微內(nèi)核,由于用MMU(內(nèi)存管理單元)對進程空間(內(nèi)存區(qū)域)做了隔離保護,沒有授權(quán)的進程是無法訪問其他進程的空間。這就阻止了惡意程序?qū)ζ渌M程數(shù)據(jù)的竊取。在微內(nèi)核的管理下,因為MMU的封鎖過于嚴(yán)格,用戶進程要存儲一個東西,必須請求內(nèi)核,使用內(nèi)核的IPC進行進程間的通信。
Linux是宏內(nèi)核,大量數(shù)據(jù)處理是通過系統(tǒng)調(diào)用這個問題不突出,但是微內(nèi)核的IPC實在是“傷不起”,就這樣微內(nèi)核一直被Linux這種宏內(nèi)核吊打。學(xué)界想了很多辦法,L4提出了一個Fast IPC的辦法,只要你IPC通訊沒數(shù)據(jù),可以借用CPU核心寄存器的辦法傳遞消息,速度大大加快。也有人想到了dIPC, directIPC。
用標(biāo)簽內(nèi)存的辦法進行隔離,傳遞數(shù)據(jù),無需通過內(nèi)核空間。大大加快了通訊速度。但標(biāo)簽內(nèi)存不符合現(xiàn)在計算機體系的架構(gòu),實踐中,采用的可能性較小。
上交的陳海波教授團隊,19年想了兩個辦法進行IPC的加速。一個是XPC,一個是Skybridge。其中XPC是硬件,增加了一點點CPU硬件修改,使得IPC通訊無需內(nèi)核的參與,也無需數(shù)據(jù)拷貝;Skybridge,采用的是雙內(nèi)核,一個RootKernel,類似type-1的虛化,專門負(fù)責(zé)IPC數(shù)據(jù)通訊,上層的Kernel為微內(nèi)核。這樣IPC繞過了MMU 機制,也不會對微內(nèi)核之上的MMU保護機制產(chǎn)生破壞。在IPC通訊的時候,無內(nèi)核參與,無需拷貝。
再來看看Android的架構(gòu)。Android因為采用了非常多的服務(wù),不同于普通的應(yīng)用,非常依賴于IPC通訊。為了提高速度,開發(fā)出了 IPC Binder Drivers 來加速 Linux下的IPC通訊。但效果不是太理想。XPC對BinderIPC的加速有50多倍。
SkyBridge和dIPC處于同一性能級別,XPC則更高。從論文上看,SkyBridge更實用一些,未來XPC還需要繼續(xù)依賴于硬件的革新。
1.6 風(fēng)口汽車上的鴻蒙應(yīng)用
按照之前說的萬物歸一,那華為拿“鴻蒙”這大殺器,哪里有風(fēng)口,就往哪里用啊。特別是汽車,簡直太適合“鴻蒙”系統(tǒng)了,可以說比手機都適合。
車機鴻蒙 OS 對生態(tài)端和硬件端均實現(xiàn)極為強勁的支持。
1)鴻蒙 OS 車機系統(tǒng)在生態(tài) 上可以對接華為原生應(yīng)用和應(yīng)用商城,對車企支持儀表應(yīng)用、OEM 應(yīng)用等;
2)鴻蒙 OS 車機系統(tǒng)可以支持一芯多屏、多并發(fā)、分布式外設(shè)、車載網(wǎng)絡(luò)&多部件協(xié)同等特性。
鴻蒙 OS 基于微內(nèi)核,兼具 QNX 和Android 的優(yōu)點,尤其國內(nèi)華為服務(wù)支持在后端生 態(tài)適配上更有優(yōu)勢。QNX 是最為老牌的車載操作系統(tǒng),作為微內(nèi)核系統(tǒng),QNX 提供較高的安全性、穩(wěn)定性和實時性,但對生態(tài)支持較差。Andorid 與之相反,生態(tài)上有現(xiàn)成的手機生態(tài)做支撐,但在安全穩(wěn)定性較差,無法支持儀表。
Linux 易于剪裁開發(fā), 大眾 VW.OS 和特斯拉 Version 均基于 Linux,特斯拉 Version 也直接支持使用 Linux 運行儀表軟件,但 Linux 生態(tài)較弱。鴻蒙 OS 采用微內(nèi)核,對于分布式產(chǎn)品只需要較少硬件資源就可以支持,響應(yīng)速度較快,可以支持儀表等高實時穩(wěn)定要求的部件工作。
2. 代碼下載編譯
2.1 代碼下載
repo init -u https://gitee.com/openharmony/manifest.git-b master --no-repo-verify repo sync-c repo forall -c'git lfs pull'
repo sync -j1 --fail-fast2.2 編譯環(huán)境搭建
每次都搞編譯環(huán)境,很麻煩,有個個簡單的方法就是使用Docker,華為提供了Docker環(huán)境。Docker 是一個用于開發(fā),交付和運行應(yīng)用程序的開放平臺,相當(dāng)于直接擁有了別人配置好的一個環(huán)境。
Docker 使您能夠?qū)?yīng)用程序與基礎(chǔ)架構(gòu)分開,從而可以快速交付軟件。借助 Docker,您可以與管理應(yīng)用程序相同的方式來管理基礎(chǔ)架構(gòu)。
通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產(chǎn)環(huán)境中運行代碼之間的延遲。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
進入源碼根目錄執(zhí)行如下命令,從而進入Docker構(gòu)建環(huán)境。ubuntu下執(zhí)行:
dockerrun-it-v$(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
2.3 編譯運行
進入Docker后,就像你擁有了一臺別人已經(jīng)配置好的環(huán)境的電腦。
執(zhí)行如下命令進行配置:
hb set
用上下箭頭選擇qemu_mini_system_demo并回車。 執(zhí)行如下編譯命令:
hb build -f查看編譯結(jié)果:
運行:
./qemu-run
從上面log可以看到系統(tǒng)啟動后,會啟動網(wǎng)絡(luò)協(xié)議棧tcpio,然后進入shlll,最后自動執(zhí)行了Test程序。
審核編輯:劉清
-
Liteos
+關(guān)注
關(guān)注
10文章
32瀏覽量
47556 -
hdc
+關(guān)注
關(guān)注
1文章
44瀏覽量
3583 -
AIoT芯片
+關(guān)注
關(guān)注
0文章
32瀏覽量
3836
原文標(biāo)題:HarmonyOS入門-簡介和代碼編譯
文章出處:【微信號:OS與AUTOSAR研究,微信公眾號:OS與AUTOSAR研究】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論