衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HarmonyOS入門講解和代碼編譯運行

yzcdx ? 來源:OS與AUTOSAR研究 ? 作者:thatway ? 2022-11-15 09:40 ? 次閱讀

簡介

華為鴻蒙系統是一款全新的面向全場景的分布式操作系統,創造一個超級虛擬終端互聯的世界,將人、設備、場景有機地聯系在一起,將消費者在全場景生活中接觸的多種智能終端,實現極速發現、極速連接、硬件互助、資源共享,用合適的設備提供場景體驗。

1.1 抽象的藝術

b6e30f4c-6475-11ed-8abf-dac502259ad0.png

華為的消費者業務很強大,個人消費品注重品控,這恰恰是華為的優勢,華為設備的穩定性和對需求響應速度都是很好的,這也適合做個人消費品,可以這么說帖上華為的標簽,價錢就能漲一點。

但是各種設備,這里可以統稱為AIOT物聯網設備,里面運行的程序千奇百怪,維護成本很高,這么多設備,里面如果有軟件共性的東西抽取出來一個核心,把這個核心做好,那么這些設備就不容易出問題,還容易維護,關鍵還能相互通信,因為有了共同的基礎OS。那么這個核心就是“微內核”LiteOS,把最基礎OS的組件放入LiteOS,大家共用,這其實是軟件領域一種“抽象”的概念。

計算機科學中遇到的所有問題都可通過增加一層抽象來解決。

抽象的優點在于它讓上層以較小的代價獲得所需的功能,并同時可以提供一些保護。但抽象同時也是一種限制,會喪失一些應有的靈活性

比如,當你在考慮在項目中應該使用哪個函數庫的時候,就常常需要這方面的權衡:過多的抽象和過少的抽象自然都是不合適的。理解應用的需求也很重要。

一個能合理滿足應用需求的操作系統設計是操作系統設計者需要深入考慮的問題。這也是一種權衡,過多的服務功能和過少的服務功能自然都是不合適的。實際上,我們通過應用程序的特征需求來判斷操作系統需要什么程度的抽象和功能。

軟件抽象的直接結果就是導致“模塊化”和“分層”,從軟件框架圖里面可以看出來:

b71c06f8-6475-11ed-8abf-dac502259ad0.png

LiteOS的特點:輕量級(內核小于10k)、低功耗(1節5號電池最多可以工作5年)。鴻蒙系統可以覆蓋所有的設備,應用在智能設備上,比如攝像頭、門鈴、體溫計等設備。利用軟總線將各個設備連接起來。

1.2 萬法歸一

上面說了抽象出微內核,這還遠遠不夠,不僅底層代碼可以復用,野心更大一點上層代碼也可以在不同產品上復用,真正的“一為萬物,萬物歸一”,修成武林至高秘籍,站在軟件的最高峰。主要由以下概括:

統一OS,彈性部署 一套操作系統,滿足大大小小所有設備的需求,小到耳機,大到車機,智慧屏,手機等,讓不同設備使用同一語言無縫溝通。

硬件互助,資源共享 搭載HarmonyOS 的每個設備都不是孤立的,在系統層讓多終端融為一體,成為“超級終端”,終端之間能力互助共享,帶來無縫協同體驗。

一次開發,多端部署 開發者基于分布式應用框架,寫一次邏輯代碼,就可以部署在多種終端上。

應用自由跨端 HarmonyOS 原子化服務是輕量化服務的新物種,它提供了全新的服務和交互方式,可分可合,可流轉,支持免安裝等特性,能夠讓應用化繁為簡,讓服務觸手可及。

用“簡單”激活你的設備智能 HarmonyOS 是新一代智能終端操作系統。為不同設備的智能化、互聯與協同提供了統一的語言。設備可實現一碰入網,無屏變有屏,操作可視化,一鍵直達原廠服務等全新功能。通過簡單而智能的服務,實現設備智能化產業升級。

這種大一統的思想,怎么感覺這么熟悉,好像就是中國人骨子里面的“大一統”,我們要搞中央集權,要集中力量辦大事,不允許分裂,吸納包容擴大自己,看來中國人也善于干這個事情。。。

1.3 分層誕生了軟總線

b78ad916-6475-11ed-8abf-dac502259ad0.png

