国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

OpenHarmony開發入門—潤和智能家居套件-輕量系統的編譯構建

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

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

openharmony的編譯構建系統

1、概念

一個基于gn和ninja的、以支持OpenHarmony組件化開發為目標的現代化編譯構建系統。

ninja:一個專注于速度的小型編譯構建系統.
gn:一種現代化的跨平臺的編輯構建工具,Generate ninja 的縮寫,用于產生ninja文件.
hb:OpenHarmony的命令行工具,用來執行編譯命令.

2、基本功能

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

3、核心理念

子系統

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

組件

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

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

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

4、編譯構建流程

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

hb build 編譯開發板、產品或組件。
主要過程:

  • 讀取編譯配置:根據產品選擇的開發板,讀取開發板config.gni文件內容,主要包括編譯工具鏈、編譯鏈接命令和選項等。
  • 調用gn:調用"gn gen",讀取產品配置,生成產品解決方案out目錄和ninja文件。
  • 調用ninja: 調用"ninja -C out/board/product"啟動編譯。
  • 系統鏡像打包:將組件編譯產物打包,設置文件屬性和權限,制作文件系統鏡像。

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

編譯構建系統的配置規則

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

何為目錄樹呢:

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

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

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

正是符合上圖的源碼目錄樹規則:

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

至此,我們對Openharmony編譯構建系統的理解已經邁進了一大步。

組件的定義

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

定義的位置:build/lite/components/<對應子系統>.json。

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

可以看到,這里存放了很多json文件,而每一個json文件都對應了一個子系統。

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

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

下面我們來看一下需要定義的內容有哪些。

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

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

其實就是組件定義中的targets參數。

格式:

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

舉個例子:

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

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

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

組件的編譯腳本

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

類型

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

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

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

舉個例子:IoT外圍設備控制組件。

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

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

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

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

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

到這,我們編譯構建系統的配置規則也就學習完了,相信同學們會對Openharmony的構建編譯系統有更深一步的理解。

下面附上子系統的構建模型。

【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區【openharmony開發入門】潤和智能家居套件-輕量系統的編譯構建-開源基礎軟件社區

小編將會在下一篇博客中講解如何新增組件和輕量系統的數據持久化。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2023-08-07 15:13:09

設備開發鴻蒙

2022-01-24 18:43:20

OpenHarmon操作系統鴻蒙

2023-04-25 16:30:58

設備開發鴻蒙

2023-04-03 15:39:31

2022-01-21 21:22:24

OpenHarmon操作系統鴻蒙

2023-04-24 15:11:51

系統開發鴻蒙

2023-03-24 14:39:17

鴻蒙系統開發

2022-02-09 19:45:41

MQTTOpenHarmon鴻蒙

2022-01-24 18:35:56

OpenHarmon鴻蒙操作系統

2022-06-09 14:40:14

系統移植鴻蒙

2022-02-08 15:21:59

Hi3861開發鴻蒙

2022-02-10 15:07:10

云平臺OpenHarmon系統開發

2022-04-15 14:31:02

鴻蒙操作系統

2018-09-19 16:20:17

智能系統開源

2023-05-06 15:41:00

人體傳感器數據鴻蒙

2022-07-01 10:28:24

智能家居網絡安全漏洞

2020-11-10 12:08:25

開發框架

2022-03-21 15:42:36

智能家居物聯網MQTT

2019-12-24 19:31:27

智能家居物聯網技術

2022-04-01 15:26:06

Harmony操作系統鴻蒙
點贊
收藏

51CTO技術棧公眾號

