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

OpenHarmony富設(shè)備移植指南(三)—OH編譯框架適配與定制

系統(tǒng) OpenHarmony
小米6先以樹(shù)莓派移植時(shí)比較順利的OH3.2 beta3版本進(jìn)行移植,勇于嘗試的同學(xué)可以基于最新的OH3.2 beta5版本。

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

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

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

1、OH編譯框架適配

特別說(shuō)明:

OH3.2 beta4我移植過(guò)多款設(shè)備,輸入子系統(tǒng)會(huì)開(kāi)機(jī)崩潰,還沒(méi)找到具體原因,移植的時(shí)候OH3.2 beta5還沒(méi)出來(lái)了,所以小米6先以樹(shù)莓派移植時(shí)比較順利的OH3.2 beta3版本進(jìn)行移植,勇于嘗試的同學(xué)可以基于最新的OH3.2 beta5版本。

修改編譯框架需要GN相關(guān)的知識(shí),同時(shí)社區(qū)也有豐富的文章講解鴻蒙的編譯框架,有疑問(wèn)時(shí)可以先查看社區(qū)文章進(jìn)行學(xué)習(xí)。

OH編譯框架適配新設(shè)備時(shí),在3.2版本的前提下,需要新增3個(gè)文件夾,以下為我適配小米6的目錄

/device/board/xiaomi/sagit
/device/soc/qualcomm/
/vendor/xiaomi/sagit

基本配置思路是參考官方開(kāi)發(fā)板,復(fù)制hihope的rk3568,替換成自己的,比如小米6的代號(hào)是sagit,需要把rk3568替換成sagit。以下進(jìn)行簡(jiǎn)單舉例,詳細(xì)移植方法之前有發(fā)過(guò)移植適配的文章,可以先看,別的大神也都發(fā)過(guò),編譯框架的移植適配套路都差不多,在此不再重復(fù)講解,文章中的代碼是beta1的,查看代碼倉(cāng)時(shí)請(qǐng)切換到beta3分支。

修改配置文件:config.json

修改GN編譯文件:各級(jí)目錄下的x.gn,x.gni,x.build

config.json舉例:

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

.build文件舉例:

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

.gn文件文件舉例:

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

定制部分可以先不做,先把編譯需要的文件補(bǔ)充完整,并修改替換掉必要的部分。

hihope ---> xiaomi
rk3568 ---> sagit(soc目錄下是rk3568 ---> msm8998)
rockchip ---> qualcomm

修改完成之后執(zhí)行編譯。

./build.sh --product-name sagit --ccache1.

修改時(shí)會(huì)不斷有修改漏的或者錯(cuò)的地方,沒(méi)有經(jīng)驗(yàn)的話可能會(huì)花比較長(zhǎng)的時(shí)間,新手需要注意,成功的標(biāo)志是編譯完成并顯示build successful。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

2、OH編譯框架定制

(1)vendor部分的定制修改

OH編譯的起點(diǎn)是從vendor下的config.json開(kāi)始的,我們首先進(jìn)行這個(gè)配置文件的修改,首先加密相關(guān)的這兩個(gè)選項(xiàng)關(guān)掉,降低移植難度。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

ril蜂窩網(wǎng)絡(luò)相關(guān),xiaomi6沒(méi)有驅(qū)動(dòng)進(jìn)行使能,去掉,新增graphic配置,覆蓋掉rich.json繼承過(guò)來(lái)的配置,配置關(guān)閉gpu渲染。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

ab分區(qū)啟動(dòng)不適配,設(shè)置成false。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

config.json可以在subsystems內(nèi)配置完所有組件,但是那樣組件列表會(huì)很長(zhǎng),不同的設(shè)備配置會(huì)有大量重復(fù)的配置,所以大部分重復(fù)的組件都添加到了rich.json這個(gè)文件中,源碼在productdefine/common/inherit下,方便開(kāi)發(fā)者繼承引用,如果開(kāi)發(fā)者需要定制某項(xiàng)組件的屬性,只要像我一樣在產(chǎn)品的config.json中再聲明一遍即可覆蓋,其他文件沒(méi)有特別需要定制修改的地方,這里不再做講解。

