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

OpenHarmony設(shè)備開發(fā)基礎(chǔ)之產(chǎn)品信息配置

系統(tǒng) OpenHarmony
本篇文章將詳細(xì)闡述產(chǎn)品信息配置,對Config.Json中的信息進(jìn)行介紹,根據(jù)產(chǎn)品信息配置和構(gòu)建配置梳理出組件和模塊依賴關(guān)系,增加大家對設(shè)備開發(fā)時的產(chǎn)品構(gòu)建的了解。

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

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

??https://ost.51cto.com??

一、前言

本篇文章將詳細(xì)闡述產(chǎn)品信息配置,對config.json中的信息進(jìn)行介紹,根據(jù)產(chǎn)品信息配置和構(gòu)建配置梳理出組件和模塊依賴關(guān)系,增加大家對設(shè)備開發(fā)時的產(chǎn)品構(gòu)建的了解。

二、產(chǎn)品信息配置

這里以hispark_pegasus產(chǎn)品為例進(jìn)行介紹,下圖為hispark_pegasus產(chǎn)品解決方案目錄結(jié)構(gòu)。

#夏日挑戰(zhàn)賽#【FFH】OpenHarmony設(shè)備開發(fā)基礎(chǔ)(二)產(chǎn)品信息配置-開源基礎(chǔ)軟件社區(qū)

#夏日挑戰(zhàn)賽#【FFH】OpenHarmony設(shè)備開發(fā)基礎(chǔ)(二)產(chǎn)品信息配置-開源基礎(chǔ)軟件社區(qū)

上節(jié)已經(jīng)初步介紹過BUILD.gn和config.json。

接下來我們一起看看config.json文件,仍以hispark_pegasus產(chǎn)品為例,配置文件如下:

{
"product_name": "wifiiot_hispark_pegasus", #產(chǎn)品名稱
"type": "mini", #系統(tǒng)類型,可選【mini,small,standard】
"version": "3.0", #config.json的版本號,固定"3.0"
"ohos_version": "OpenHarmony 1.0", #選擇的OS版本
"device_company": "hisilicon", #芯片廠商
"board": "hispark_pegasus", #開發(fā)板名稱
"kernel_type": "liteos_m", #選擇的內(nèi)核類型
"kernel_is_prebuilt": true, #內(nèi)核是否預(yù)編譯
"kernel_version": "", #選擇的內(nèi)核版本
"subsystems": [ #選擇的子系統(tǒng)
{
"subsystem": "applications",
"components": [
{ "component": "wifi_iot_sample_app", "features":[] }
]
},
{
......
#更多子系統(tǒng)和組件
}
],
"third_party_dir": "http://device/soc/hisilicon/hi3861v100/sdk_liteos/third_party",
"product_adapter_dir": "http://vendor/hisilicon/hispark_pegasus/hals"
}

