<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙富設備移植指南:編譯框架適配

OpenHarmony技術社區 ? 來源:OST開源開發者 ? 2023-02-08 09:15 ? 次閱讀

上一篇我們成功將 OpenHarmony 移植到小米 6 手機上,今天給大家講解 OpenHarmony 編譯部分。

OH 編譯框架適配

特別說明:OH 3.2 beta4 我移植過多款設備,輸入子系統會開機崩潰,還沒找到具體原因。

移植的時候 OH 3.2 beta5 還沒出來了,所以小米 6 先以樹莓派移植時比較順利的 OH 3.2 beta3 版本進行移植,勇于嘗試的同學可以基于最新的 OH3.2 beta5 版本。

修改編譯框架需要 GN 相關的知識,同時社區也有豐富的文章講解鴻蒙的編譯框架,有疑問時可以先查看社區文章進行學習。

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

/device/board/xiaomi/sagit

/device/soc/qualcomm/

/vendor/xiaomi/sagit

基本配置思路是參考官方開發板,復制 hihope 的 rk3568,替換成自己的,比如小米 6 的代號是 sagit,需要把 rk3568 替換成 sagit。

以下進行簡單舉例,詳細移植方法之前有發過移植適配的文章,可以先看,別的大神也都發過,編譯框架的移植適配套路都差不多,在此不再重復講解,文章中的代碼是 beta1 的,查看代碼倉時請切換到 beta3 分支。

https://ost.51cto.com/posts/14280

修改配置文件:config.json;修改 GN 編譯文件:各級目錄下的 x.gn,x.gni,x.build。

config.json 舉例:

0238dd6c-a735-11ed-bfe3-dac502259ad0.png

.build 文件舉例:

024a3030-a735-11ed-bfe3-dac502259ad0.png

.gn 文件文件舉例:

0259f628-a735-11ed-bfe3-dac502259ad0.png

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

hihope--->xiaomi

rk3568--->sagit(soc目錄下是rk3568--->msm8998)

rockchip--->qualcomm
修改完成之后執行編譯:
./build.sh--product-namesagit--ccache

修改時會不斷有修改漏的或者錯的地方,沒有經驗的話可能會花比較長的時間,新手需要注意,成功的標志是編譯完成并顯示 build successful。

02684e30-a735-11ed-bfe3-dac502259ad0.png

OH編譯框架定制

①vendor 部分的定制修改

OH 編譯的起點是從 vendor 下的 config.json 開始的,我們首先進行這個配置文件的修改,首先加密相關的這兩個選項關掉,降低移植難度。

027a9806-a735-11ed-bfe3-dac502259ad0.png

ril 蜂窩網絡相關,xiaomi6 沒有驅動進行使能,去掉,新增 graphic 配置,覆蓋掉 rich.json 繼承過來的配置,配置關閉 gpu 渲染。

028f7762-a735-11ed-bfe3-dac502259ad0.png

ab 分區啟動不適配,設置成 false:

02b14b76-a735-11ed-bfe3-dac502259ad0.png

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

②board 部分的定制修改

在 board 中,我刪掉了 bootanimation,updater,定制了 kernel,增加了 frimware,test。 刪掉 bootanimation 是因為這個是廠商根據 OH 動畫生成工具生成的動畫,我不需要定制開機畫面所以去掉了 bootanimation,updater 也是一樣,我不需要更新分區,所以不需要配置也刪掉了。 我也定制了 kernel 的編譯方式,因為 OH 官方的編譯方式是從 board 倉中統一轉到 kernel/linux/build 下,調用里面的編譯腳本,采用官方 OH 內核+soc 廠商 patch+config 的形式進行編譯。 我是采用第三方內核的方式進行移植,所以不適用官方的編譯方式,需要自己定制編譯腳本。

增加 frimware 是為了在 ramdisk 中添加驅動固件,test 是自己找的一些測試例子,用來輔助移植。

02c3a6b8-a735-11ed-bfe3-dac502259ad0.png

定制 kernel 編譯方式,官方的編譯方式可以概括為:

復制 kernel 源碼到 out/KERNEL_OBJ/kernel/src_tmp 目錄下

打上 hdf.patch(使內核支持 hdf 驅動框架)

打上 soc.patch(使內核支持對應的芯片平臺)

復制 config(復制對應芯片平臺的內核配置到 out 下的 kernel 目錄)

編譯內核,設備樹

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

復制我定制的 kernel 源碼到 out/KERNEL_OBJ/kernel/src_tmp 目錄下

打上 hdf.patch(使內核支持 hdf 驅動框架)

復制 config(修改復制為放置在我 board 倉下的 config)

編譯內核,設備樹

內核源碼我是采用了 pmOS 的 msm8998 的主線代碼:

QualcommSnapdragon835Mainline/Linux·GitLab
https://gitlab.com/msm8998-mainline/linux
根據 pmOS 移植教程我找到了 xiaomi6 的內核編譯配置,可以看到是采用 Linux 6.0 版本。

02e4f3b8-a735-11ed-bfe3-dac502259ad0.png