(2)board部分的定制修改

在board中,我刪掉了bootanimation,updater,定制了kernel,增加了frimware,test。

刪掉bootanimation是因?yàn)檫@個(gè)是廠商根據(jù)OH動(dòng)畫生成工具生成的動(dòng)畫,我不需要定制開(kāi)機(jī)畫面所以去掉了bootanimation,updater也是一樣,我不需要更新分區(qū),所以不需要配置也刪掉了。

我也定制了kernel的編譯方式,因?yàn)镺H官方的編譯方式是從board倉(cāng)中統(tǒng)一轉(zhuǎn)到kernel/linux/build下,調(diào)用里面的編譯腳本,采用官方OH內(nèi)核+soc廠商patch+config的形式進(jìn)行編譯,我是采用第三方內(nèi)核的方式進(jìn)行移植,所以不適用官方的編譯方式,需要自己定制編譯腳本。

增加frimware是為了在ramdisk中添加驅(qū)動(dòng)固件,test是自己找的一些測(cè)試?yán)?,用?lái)輔助移植。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

定制kernel編譯方式

官方的編譯方式可以概括為:

  1. 復(fù)制kernel源碼到out/KERNEL_OBJ/kernel/src_tmp目錄下。
  2. 打上hdf.patch(使內(nèi)核支持hdf驅(qū)動(dòng)框架)。
  3. 打上soc.patch(使內(nèi)核支持對(duì)應(yīng)的芯片平臺(tái))。
  4. 復(fù)制config(復(fù)制對(duì)應(yīng)芯片平臺(tái)的內(nèi)核配置到out下的kernel目錄)。
  5. 編譯內(nèi)核,設(shè)備樹(shù)。

我是參考了官方的build方式,精簡(jiǎn)不用的判斷,定制了自己的編譯方式,概括為:

  1. 復(fù)制我定制的kernel源碼到out/KERNEL_OBJ/kernel/src_tmp目錄下。
  2. 打上hdf.patch(使內(nèi)核支持hdf驅(qū)動(dòng)框架)。
  3. 復(fù)制config(修改復(fù)制為放置在我board倉(cāng)下的config)。
  4. 編譯內(nèi)核,設(shè)備樹(shù)。

內(nèi)核源碼我是采用了pmOS的msm8998的主線代碼:

???Qualcomm Snapdragon 835 Mainline / Linux · GitLab??

根據(jù)pmOS移植教程我找到了xiaomi6的內(nèi)核編譯配置,可以看到是采用Linux 6.0版本。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

克隆代碼到kernel目錄下:

git clone https://gitlab.com/msm8998-mainline/linux.git -b mainline/6.0 
linux-sagit1.

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

修改定制自己內(nèi)核編譯的一些信息,完整代碼參考樹(shù)莓派移植board倉(cāng)。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

定制ramdisk

把上一篇解包得到的固件放到源碼目錄中。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

新建BUILD.gn,每個(gè)文件都寫一個(gè)配置。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

四個(gè)文件寫完配置之后放到一個(gè)分組里。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

對(duì)應(yīng)到上層目錄的BUILD.gn。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

定制分區(qū)配置

根據(jù)上一篇我們獲取到的分區(qū)信息,修改分區(qū)配置,另外rk3568的data分區(qū)采用f2fs格式,我們采用ext4格式,所以和采用的是舊的格式,可以參考fstab.A311D的配置。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

定制test

