自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

想了解更多關(guān)于開源的內(nèi)容,請訪問:

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

https://ost.51cto.com

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

1、概念

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

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

2、基本功能

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

3、核心理念

子系統(tǒng)

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

組件

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

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

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

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

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

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

├── components-------//組件描述文件
├── config-------------//編譯相關(guān)的配置項
│ ├── 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------------//測試編譯框架
├── toolchain----------//編譯工具鏈配置,包括編譯器路徑、編譯選項、鏈接選項等

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

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

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

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

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

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

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

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

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

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

何為目錄樹呢:

一般情況下我們會為一個組件建立一個單獨的目錄。

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

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

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

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

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

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

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

打開vscode,找到這個路徑。顯示如下:

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

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

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

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

組件的定義

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

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

打開vscode,找到這個路徑,顯示如下:

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

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

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

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

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

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

組件的編譯目標(編譯入口)

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

格式:

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

舉個例子:

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

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

  • 路徑: //base/iot_hardware/peripheral
  • 目標: iothardware Openharmony會去這個路徑下找到BUILD.gn文件,在這個文件中,找到iothardware這個目標部分,按這部分的要求進行編譯。

下面我們就來看一下BUILD.gn文件如何編寫。

組件的編譯腳本

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

類型

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

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

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

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

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

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

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

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

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

我們再跟蹤到 device\hisilicon\hispark_pegasus\hi3861_adapter\hals\iot_hardware\wifiiot_liteBUILD.gn,如下正是組件的編譯腳本內(nèi)容。

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

下面我們再看一個例子,kv_store 組件(鍵值存儲),他位于 build\lite\components\utils.json 中的第 1 個組件。

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

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

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

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

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

指定 utils_kv_store 模塊,指向下級編譯腳本。

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

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

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

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

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

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

想了解更多關(guān)于開源的內(nèi)容,請訪問:

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

https://ost.51cto.com

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

2023-08-07 15:13:09

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

2022-01-24 18:43:20

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

2023-04-03 15:39:31

2023-04-25 16:30:58

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

2023-04-24 15:11:51

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

2022-01-21 21:22:24

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

2023-03-24 14:39:17

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

2022-01-24 18:35:56

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

2022-06-09 14:40:14

系統(tǒng)移植鴻蒙

2022-02-09 19:45:41

MQTTOpenHarmon鴻蒙

2022-02-08 15:21:59

Hi3861開發(fā)鴻蒙

2018-09-19 16:20:17

智能系統(tǒng)開源

2022-02-10 15:07:10

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

2023-05-06 15:41:00

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

2022-07-01 10:28:24

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

2022-04-15 14:31:02

鴻蒙操作系統(tǒng)

2020-11-10 12:08:25

開發(fā)框架

2019-12-24 19:31:27

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

2022-03-21 15:42:36

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

2023-06-25 14:52:04

智能家居開發(fā)鴻蒙
點贊
收藏

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