克隆代碼到 kernel 目錄下:

gitclonehttps://gitlab.com/msm8998-mainline/linux.git-bmainline/6.0linux-sagit
03171992-a735-11ed-bfe3-dac502259ad0.png 修改定制自己內核編譯的一些信息,完整代碼參考樹莓派移植 board 倉。 0326b154-a735-11ed-bfe3-dac502259ad0.png

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

033342b6-a735-11ed-bfe3-dac502259ad0.png

新建 BUILD.gn,每個文件都寫一個配置:

0345ef92-a735-11ed-bfe3-dac502259ad0.png

四個文件寫完配置之后放到一個分組里:

035e8340-a735-11ed-bfe3-dac502259ad0.png

對應到上層目錄的 BUILD.gn:

036d6f2c-a735-11ed-bfe3-dac502259ad0.png

定制分區配置:根據上一篇我們獲取到的分區信息,修改分區配置,另外 rk3568 的 data 分區采用 f2fs 格式,我們采用 ext4 格式。

所以采用的是舊的格式,可以參考 fstab.A311D 的配置。

0381e1aa-a735-11ed-bfe3-dac502259ad0.png

定制 test:這個目錄下是我自己添加的輔助移植測試顯示基本功能的例子,來源自【何小龍】的 drm 系列文章,用于學習 drm 和測試顯示屏驅動,大家感興趣的話可以去看看何小龍的文章。

不懂如何添加到 OH 編譯框架的話可以去我開源的樹莓派 board 倉參考:

https://gitee.com/diemit/device_board_raspberrypi/tree/OpenHarmony-3.2-Beta4/rpi4/test

③soc 部分的定制修改

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

039d8180-a735-11ed-bfe3-dac502259ad0.png display 源碼是采用 OH 官方的示例,源代碼在: 03b18e1e-a735-11ed-bfe3-dac502259ad0.png 直接復制到 qualcomm/msm8998/hardware 下并改名成 display。

修改 drm_display.cpp 文件:修改 drm 驅動名稱為【msm】。

03c6f506-a735-11ed-bfe3-dac502259ad0.png

驅動名新手可能怎么找可能會比較懵,可以進入內核源碼目錄下的 driver/gpu/drm/ 對應的 gpu,找到有 xxxdrv.c 的文件,找到 drm_driver 結構體,找到 name 屬性。

04079462-a735-11ed-bfe3-dac502259ad0.png

樹莓派的 gpu 是 vc4: 042246c2-a735-11ed-bfe3-dac502259ad0.png

高通的是 msm:

042e503e-a735-11ed-bfe3-dac502259ad0.png

修改 drm_allocator.cpp 文件:注釋掉海思的私有函數,我們不需要,順便刪掉 hisilicon_drm.h 的引用和 hisilicon_drm.h 文件。

044a97c6-a735-11ed-bfe3-dac502259ad0.png

045c11f4-a735-11ed-bfe3-dac502259ad0.png

添加 display_gfx.c 文件:內部不用實現,這部分是 2d 圖形加速適配的,先不適配。

0466b5b4-a735-11ed-bfe3-dac502259ad0.png

修改 BUILD.gn 文件:修改基本原則是把 def 去掉,include 改為自己的目錄。

0477316e-a735-11ed-bfe3-dac502259ad0.png

display_device 需要部分修改適配,根據樹莓派移植經驗。

049417e8-a735-11ed-bfe3-dac502259ad0.png

添加 display_gfx 的動態庫編譯配置:

04aa4ec8-a735-11ed-bfe3-dac502259ad0.png

display 這部分的移植都可以參照我之前移植樹莓派的教程,源碼也開源的,這里只是部分講解,完整代碼請去代碼倉查看。 至此 OH 編譯框架適配說明完畢,執行編譯命令,確保能夠編譯成功?。?! 下一篇將進行 Linux 內核的定制適配和 boot.img 打包,敬請期待!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 移植
    +關注

    關注

    1

    文章

    367

    瀏覽量

    27859
  • 編譯
    +關注

    關注

    0

    文章

    616

    瀏覽量

    32403
  • 小米
    +關注

    關注

    68

    文章

    14133

    瀏覽量

    141795
  • 鴻蒙
    +關注

    關注

    55

    文章

    1651

    瀏覽量

    42132
  • OpenHarmony
    +關注

    關注

    23

    文章

    3328

    瀏覽量

    15172