這個(gè)目錄下是我自己添加的輔助移植測(cè)試顯示基本功能的例子,來(lái)源自csdn【何小龍】的drm系列文章,用于學(xué)習(xí)drm和測(cè)試顯示屏驅(qū)動(dòng),大家感興趣的話可以去看看何小龍的文章,不懂如何添加到OH編譯框架的話可以去我開(kāi)源的樹(shù)莓派board倉(cāng)參考:

??rpi4/test · Diemit/device_board_raspberrypi - 碼云 - 開(kāi)源中國(guó) (?gitee.com??)?

(3)soc部分的定制修改

soc目錄是為了適配各種硬件的比如顯示,GPU,WIFI等待,這里我只定制了display,目標(biāo)不要太大,使用cpu渲染適配display就可以顯示開(kāi)機(jī)了。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

display源碼是采用OH官方的示例,源代碼在。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

直接復(fù)制到qualcomm/msm8998/hardware下并改名成display。

修改drm_display.cpp文件

修改drm驅(qū)動(dòng)名稱為【msm】

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

驅(qū)動(dòng)名新手可能怎么找可能會(huì)比較懵,可以進(jìn)入內(nèi)核源碼目錄下的driver/gpu/drm/對(duì)應(yīng)的gpu,找到有xxxdrv.c的文件,找到drm_driver結(jié)構(gòu)體,找到name屬性。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

樹(shù)莓派的gpu是vc4。


OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

高通的是msm。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

修改drm_allocator.cpp文件

注釋掉海思的私有函數(shù),我們不需要,順便刪掉hisilicon_drm.h的引用和hisilicon_drm.h文件。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

添加display_gfx.c文件

內(nèi)部不用實(shí)現(xiàn),這部分是2d圖形加速適配的,先不適配。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

修改BUILD.gn文件

修改基本原則是把def去掉,include改為自己的目錄。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

display_device需要部分修改適配,根據(jù)樹(shù)莓派移植經(jīng)驗(yàn)。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

添加display_gfx的動(dòng)態(tài)庫(kù)編譯配置。

OpenHarmony富設(shè)備移植指南(3)OH編譯框架適配與定制-開(kāi)源基礎(chǔ)軟件社區(qū)

display這部分的移植都可以參照我之前移植樹(shù)莓派的教程,源碼也開(kāi)源的,這里只是部分講解,完整代碼請(qǐng)去代碼倉(cāng)查看

至此OH編譯框架適配說(shuō)明完畢,執(zhí)行編譯命令,確保能夠編譯成功!

??想了解更多關(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-02-08 15:46:50

設(shè)備移植第三方內(nèi)核適配

2023-04-06 09:10:13

設(shè)備移植鴻蒙

2023-03-10 09:47:45

OpenGL渲染設(shè)備移植

2023-03-06 16:11:00

設(shè)備移植開(kāi)源GPU驅(qū)動(dòng)

2023-02-06 16:21:48

2023-02-14 17:06:31

設(shè)備移植打包刷機(jī)

2023-02-28 15:40:16

鴻蒙CPU渲染

2023-03-23 16:02:07

樹(shù)莓派4GPU調(diào)試

2023-02-07 15:43:13

三方庫(kù)適配鴻蒙

2023-05-16 14:49:25

鴻蒙內(nèi)核移植

2023-05-05 16:05:26

設(shè)備內(nèi)核移植鴻蒙

2022-04-18 10:47:55

UI框架鴻蒙操作系統(tǒng)

2022-03-17 15:55:19

播放數(shù)字音頻解碼鴻蒙

2022-05-11 15:08:52

驅(qū)動(dòng)開(kāi)發(fā)系統(tǒng)移植

2021-12-02 10:05:01

鴻蒙HarmonyOS應(yīng)用

2023-06-12 15:43:44

鴻蒙智能家居開(kāi)發(fā)

2022-09-13 16:10:15

鴻蒙操作系統(tǒng)

2022-10-11 15:04:28

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

2023-05-08 15:59:27

UI自動(dòng)化腳本鴻蒙

2022-04-15 14:31:02

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

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