偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

OpenHarmony開(kāi)發(fā)入門—潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建

系統(tǒng) OpenHarmony
OpenHarmony是一個(gè)操作系統(tǒng),他由多個(gè)系統(tǒng)或者叫做子系統(tǒng)集構(gòu)成,而每個(gè)系統(tǒng)又是由多個(gè)子系統(tǒng)構(gòu)成,每個(gè)子系統(tǒng)又包括了多個(gè)組件,子系統(tǒng)和組件,都是可以被裁剪的。

想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

openharmony的編譯構(gòu)建系統(tǒng)

1、概念

一個(gè)基于gn和ninja的、以支持OpenHarmony組件化開(kāi)發(fā)為目標(biāo)的現(xiàn)代化編譯構(gòu)建系統(tǒng)。

ninja:一個(gè)專注于速度的小型編譯構(gòu)建系統(tǒng).
gn:一種現(xiàn)代化的跨平臺(tái)的編輯構(gòu)建工具,Generate ninja 的縮寫,用于產(chǎn)生ninja文件.
hb:OpenHarmony的命令行工具,用來(lái)執(zhí)行編譯命令.

2、基本功能

  • 獨(dú)立構(gòu)建單個(gè)組件
  • 獨(dú)立構(gòu)建芯片解決方案廠商源碼(開(kāi)發(fā)板)
  • 支持按組件拼裝產(chǎn)品并編譯

3、核心理念

子系統(tǒng)

一個(gè)邏輯概念,由一個(gè)或多個(gè)具體組件構(gòu)成。
OpenHarmony系統(tǒng)功能按"系統(tǒng)">“子系統(tǒng)”>"組件"逐級(jí)展開(kāi),支持裁剪子系統(tǒng)或組件。

組件

可復(fù)用、可配置、可裁剪的系統(tǒng)最小功能單元。
APP也是組件的一種。
組件目錄獨(dú)立,可并行開(kāi)發(fā)、單獨(dú)編譯、單獨(dú)測(cè)試。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

最頂層的openharmony是一個(gè)操作系統(tǒng),他由多個(gè)系統(tǒng)或者叫做子系統(tǒng)集構(gòu)成,而每個(gè)系統(tǒng)又是由多個(gè)子系統(tǒng)構(gòu)成,每個(gè)子系統(tǒng)又包括了多個(gè)組件,子系統(tǒng)和組件,都是可以被裁剪的。

(裁剪,就是去掉它不要,在最終的構(gòu)建中不包括他)下面我們來(lái)看一下build/lite下的目錄結(jié)構(gòu)。

打開(kāi)vscode,從虛擬機(jī)中獲取1.1.3版本的源碼。獲取源碼的步驟可以看我上一篇博客:https://ost.51cto.com/posts/25292。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

├── components-------//組件描述文件
├── config-------------//編譯相關(guān)的配置項(xiàng)
│ ├── component------//組件相關(guān)的模板定義
│ ├── kernel---------//內(nèi)核的編譯配置參數(shù)
│ └── subsystem------//子系統(tǒng)模版
├── figures------------//readme中的圖片
├── hb-----------------//hb pip安裝包源碼
├── make_rootfs--------//文件系統(tǒng)鏡像制作腳本
├── ndk----------------//Native API相關(guān)編譯腳本與配置參數(shù)
├── platform-----------//ld腳本
├── testfwk------------//測(cè)試編譯框架
├── toolchain----------//編譯工具鏈配置,包括編譯器路徑、編譯選項(xiàng)、鏈接選項(xiàng)等

4、編譯構(gòu)建流程

編譯構(gòu)建流程主要分為兩步:設(shè)置(hb set) 和 編譯(hb build)。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

hb set用來(lái)設(shè)置Openharmony源碼目錄和要編譯的目標(biāo)。
比如在如下圖中,我們選擇編譯的產(chǎn)品是wifiiot_hispark_pegasus

hb build 編譯開(kāi)發(fā)板、產(chǎn)品或組件。
主要過(guò)程:

  • 讀取編譯配置:根據(jù)產(chǎn)品選擇的開(kāi)發(fā)板,讀取開(kāi)發(fā)板config.gni文件內(nèi)容,主要包括編譯工具鏈、編譯鏈接命令和選項(xiàng)等。
  • 調(diào)用gn:調(diào)用"gn gen",讀取產(chǎn)品配置,生成產(chǎn)品解決方案out目錄和ninja文件。
  • 調(diào)用ninja: 調(diào)用"ninja -C out/board/product"啟動(dòng)編譯。
  • 系統(tǒng)鏡像打包:將組件編譯產(chǎn)物打包,設(shè)置文件屬性和權(quán)限,制作文件系統(tǒng)鏡像。