華為提出了“分布式軟總線”,是不是覺得這個名字很高大上,事實證明一個高大上的名字非常的重要,特別是需要對外宣傳的東西,或者是一個老的技術在一個新領域的應用,足可以用高大上的名字去新的領域忽悠一波。分布式軟總線的實質就是“通信”,其實就是一個通信協議,但是名字叫“XXX協議”,那不是爛大街了,你說很牛逼,原來就個這玩意,都沒人信。

不同設備間的通信,最常見的就是OSI七層協議模型,學過《計算機網絡》的都清楚。這里出現了一個不按套路出牌的,基于萬物互聯的需求,覺得七層太復雜了,需要簡化,直接砍掉三層七層變四層,然后改進下適應自己的需求,也算是創新,如下圖:

b7af4134-6475-11ed-8abf-dac502259ad0.png

全場景設備間可以基于軟總線完成設備虛擬化跨設備服務調用、多屏協同文件分享等分布式業務。分布式軟總線的典型特征

自動發現/即連即用

高帶寬

低時延

高可靠

開放/標準

將中間的四層協議棧精簡為一層提升有效載荷,有效傳輸帶寬提升20%。極簡協議在傳統網絡協議的基礎上進行增強:

流式傳輸:基于UDP實現數據的保序和可靠傳輸;

雙輪驅動:顛覆傳統TCP每包確認機制;

不懼網損:摒棄傳統滑動窗口機制,丟包快速恢復,避免阻塞;

不懼抖動:智能感知網絡變化,自適應流量控制和擁塞控制;

總結下,就是參考《計算機組成原理》里面硬件總線的概念,受到啟發,然后把《計算機網絡》里面的七層模型改四層用起來,最后再根據業務需求做一些修正,滿足不同的需求。看著好像簡單,其實從技術創新角度已經算挺大創新了,特別是能工程應用。最近看馬斯克吐槽發論文大多沒用,能工程實踐特別是利用基礎理論,才是一種更有益的創新吧。

1.4 軟件框架介紹

b7d63866-6475-11ed-8abf-dac502259ad0.png

上面放過這個圖,解釋鴻蒙的特性。下面具體看下: 內核層 內核子系統:采用多內核(Linux內核或者LiteOS)設計,支持針對不同資源受限設備選用適合的OS內核。內核抽象層(KAL,KernelAbstract Layer)通過屏蔽多內核差異,對上層提供基礎的內核能力,包括進程/線程管理、內存管理、文件系統、網絡管理和外設管理等。

驅動子系統:驅動框架(HDF)是系統硬件生態開放的基礎,提供統一外設訪問能力和驅動開發、管理框架。

系統服務層

系統服務層是OpenHarmony的核心能力集合,通過框架層對應用程序提供服務。該層包含以下幾個部分: 系統基本能力子系統集:為分布式應用在多設備上的運行、調度、遷移等操作提供了基礎能力,由分布式軟總線、分布式數據管理、分布式任務調度、公共基礎庫、多模輸入、圖形、安全、AI等子系統組成。

基礎軟件服務子系統集:提供公共的、通用的軟件服務,由事件通知、電話、多媒體、DFX(Design For X) 等子系統組成。

增強軟件服務子系統集:提供針對不同設備的、差異化的能力增強型軟件服務,由智慧屏專有業務、穿戴專有業務、IoT專有業務等子系統組成。

硬件服務子系統集:提供硬件服務,由位置服務、用戶IAM、穿戴專有硬件服務、IoT專有硬件服務等子系統組成。

根據不同設備形態的部署環境,基礎軟件服務子系統集、增強軟件服務子系統集、硬件服務子系統集內部可以按子系統粒度裁剪,每個子系統內部又可以按功能粒度裁剪。

框架層

框架層為應用開發提供了C/C++/JS等多語言的用戶程序框架和Ability框架,適用于JS語言的ArkUI框架,以及各種軟硬件服務對外開放的多語言框架API。根據系統的組件化裁剪程度,設備支持的API也會有所不同。

應用層