原文標題:鴻蒙富設備移植指南:編譯框架適配

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    鴻蒙設備學習菜鳥指南》之 【索引及PDF和工具分享】

    本帖最后由 HonestQiao 于 2020-11-3 14:29 編輯 《鴻蒙設備學習菜鳥指南》之 【目錄索引】本帖為索引貼,各節的內容,將逐步發布。本菜鳥指南的寫作目的,是
    發表于 10-30 13:14

    鴻蒙設備學習菜鳥指南》之【一、認識手中的設備

    ` 本帖最后由 HonestQiao 于 2020-10-30 13:49 編輯 《鴻蒙設備學習菜鳥指南》之【一、認識手中的設備】目錄索引一、認識手中的
    發表于 10-30 13:15

    鴻蒙設備學習菜鳥指南》之【八、編譯

    本帖最后由 HonestQiao 于 2020-11-1 19:22 編輯 《鴻蒙設備學習菜鳥指南》之【八、編譯】[目錄索引]根據我們拿到的板子的不同,不同的代碼,在
    發表于 11-01 11:44

    《HarmonyOS 2.0源碼框架分析》直播答疑

    鴻蒙編譯框架是怎樣的;如何利用整個編譯框架實現簡單的 MCU 平臺移植,如STM32 ?回答
    發表于 12-10 22:28

    如何將應用程序移植到運行在基于Arm的設備上的Windows?

    指南介紹如何將應用程序移植到運行在基于Arm的設備上的Windows。該指南首先回顧了一般指南,然后展示了不同
    發表于 08-02 06:06

    鴻蒙適配移植的開源SnackBar消息彈框教程

    項目介紹 項目名稱:開源SnackBar消息彈框 所屬系列:鴻蒙的第三方組件適配移植 功能:支持顯示彈出式提醒,包括文字和點擊效果 項目移植狀態:完成 調用差異:無 開發版本:sdk5
    發表于 03-25 14:13 ?1次下載

    基于openharmony適配移植的全功能Conductor框架

    項目介紹 項目名稱:Conductor 所屬系列:openharmony的第三方組件適配移植 功能:基于component (而非Fraction) 的HAP框架! 項目移植狀態:主功
    發表于 04-07 10:48 ?1次下載

    基于openharmony適配移植的手勢檢測器框架

    項目介紹 項目名稱:手勢檢測器框架 所屬系列:openharmony的第三方組件適配移植 功能:實現各種手勢檢測功能 項目移植狀態:主功能完成 調用差異:無 開發版本:sdk6,Dev
    發表于 04-08 09:17 ?2次下載

    基于鴻蒙適配移植的開源彈幕解析繪制引擎項目

    項目介紹 項目名稱:開源彈幕解析繪制引擎項目 所屬系列:鴻蒙的第三方組件適配移植 功能:支持顯示、隱藏、顯示、暫停、繼續、發送、定時發送彈幕 項目移植狀態:完成 調用差異:無 開發版本
    發表于 04-11 10:38 ?2次下載

    基于鴻蒙適配移植的廣告圖片輪播控件教程

    項目介紹 項目名稱:廣告圖片輪播控件 所屬系列:鴻蒙的第三方組件適配移植 功能:廣告輪播,循環輪播 項目移植狀態:主功能 調用差異:無 開發版本:sdk5,DevEco Studio2
    發表于 04-11 10:40 ?2次下載

    鴻蒙三方庫適配指南

    本文以 OpenHarmony-3.2-Beta4 上適配 modbus 編譯動態庫為例。 獲取三方庫 使用之前要做好代碼溯源,確認可用的版本,開源許可和發布方式等。 通過正確的路徑獲取源碼,可以
    的頭像 發表于 02-14 09:33 ?2399次閱讀

    鴻蒙設備移植:SoC適配

    OpenHarmony 系統移植最核心的步驟是內核的移植,內核的穩定是一切子系統穩定的基礎,上一篇我們講述了內核啟動原理,以及 vendor、board 的開發配置,本文將介紹 SoC 層級的移植
    的頭像 發表于 05-22 10:49 ?793次閱讀
    <b class='flag-5'>鴻蒙</b>瘦<b class='flag-5'>設備</b><b class='flag-5'>移植</b>:SoC<b class='flag-5'>適配</b>

    OpenHarmony富設備移植指南(1)導言

    OpenHarmony富設備移植指南導言。在研究學習OpenHamony移植的路上,文檔資料的缺失讓我倍感痛苦,如今移植樹莓派4b以及小米6
    的頭像 發表于 02-06 14:04 ?775次閱讀
    OpenHarmony富<b class='flag-5'>設備</b><b class='flag-5'>移植</b><b class='flag-5'>指南</b>(1)導言

    OpenHarmony富設備移植指南(2)從postmarketOS獲取移植資源

    OpenHarmony富設備移植指南(2)從postmarketOS獲取移植資源
    的頭像 發表于 02-08 10:58 ?1424次閱讀
    OpenHarmony富<b class='flag-5'>設備</b><b class='flag-5'>移植</b><b class='flag-5'>指南</b>(2)從postmarketOS獲取<b class='flag-5'>移植</b>資源

    使用 Taro 開發鴻蒙原生應用 —— 快速上手,鴻蒙應用開發指南

    鴻蒙原生應用。 在 《使用 Taro 開發鴻蒙原生應用》 系列文章中,我們已經介紹了 鴻蒙的基本概念 和 Taro 適配鴻蒙的原理。本文作
    的頭像 發表于 02-02 16:09 ?396次閱讀
    使用 Taro 開發<b class='flag-5'>鴻蒙</b>原生應用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應用開發<b class='flag-5'>指南</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>