注意: 在輕量系統(tǒng)中,組件作為一個(gè)單獨(dú)的模塊,不能夠直接燒錄到開(kāi)發(fā)板中,他必須加入到一個(gè)產(chǎn)品或者是一個(gè)開(kāi)發(fā)板方案中,作為一個(gè)完整的固件之中的一個(gè)功能點(diǎn)。

編譯構(gòu)建系統(tǒng)的配置規(guī)則

概述:為了實(shí)現(xiàn)組件、芯片解決方案、產(chǎn)品解決方案與OpenHarmony是解耦的、可插拔(可裁剪)的,組件、芯片解決方案和產(chǎn)品解決方案的路徑、目錄樹(shù)和配置需遵循一定的規(guī)則。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

何為目錄樹(shù)呢:

一般情況下我們會(huì)為一個(gè)組件建立一個(gè)單獨(dú)的目錄。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

  • 組件源碼路徑不能隨意亂來(lái),要分為三個(gè)層級(jí):{領(lǐng)域}/{子系統(tǒng)}/{組件}。
  • 領(lǐng)域:子系統(tǒng)集。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

確定好組件目錄的具體位置后,相當(dāng)于組件就有了一個(gè)家,而這個(gè)家需要簡(jiǎn)單的裝修一下,劃分一下功能區(qū)。

就像我們的家里有客廳,廚房,臥室等等。組件的家也需要有一定的結(jié)構(gòu),這個(gè)結(jié)構(gòu)就是目錄樹(shù)。下面我們來(lái)看一個(gè)例子:

  • 源碼分析: loT外圍設(shè)備控制組件。
  • 這個(gè)組件的源碼路徑為:base/iot hardware/peripheral。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

打開(kāi)vscode,找到這個(gè)路徑。顯示如下:

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

正是符合上圖的源碼目錄樹(shù)規(guī)則:

  • kits目錄下存放了應(yīng)用接口。
  • 擴(kuò)展名是.h的文件正是接口頭文件,使用具體的接口時(shí),要去include他們。
  • BUILD.gn是組件編譯腳本。

至此,我們對(duì)Openharmony編譯構(gòu)建系統(tǒng)的理解已經(jīng)邁進(jìn)了一大步。

組件的定義

作為一個(gè)組件,必須要注冊(cè)到一個(gè)子系統(tǒng)中,Openharmony才會(huì)意識(shí)到你的存在。

定義的位置:build/lite/components/<對(duì)應(yīng)子系統(tǒng)>.json。

打開(kāi)vscode,找到這個(gè)路徑,顯示如下:

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

可以看到,這里存放了很多json文件,而每一個(gè)json文件都對(duì)應(yīng)了一個(gè)子系統(tǒng)。

在定義子系統(tǒng)的json文件時(shí),我們要把自己的基本情況告訴這個(gè)子系統(tǒng)。

注意:新增組件時(shí)需要在對(duì)應(yīng)子系統(tǒng)json文件中添加相應(yīng)的組件定義。產(chǎn)品所配置的組件必須在某個(gè)子系統(tǒng)中被定義過(guò),否則會(huì)校驗(yàn)失敗。

下面我們來(lái)看一下需要定義的內(nèi)容有哪些。

  • 名稱
  • 功能簡(jiǎn)介
  • 是否必選
  • 源碼路徑
  • 編譯目標(biāo)
  • RAM
  • ROM
  • 編譯輸出
  • 已適配的內(nèi)核、
  • 可配置的特性和依賴等。
    我們繼續(xù)來(lái)看一個(gè)例子。還是剛剛的IoT外圍設(shè)備控制組件,在build/lite/components/iot_hardware.json中。

組件的編譯目標(biāo)(編譯入口)

其實(shí)就是組件定義中的targets參數(shù)。

格式:

  • “targets”:[“路徑:目標(biāo)”]。
  • 路徑:采用絕對(duì)路徑表示,以"http://"開(kāi)頭,從源碼根目錄開(kāi)始。
  • 目標(biāo):由"路徑/BUILD.gn"定義。

舉個(gè)例子:

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