應用層包括系統應用和第三方非系統應用。應用由一個或多個FA(Feature Ability)或PA(ParticleAbility)組成。其中,FA有UI界面,提供與用戶交互的能力;而PA無UI界面,提供后臺運行任務的能力以及統一的數據訪問抽象。基于FA/PA開發的應用,能夠實現特定的業務功能,支持跨設備調度與分發,為用戶提供一致、高效的應用體驗。

1.5 鴻蒙微內核LiteOS介紹

b80a4bba-6475-11ed-8abf-dac502259ad0.png

上面是HuaweiLiteOS架構框圖,操作系統是一個大的概念,其中包含了內核,鴻蒙的內核就是LiteOS,但是內核有時也單獨叫一個操作系統,大家知道就可以。LiteOS基礎內核:包括不可裁剪的極小內核和可裁剪的其他模塊。極小內核包含任務管理、內存管理、中斷管理、異常管理和系統時鐘。可裁剪的模塊包括信號量、互斥鎖、隊列管理、事件管理、軟件定時器等。

對于微內核,由于用MMU(內存管理單元)對進程空間(內存區域)做了隔離保護,沒有授權的進程是無法訪問其他進程的空間。這就阻止了惡意程序對其他進程數據的竊取。在微內核的管理下,因為MMU的封鎖過于嚴格,用戶進程要存儲一個東西,必須請求內核,使用內核的IPC進行進程間的通信。

Linux是宏內核,大量數據處理是通過系統調用這個問題不突出,但是微內核的IPC實在是“傷不起”,就這樣微內核一直被Linux這種宏內核吊打。學界想了很多辦法,L4提出了一個Fast IPC的辦法,只要你IPC通訊沒數據,可以借用CPU核心寄存器的辦法傳遞消息,速度大大加快。也有人想到了dIPC, directIPC

用標簽內存的辦法進行隔離,傳遞數據,無需通過內核空間。大大加快了通訊速度。但標簽內存不符合現在計算機體系的架構,實踐中,采用的可能性較小。

上交的陳海波教授團隊,19年想了兩個辦法進行IPC的加速。一個是XPC,一個是Skybridge。其中XPC是硬件,增加了一點點CPU硬件修改,使得IPC通訊無需內核的參與,也無需數據拷貝;Skybridge,采用的是雙內核,一個RootKernel,類似type-1的虛化,專門負責IPC數據通訊,上層的Kernel為微內核。這樣IPC繞過了MMU 機制,也不會對微內核之上的MMU保護機制產生破壞。在IPC通訊的時候,無內核參與,無需拷貝。

b836ff8e-6475-11ed-8abf-dac502259ad0.png

再來看看Android的架構。Android因為采用了非常多的服務,不同于普通的應用,非常依賴于IPC通訊。為了提高速度,開發出了 IPC Binder Drivers 來加速 Linux下的IPC通訊。但效果不是太理想。XPC對BinderIPC的加速有50多倍。

SkyBridge和dIPC處于同一性能級別,XPC則更高。從論文上看,SkyBridge更實用一些,未來XPC還需要繼續依賴于硬件的革新。

1.6 風口汽車上的鴻蒙應用

b896f358-6475-11ed-8abf-dac502259ad0.png

按照之前說的萬物歸一,那華為拿“鴻蒙”這大殺器,哪里有風口,就往哪里用啊。特別是汽車,簡直太適合“鴻蒙”系統了,可以說比手機都適合。

車機鴻蒙 OS 對生態端和硬件端均實現極為強勁的支持。

1)鴻蒙 OS 車機系統在生態 上可以對接華為原生應用和應用商城,對車企支持儀表應用、OEM 應用等;

2)鴻蒙 OS 車機系統可以支持一芯多屏、多并發、分布式外設、車載網絡&多部件協同等特性。

鴻蒙 OS 基于微內核,兼具 QNX Android 的優點,尤其國內華為服務支持在后端生 態適配上更有優勢。QNX 是最為老牌的車載操作系統,作為微內核系統,QNX 提供較高的安全性、穩定性和實時性,但對生態支持較差。Andorid 與之相反,生態上有現成的手機生態做支撐,但在安全穩定性較差,無法支持儀表。

Linux 易于剪裁開發, 大眾 VW.OS 和特斯拉 Version 均基于 Linux,特斯拉 Version 也直接支持使用 Linux 運行儀表軟件,但 Linux 生態較弱。鴻蒙 OS 采用微內核,對于分布式產品只需要較少硬件資源就可以支持,響應速度較快,可以支持儀表等高實時穩定要求的部件工作。

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-fast
2.2 編譯環境搭建