欧美挤奶吃奶水xxxxx| 91麻豆精品激情在线观看最新 | 亚洲国内精品视频| 视频一区国产精品| 超级碰碰久久| 国产精品18久久久久久久久| 国产二区一区| 四虎影视国产精品| 91美女在线视频| 韩国精品久久久999| 波多野结衣久草一区| 日韩欧美在线观看一区二区| 国产精品一二| 精品美女被调教视频大全网站| 手机亚洲第一页| 国产一区二区三区四区五区美女| 97超视频免费观看| 国际av在线| 欧美精品自拍偷拍动漫精品| 久久精品无码一区二区日韩av| 亚洲特级毛片| 在线精品国产欧美| 成人免费无码av| 日韩精品欧美精品| 国产激情久久久| 老司机精品视频在线观看6| 日韩电影免费在线看| 99re在线| 美女久久久久| 亚洲美女在线观看| 在线观看国产福利视频| 国产欧美日韩卡一| 女女同性女同一区二区三区91| 成人欧美大片| 国产美女在线观看一区| 一区二区日本伦理| 久久国产99| 国产日韩专区在线| 日韩电影免费一区| 国产在线高清精品| 欧美深夜视频| 亚洲精品国产拍免费91在线| 成人自拍在线| 久久国产精品久久| 国产婷婷精品| 99久久99久久| 国产精品99在线观看| 精品国产一区二区国模嫣然| 国产在线三区| 欧美日韩综合一区| 噜噜噜噜噜在线视频| 欧美日本视频在线| 麻豆传媒在线完整视频| 91精品国产免费| 男人影院在线观看| 欧美精品在线视频| 国产天堂在线播放视频| 欧美日韩国产综合视频在线观看 | 亚洲男同gay网站| 91免费在线看| 黑森林福利视频导航| 国产欧美一区视频| 激情 小说 亚洲 图片: 伦| 欧美日韩激情一区二区| 擼擼色在线看观看免费| 欧美精品日日鲁夜夜添| 波多野结衣一区| 久久国产精品免费一区| 久久精品国产一区二区| 看全色黄大色大片| 久久这里只精品最新地址| 成年人视频在线免费| 精品国产网站| 人妻无码一区二区三区四区| 成人免费在线视频观看| 国产一区影院| 亚洲激情自拍图| 日韩成人免费在线| 亚洲专区一二三| 成人教育av| 欧美一区二区三区在线播放| 亚洲综合色噜噜狠狠| 在线日韩三级| 日韩av影视| 日韩一区二区视频| 日韩综合精品| 三上悠亚在线免费观看| 99久久国产免费免费| a视频在线观看免费| 国产精品国内免费一区二区三区| 国产高清在线不卡| 亚洲乱码视频| 精品视频97| 高清一区二区中文字幕| 亚洲va韩国va欧美va精品| 黄在线免费看| 国产综合视频在线观看| 国产亚洲人成a在线v网站| 68国产成人综合久久精品| 亚洲一区二区精品在线| 日本一区二区综合亚洲| 永久免费毛片在线播放| 国内一区在线| 91国内视频| 中文字幕巨乱亚洲| 性爱视频在线播放| 蜜桃成人在线| 精品国产一区二区三区四区在线观看 | 中文字幕日本在线| 午夜免费久久久久| 中文字幕一区二区三区不卡在线| 亚洲第一伊人| 国产51人人成人人人人爽色哟哟| 色在人av网站天堂精品| 国产超碰在线一区| 免费成人黄色网| 欧美这里只有精品| 久久国产精品久久久久久| 国产精品婷婷午夜在线观看| 久久综合99| 免费白浆视频| 国产综合在线观看视频| 黑人巨大精品欧美一区二区| 久久国产小视频| 免费观看在线午夜影视| 中文字幕欧美日韩一区二区| 色噜噜狠狠狠综合曰曰曰88av| 91精品国产色综合久久ai换脸| 狠狠入ady亚洲精品经典电影| 国产一区二区调教| 久久免费视频观看| 美女视频黄 久久| 卡通欧美亚洲| 国产字幕中文| 含羞草久久爱69一区| 粗暴蹂躏中文一区二区三区| 亚洲美女在线国产| 国产一区欧美二区| 99久久久久国产精品| 91精品网站在线观看| 爱情电影社保片一区| 九九热视频在线观看| 成人福利在线视频| 91美女蜜桃在线| 另类av一区二区| 日本aⅴ免费视频一区二区三区| 黑人巨大精品| 成人av影视| 欧美一区二区三区精美影视| 精品日韩美女的视频高清| 人人精品视频| 96av在线| 天堂资源最新在线| 一区二区久久久| 任你躁在线精品免费| 鲁大师精品99久久久| 国产成人精品三级高清久久91| 精品国产一区二区三区2021| 欧美深夜视频| 欧美国产一级| 欧美激情精品久久久六区热门| 国产精品激情电影| 激情综合网天天干| 久久九九精品| 男男视频亚洲欧美| 精品国产第一福利网站| 青青草97国产精品免费观看无弹窗版| 精品久久91| 蜜桃av噜噜一区二区三区小说| 亚洲一区二区五区| 久久av少妇| 欧美一区二区三区高清视频| 国产综合久久久久久久久久久久| 韩国欧美国产1区| 在线观看亚洲精品视频| 久久99久久久久久久噜噜| 国产精品免费一区二区三区在线观看| 欧美午夜性视频| 浪潮av在线| 人人玩人人添人人澡欧美| 麻豆成人91精品二区三区| 色婷婷精品久久二区二区蜜臂av| 欧美日韩国产区一| 日韩精品免费在线播放| 国产欧美日韩综合精品二区| 三上悠亚一区| 在线男人天堂| 亚洲宅男网av| 91色视频在线| 制服丝袜日韩国产| 91国产美女视频| 每日在线观看av| 男人天堂亚洲天堂| 99视频精品全部免费在线视频| 97se亚洲国产综合自在线观| 日韩精品中文字幕一区| 国产精品video| 性色av一区二区| 婷婷精品在线观看| 中文在线一区二区|