“targets”:[“//base/iot_hardware/peripheral:iothardware”]

  • 路徑: //base/iot_hardware/peripheral
  • 目標(biāo): iothardware Openharmony會(huì)去這個(gè)路徑下找到BUILD.gn文件,在這個(gè)文件中,找到iothardware這個(gè)目標(biāo)部分,按這部分的要求進(jìn)行編譯。

下面我們就來(lái)看一下BUILD.gn文件如何編寫。

組件的編譯腳本

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

類型

  • 靜態(tài)庫(kù) (.a) : static_library
  • 動(dòng)態(tài)庫(kù) (.so) : shared_library
  • 可執(zhí)行文件 (bin 文件 ) : executable
  • 組: group

目標(biāo):編譯目標(biāo)名稱(官方建議與組件一致)

  • sources :源文件列表
  • include_dirs : include 目錄列表

舉個(gè)例子:IoT外圍設(shè)備控制組件。

先從組件定義的json文件中找到編譯目標(biāo): build\lite\components\iot_hardware.json -> targets。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

再根據(jù)targets中的路徑找到BUILD.gn編譯腳本:base\iot_hardware\peripheral\BUILD.gn。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

注意:此腳本負(fù)責(zé)整個(gè) IoT 專有硬件服務(wù)子系統(tǒng)的編譯。通過(guò)subsystem_components( 子系統(tǒng)組件 ) 方式指定 IoT 外圍設(shè)備控制組件,指向下級(jí)編譯腳本。 “$ohos_vendor_adapter_dir” 表示 “device\hisilicon\hispark_pegasushi3861_adapter” 目錄。

我們?cè)俑櫟?device\hisilicon\hispark_pegasus\hi3861_adapter\hals\iot_hardware\wifiiot_liteBUILD.gn,如下正是組件的編譯腳本內(nèi)容。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

下面我們?cè)倏匆粋€(gè)例子,kv_store 組件(鍵值存儲(chǔ)),他位于 build\lite\components\utils.json 中的第 1 個(gè)組件。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

編譯腳本: utils\native\lite\kv_store\BUILD.gn。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

注意:此腳本通過(guò) lite_component( 組件 ) 的 features( 模塊 ) 方式。

指定 utils_kv_store 模塊,指向下級(jí)編譯腳本。

我們跟蹤到utils\native\lite\kv_store\src\BUILD.gn,如下正是組件編譯腳本。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

到這,我們編譯構(gòu)建系統(tǒng)的配置規(guī)則也就學(xué)習(xí)完了,相信同學(xué)們會(huì)對(duì)Openharmony的構(gòu)建編譯系統(tǒng)有更深一步的理解。

下面附上子系統(tǒng)的構(gòu)建模型。

【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)【openharmony開(kāi)發(fā)入門】潤(rùn)和智能家居套件-輕量系統(tǒng)的編譯構(gòu)建-開(kāi)源基礎(chǔ)軟件社區(qū)

小編將會(huì)在下一篇博客中講解如何新增組件和輕量系統(tǒng)的數(shù)據(jù)持久化。

想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

責(zé)任編輯:jianghua 來(lái)源: 51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2023-08-07 15:13:09

設(shè)備開(kāi)發(fā)鴻蒙

2022-01-24 18:43:20

OpenHarmon操作系統(tǒng)鴻蒙

2023-04-25 16:30:58

設(shè)備開(kāi)發(fā)鴻蒙

2023-04-03 15:39:31

2022-01-21 21:22:24

OpenHarmon操作系統(tǒng)鴻蒙

2023-04-24 15:11:51

系統(tǒng)開(kāi)發(fā)鴻蒙

2023-03-24 14:39:17

鴻蒙系統(tǒng)開(kāi)發(fā)

2022-02-09 19:45:41

MQTTOpenHarmon鴻蒙

2022-06-09 14:40:14

系統(tǒng)移植鴻蒙

2022-01-24 18:35:56

OpenHarmon鴻蒙操作系統(tǒng)

2018-09-19 16:20:17

智能系統(tǒng)開(kāi)源

2022-04-15 14:31:02

鴻蒙操作系統(tǒng)

2022-02-08 15:21:59

Hi3861開(kāi)發(fā)鴻蒙

2022-07-01 10:28:24

智能家居網(wǎng)絡(luò)安全漏洞

2022-02-10 15:07:10

云平臺(tái)OpenHarmon系統(tǒng)開(kāi)發(fā)

2023-05-06 15:41:00

人體傳感器數(shù)據(jù)鴻蒙

2022-03-21 15:42:36

智能家居物聯(lián)網(wǎng)MQTT

2020-11-10 12:08:25

開(kāi)發(fā)框架

2019-12-24 19:31:27

智能家居物聯(lián)網(wǎng)技術(shù)

2022-04-01 15:26:06

Harmony操作系統(tǒng)鴻蒙
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)