每次都搞編譯環境,很麻煩,有個個簡單的方法就是使用Docker,華為提供了Docker環境。Docker 是一個用于開發,交付和運行應用程序的開放平臺,相當于直接擁有了別人配置好的一個環境。

Docker 使您能夠將應用程序與基礎架構分開,從而可以快速交付軟件。借助 Docker,您可以與管理應用程序相同的方式來管理基礎架構。

通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產環境中運行代碼之間的延遲。
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

進入源碼根目錄執行如下命令,從而進入Docker構建環境。ubuntu下執行:

dockerrun-it-v$(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
b8d3a686-6475-11ed-8abf-dac502259ad0.png

2.3 編譯運行

進入Docker后,就像你擁有了一臺別人已經配置好的環境的電腦

執行如下命令進行配置:
hb set
b8f9ce1a-6475-11ed-8abf-dac502259ad0.png

用上下箭頭選擇qemu_mini_system_demo并回車。 執行如下編譯命令:
hb build -f
查看編譯結果:

b921d068-6475-11ed-8abf-dac502259ad0.png

運行:

./qemu-run

b957797a-6475-11ed-8abf-dac502259ad0.png

從上面log可以看到系統啟動后,會啟動網絡協議棧tcpio,然后進入shlll,最后自動執行了Test程序。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Liteos
    +關注

    關注

    10

    文章

    32

    瀏覽量

    47620
  • hdc
    hdc
    +關注

    關注

    1

    文章

    44

    瀏覽量

    3618
  • AIoT芯片
    +關注

    關注

    0

    文章

    32

    瀏覽量

    3871

原文標題:HarmonyOS入門-簡介和代碼編譯

文章出處:【微信號:OS與AUTOSAR研究,微信公眾號:OS與AUTOSAR研究】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么樣的代碼會被編譯器優化

    現在的編譯器有多智能,可能你辛辛苦苦寫的代碼,在編譯器看來就是幾句廢話,直接被刪除掉。
    的頭像 發表于 01-16 16:38 ?183次閱讀

    Triton編譯器的優化技巧

    在現代計算環境中,編譯器的性能對于軟件的運行效率至關重要。Triton 編譯器作為一個先進的編譯器框架,提供了一系列的優化技術,以確保生成的代碼
    的頭像 發表于 12-25 09:09 ?340次閱讀

    HarmonyOS開發寶典震撼來襲,卓越應用開發之旅一觸即發,輕松啟程!

    大幅提升開發效率。此外,我們還提供場景化的開箱即用代碼示例,讓應用開發觸手可及,輕松高效。 更令人振奮的是,全新升級的《HarmonyOS第一課》現已震撼上線!該課程采用多維融合教學法,將直觀代碼
    發表于 12-05 08:57

    戈帥的《HarmonyOS入門到精通40例》DevEco Studio升級說明

    HarmonyOS入門到精通40例》DevEco Studio升級說明如附件*附件:《HarmonyOS入門到精通40例》DevEco Studio升級說明.docx
    發表于 12-03 15:45

    UART串口通信示例:開啟通信寶藏之門的定位模組LuatOS入門

    今天我們要講解的是UART串口通信示例,關于Air201資產定位模組LuatOS入門,我會從搭建環境、代碼燒錄、示例效果等來細說:
    的頭像 發表于 11-03 19:55 ?1027次閱讀
    UART串口通信示例:開啟通信寶藏之門的定位模組LuatOS<b class='flag-5'>入門</b>

    Keil編譯器優化方法

    我們都知道,代碼是可以通過編譯器優化的,有的時候,為了提高運行速度或者減少代碼尺寸,會開啟優化選項。
    的頭像 發表于 10-23 16:35 ?804次閱讀
    Keil<b class='flag-5'>編譯</b>器優化方法

    java反編譯能拿到源碼嗎

    在語法和風格上有所不同的代碼,因為它們主要關注于恢復代碼的邏輯結構,而不是精確復制原始代碼的每個細節。 1. 反編譯的基本原理 Java程序在編譯
    的頭像 發表于 09-02 11:03 ?1190次閱讀

    java反編譯代碼可以修改么

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回源代碼的過程。反編譯后的代碼可以進行修改,但是需要注意,反
    的頭像 發表于 09-02 11:00 ?810次閱讀

    ida反編譯出來代碼能直接用嗎

    IDA反編譯出來的代碼通常 不能直接使用 ,這主要基于以下幾個方面的原因: 一、代碼的不完整性 IDA反編譯生成的代碼可能缺少原始源
    的頭像 發表于 09-02 10:55 ?821次閱讀

    HarmonyOS NEXT Developer Beta1最新術語表

    A abc文件 方舟字節碼(ArkCompiler Bytecode)文件,是ArkCompiler的編譯工具鏈以源代碼作為輸入編譯生成的產物,其文件后綴名為.abc。在發布態,abc文件會被打包到
    發表于 06-27 16:16

    為什么我的項目Debug運行沒問題,編譯成Release包就報錯?

    ,導致此問題出現的可能原因及解決辦法。 一、Debug與Release編譯的基本差異 1. 編譯配置 · 優化級別: Release模式通常啟用更高級別的編譯優化,包括代碼內聯、循環展
    的頭像 發表于 06-12 11:18 ?1162次閱讀
    為什么我的項目Debug<b class='flag-5'>運行</b>沒問題,<b class='flag-5'>編譯</b>成Release包就報錯?

    可以編譯運行的工程代碼中不存在.ioc文件有辦法生產.ioc嗎?

    可以編譯運行的工程代碼中不存在.ioc文件,有辦法生產.ioc嗎?
    發表于 03-26 08:00

    鴻蒙開發【編譯構建】講解

    編譯構建是將應用/服務的源代碼、資源、第三方庫等,通過編譯工具轉換為可直接在硬件設備上運行的二進制機器碼,然后再將二進制機器碼封裝為HAP/APP軟件包,并為HAP/APP包進行簽名的
    發表于 02-27 17:41

    OpenHarmony 移植:build lite 編譯構建過程

    配置完畢產品解決方案、芯片開發板解決方案,就可以執行 hb build 進行編譯。但是產品解決方案代碼是如何被調用編譯的? 芯片開發板解決方案代碼是如何被調用
    的頭像 發表于 02-19 16:19 ?1008次閱讀

    【AWTK開源智能串口屏方案】MCU SDK使用與編譯運行

    代碼智能串口屏方案,本系列文章介紹如何從零開發HMI程序,包括搭建開發環境、創建HMI運行時工程、修改應用界面以及開發MCU程序。MCU端簡介相對于HMI端(串口
    的頭像 發表于 02-19 12:11 ?1309次閱讀
    【AWTK開源智能串口屏方案】MCU SDK使用與<b class='flag-5'>編譯</b><b class='flag-5'>運行</b>
    天堂鸟百家乐的玩法技巧和规则 | 皇冠在线投注网| 无锡百家乐的玩法技巧和规则| 老虎机单机游戏下载| 大发888娱乐游戏下载| 盐城棋牌游戏中心| e世博资讯网| 百家乐官网游戏公司| 百家乐官网注码投注论坛| 百家乐官网庄不连的概率| 现金百家乐官网技巧| 百家乐官网打连技巧| 海安县| 德州百家乐赌博规则| 百家乐数据程序| 24楼层风水好吗| 百家乐官网庄家胜率| 百家乐游戏新| 百家乐赌台| 蓝盾百家乐打法| 大发888官方zhuce| 黄骅市| 百家乐官网单机破解版| 百家乐官网五湖四海娱乐平台| 百家乐庄的概率| 好运来百家乐现金网| 聚龍社百家乐的玩法技巧和规则| 云顶国际娱乐网| 百家乐官网玩牌| 澳门百家乐有赢钱的吗| 大发888赌场官方下载| 网上娱乐城排名| 玩百家乐官网澳门368娱乐城| 百家乐官网真人视屏游戏| 克拉克百家乐官网的玩法技巧和规则 | 娱乐城开户送| 网上百家乐官网导航| 百家乐最好的平台是哪个| 沙龙百家乐娱乐场| 盈丰娱乐城| 汇丰百家乐官网的玩法技巧和规则 |