首先,我們需要知道HarmonyOS與OpenHarmony是不同的概念,我們需要知道它們的區(qū)別:
????????HarmonyOS是華為獨(dú)家開發(fā)的,但華為在2020、2021年分兩次將HarmonyOS的基礎(chǔ)能力全部捐獻(xiàn)給了開放原子開源基金會(huì),形成了OpenHarmony開源項(xiàng)目,華為對(duì)開源鴻蒙沒有控制權(quán),當(dāng)然華為仍將是開源鴻蒙的開發(fā)貢獻(xiàn)者,同時(shí)也是AOSP、Linux、Eclipse等眾多開源項(xiàng)目的貢獻(xiàn)者,所以其實(shí)其他手機(jī)廠商也可以使用OpenHarmony,只是一旦你采用了鴻蒙,便一定程度上放棄了安卓,如果鴻蒙在生態(tài)上沒能超越安卓,裝了鴻蒙的手機(jī)就可能被安卓打敗,并且OpenHarmony開放的只是HarmonyOS最基礎(chǔ)的核心架構(gòu),想要在自家的手機(jī)上使用,需要投入大量精力在此基礎(chǔ)上研發(fā)新系統(tǒng),所以可以理解友商為何沒有輕易采用鴻蒙。
????????HarmonyOS 2是華為基于OpenHarmony 2.0開發(fā)的商業(yè)版本,HarmonyOS是閉源的,兼容了AOSP,增加了HMS,使其能適配運(yùn)行安卓軟件,我們能夠拿到的OpenHarmony是不能直接兼容安卓的。
下圖是OpenHarmony的技術(shù)架構(gòu)
我們嵌入式的主要關(guān)注內(nèi)核層,我們根據(jù)硬件資源選擇需要要移植的內(nèi)核
內(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ā)、管理框架。
OpenHarmony有三種內(nèi)核
針對(duì)不同量級(jí)的系統(tǒng),分別使用不同形態(tài)的內(nèi)核
- 輕量級(jí)系統(tǒng)內(nèi)核LiteOS-M
- 小型系統(tǒng)內(nèi)核LiteOS-A/Linux內(nèi)核
- 標(biāo)準(zhǔn)系統(tǒng)內(nèi)核OpenHarmony Linux
????????著重講我接觸過的LiteOS-M和OpenHarmony Linux,可分別跑在大小板上,形成包含上位機(jī)和下位機(jī)的項(xiàng)目
極小內(nèi)核包含任務(wù)管理、內(nèi)存管理、中斷管理、異常管理和系統(tǒng)時(shí)鐘??刹眉舻哪K包括信號(hào)量、互斥鎖、隊(duì)列管理、事件管理、軟件定時(shí)器等。 LiteOS支持 UP(單核)與 SMP(多核)模式,即支持在單核或者多核的環(huán)境上運(yùn)行。
????????其中LiteOS-M內(nèi)核是面向IoT領(lǐng)域構(gòu)建的輕量級(jí)物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核,具有小體積、低功耗、高性能的特點(diǎn)。其代碼結(jié)構(gòu)簡單,主要包括內(nèi)核最小功能集、內(nèi)核抽象層、可選組件以及工程目錄等。LiteOS-M已經(jīng)支持ARM Cortex-M3、ARM Cortex-M4、ARM Cortex-M7、ARM Cortex-M33、RISC-V等主流架構(gòu),代表其可以運(yùn)行在我們常用的STM32以及ESP系列 WIFI芯片上
?
????????上圖是我在海思Hi3861WIFI芯片上運(yùn)行LiteOS-M后總結(jié)的一個(gè)框架,可以發(fā)現(xiàn)跟我們單片機(jī)里的RTOS以及Linux內(nèi)核是有相似之處的,并且我們搭建應(yīng)用的時(shí)候可以移植開源的例程的內(nèi)核與部分驅(qū)動(dòng)層代碼,不必從頭搭建。
????????LiteOS-A內(nèi)核主要應(yīng)用于小型系統(tǒng),面向設(shè)備一般是M級(jí)內(nèi)存,可支持MMU隔離,業(yè)界類似的內(nèi)核有Zircon或Darwin等。LiteOS-A當(dāng)前支持ARMv7-a指令集架構(gòu),如果三方芯片為ARMv7-a架構(gòu),可以進(jìn)行內(nèi)核基礎(chǔ)適配。
OpenHarmony內(nèi)核態(tài)層 = OpenHarmony Linux內(nèi)核 + OpenHarmony內(nèi)核態(tài)特性
而OpenHarmony Linux內(nèi)核 = 標(biāo)準(zhǔn)LTS Linux內(nèi)核 + 三方SoC芯片平臺(tái)代碼 +OpenHarmony內(nèi)核態(tài)基礎(chǔ)代碼(支撐OpenHarmony內(nèi)核層以上層級(jí)運(yùn)行的最基礎(chǔ)代碼)
根據(jù)以上組合,我們可以通過兩種途徑獲得:
1、OpenHarmony內(nèi)核態(tài)層 = 三方Linux內(nèi)核 + OpenHarmony內(nèi)核態(tài)基礎(chǔ)代碼 + OpenHarmony內(nèi)核態(tài)特性(如HDF,今后的HMDFS等)
2、OpenHarmony內(nèi)核態(tài)層 = OpenHarmony Linux內(nèi)核 + OpenHarmony內(nèi)核態(tài)特性
其中方法1是比較實(shí)際的,能夠較好地兼容三方芯片平臺(tái),即借助三方已有的Linux內(nèi)核,來快速移植OpenHarmony
總結(jié):文章來源:http://www.zghlxwxcb.cn/news/detail-444351.html
本文先幫助大家區(qū)分了HarmonyOS與OpenHarmony,并糾正可能對(duì)鴻蒙存在的偏見,然后從嵌入式開發(fā)者的角度介紹了開源鴻蒙的三種內(nèi)核的組成及其特點(diǎn),告訴大家選擇什么樣的硬件與內(nèi)核來著手進(jìn)行移植。更多的是概念性的東西,讓大家對(duì)鴻蒙有整體的認(rèn)知,幫助大家找到入手的方向,而與實(shí)操有關(guān)的內(nèi)容,待我的后續(xù)介紹。文章來源地址http://www.zghlxwxcb.cn/news/detail-444351.html
到了這里,關(guān)于從何著手OpenHarmony?從這里開始認(rèn)識(shí)嵌入式開源鴻蒙操作系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!