?為了防止過多的注釋,影響了文件本身的數(shù)據(jù)載體,根據(jù)JSON規(guī)范(http://www.json.org, RFC 4627, RFC 7159),json不支持注釋,此處注釋為本人為了在截取代碼旁更直觀地進(jìn)行解釋而添加上去的,是無法編譯通過的。

  1. config.json為編譯構(gòu)建的入口,上述代碼約定了產(chǎn)品名稱、芯片廠商名稱、開發(fā)板名稱、內(nèi)核類型、內(nèi)核版本號、子系統(tǒng)、適配路徑等信息。
  2. 上篇文章介紹芯片解決方案的時候提過,一個開發(fā)板支持多個內(nèi)核配置,可以支持相同內(nèi)核的不同版本,也可以支持配置不同內(nèi)核。修改內(nèi)核類型kernel_type和內(nèi)核版本kernel_version即可切換開發(fā)板已適配的內(nèi)核。
  3. 產(chǎn)品可以通過修改芯片廠商名稱、開發(fā)版本名稱更換廠商和開發(fā)版本,以選擇芯片解決方案。
  4. 除了芯片相關(guān)的配置外,config.json中還配置了組件信息。其逐一定義了需要的子系統(tǒng)subsystem。對于每個subsystem,又逐一定義了其包含的components,以及對于每個component所附帶的編譯features。即配置了產(chǎn)品依賴的系統(tǒng)能力,通過子系統(tǒng)、組件、目標(biāo)等信息設(shè)置具體的依賴對象。通過此功能,OpenHarmony支持根據(jù)實(shí)際需求裁剪某些非必要的子系統(tǒng)或功能/模塊,可通過子系統(tǒng)“組合”出系統(tǒng)功能,增加或刪除某些子系統(tǒng)或組件。
  5. 當(dāng)我們構(gòu)建產(chǎn)品的時候,構(gòu)建工具h(yuǎn)b會根據(jù)芯片方案的命名規(guī)則和config.json中配置的內(nèi)核類型及內(nèi)核版本信息查找到開發(fā)板內(nèi)核配置信息。

那么產(chǎn)品信息配置和芯片解決方案的關(guān)系又是什么樣的呢?

三、產(chǎn)品信息配置與芯片解決方案的關(guān)系

根據(jù)源碼路徑的規(guī)則,產(chǎn)品配置信息在vendor目錄下,芯片解決方案在device目錄下。

  1. 首先,按照命名規(guī)則,并結(jié)合config.json中配置的device_company和board信息,編譯工具可以找到hispark_pegasusk產(chǎn)品配置的開發(fā)板路徑。修改這些信息,可以切換不同的芯片解決方案。例如通過config.json中的hisilicon+hispark_pegasus即可知道芯片解決方案位置//device/hisilicon/hispark_pegasus。
  2. 其次,在芯片解決方案目錄下,BUILD.gn配置了SDK開發(fā)板編譯信息。子目錄分別保存了SDK相關(guān)的其他組件信息。開發(fā)板支持的每一個內(nèi)核版本需要有一個獨(dú)立的目錄來存放,建議的命名方式是“_”連接了kernel_type和kernel_version形成文件夾名稱。并且目錄中config.gni文件配置開發(fā)板相關(guān)的編譯配置。config.gni中的kernel_type和kernel_version和產(chǎn)品構(gòu)建配置文件config.json中的配置匹配時,config.gni中的配置將被選為產(chǎn)品對應(yīng)的板級配置。例如,通過config.json中的liteos_m即可選擇//device/hisilicon/hispark_pegasus/liteos_m/config.gni一般情況下可找到對應(yīng)的kernel_type_kernel_version/config.gni。

綜上所述,以圖形的方式把hispark_pegasus產(chǎn)品配置展開后,我們可以直觀的看到組件間的依賴關(guān)系:

#夏日挑戰(zhàn)賽#【FFH】OpenHarmony設(shè)備開發(fā)基礎(chǔ)(二)產(chǎn)品信息配置-開源基礎(chǔ)軟件社區(qū)

BUILD.gn配置了產(chǎn)品解決方案的相關(guān)配置,包括依賴的模塊等等,但在hispark_pegasus產(chǎn)品代碼中僅設(shè)置了一個空的構(gòu)建對象group:

# Copyright (C) 2020 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved.
group("hispark_pegasus") {
}

而不空的構(gòu)建對象如下圖hispark_taurus的BUILD.gn。

#夏日挑戰(zhàn)賽#【FFH】OpenHarmony設(shè)備開發(fā)基礎(chǔ)(二)產(chǎn)品信息配置-開源基礎(chǔ)軟件社區(qū)

為舉例說明,關(guān)系圖中通過虛線增加了一個init_configs依賴,這樣被依賴的模塊會一起參與編譯。另外,config.json。

中配置的芯片和系統(tǒng)組件都會通過我前面所說的一樣加入到構(gòu)建中來(關(guān)系圖中的紅字1,2步驟)。

四、引入芯片解決方案的兩種方式

hispark把芯片SDK配置到了vendor子系統(tǒng)中,config.json通過子系統(tǒng)和組件配置形成對芯片SDK的依賴,最終一起編譯出產(chǎn)品構(gòu)建。

從流程上來說,產(chǎn)品構(gòu)建時,首先加載產(chǎn)品構(gòu)建信息,從config.json中解析出子系統(tǒng)和組件、芯片相關(guān)的信息,并識別模塊的依賴關(guān)系。然后,從產(chǎn)品的編譯入口BUILD.gn。

開始執(zhí)行編譯,使用gn產(chǎn)生ninja文件,并使用ninja進(jìn)行編譯構(gòu)建。這是引入芯片解決方案的方式之一——默認(rèn)編譯,隱性依賴。

這種方式不需要在config.json中配置對芯片SDK的依賴。

方式二是指通過子系統(tǒng)配置顯性依賴

  1. 在芯片組件目錄下,根據(jù)模塊劃分配置各組件構(gòu)建信息。
  2. 一般在vendor子系統(tǒng)中配置SDK組件信息,例如:hi3861_sdk??梢耘渲枚鄠€可拆分組合的組件。
  3. config.json中配置對vendor子系統(tǒng)中SDK的依賴,例如如下摘自vendor/hisilicon/hispark_pegasus/config.json的代碼所做的操作:
{
"subsystem": "vendor",
"components": [
{ "component": "hi3861_sdk", "target": "http://device/soc/hisilicon/hi3861v100/sdk_liteos:wifiiot_sdk", "features":[] }
]
},

在上述代碼指向的target中即可看到對應(yīng)的芯片解決方案。

#夏日挑戰(zhàn)賽#【FFH】OpenHarmony設(shè)備開發(fā)基礎(chǔ)(二)產(chǎn)品信息配置-開源基礎(chǔ)軟件社區(qū)

這種方案需要在vendor子系統(tǒng)中配置芯片SDK組件,然后在config.json中增加對vendor子系統(tǒng)的SDK組件依賴。

這種顯性依賴可以明顯看出產(chǎn)品解決方案依賴的具體子系統(tǒng)和具體組件。如果SDK提供的組件較多(如上圖),可以在vendor子系統(tǒng)中配置多個獨(dú)立的組件,以便拆分組合不同的系統(tǒng)能力。

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

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

??https://ost.51cto.com??。

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2012-11-08 10:27:22

WEB產(chǎn)品架構(gòu)架構(gòu)

2022-03-02 16:08:31

Harmony應(yīng)用開發(fā)鴻蒙

2022-02-21 15:38:57

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

2022-09-07 15:35:49

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

2014-10-15 16:56:09

華為企業(yè)

2009-07-28 03:42:00

ASP.NET Gri

2023-04-07 09:20:55

2010-01-07 09:21:52

蘋果信息泄密

2022-10-24 14:54:29

LWIP協(xié)議鴻蒙

2015-03-10 10:22:05

2022-10-25 14:51:11

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

2022-09-06 15:25:22

Wifi設(shè)備開發(fā)

2010-09-22 15:00:09

OracleSolaris

2014-06-11 09:18:24

Informatica

2022-09-22 15:23:40

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

2022-02-15 14:06:36

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

2015-08-04 13:57:42

Informatica信息管理

2014-09-01 10:03:54

銳捷網(wǎng)絡(luò)云路由

2022-05-19 15:40:37

配網(wǎng)開發(fā)設(shè)備開發(fā)

2022-02-15 14:45:14

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

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