在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    379

    瀏覽量

    28130
  • 編譯
    +關注

    關注

    0

    文章

    657

    瀏覽量

    32870
  • 小米
    +關注

    關注

    70

    文章

    14354

    瀏覽量

    144177
  • 鴻蒙
    +關注

    關注

    57

    文章

    2351

    瀏覽量

    42849
  • OpenHarmony
    +關注

    關注

    25

    文章

    3722

    瀏覽量

    16313

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

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

收藏 人收藏

    評論

    相關推薦

    史無前例,移植V8虛擬機到純血鴻蒙系統

    層使用,為保證基于Roma框架開發的業務可以零成本、無縫運行到鴻蒙系統,需要將Roma框架適配鴻蒙系統。 Roma
    的頭像 發表于 09-18 10:28 ?1144次閱讀
    史無前例,<b class='flag-5'>移植</b>V8虛擬機到純血<b class='flag-5'>鴻蒙</b>系統

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

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

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

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

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

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

    基于openharmony適配移植的ohos原生UI框架

    項目介紹 項目名稱:XUI 所屬系列:openharmony的第三方組件適配移植 功能:一個簡潔而又優雅的ohos原生UI框架,解放你的雙手! 項目移植狀態:主功能完成 調用差異:無
    發表于 04-07 09:04 ?1次下載

    基于openharmony適配移植支持無縫換膚的MultipleTheme框架

    項目介紹 項目名稱:MultipleTheme 所屬系列:openharmony的第三方組件適配移植 功能:支持無縫換膚的框架,配合theme和換膚控件框架可以做到無縫切換換膚 項目
    發表于 04-07 09:14 ?2次下載

    基于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 ?3481次閱讀

    鴻蒙設備移植:SoC適配

    OpenHarmony 系統移植最核心的步驟是內核的移植,內核的穩定是一切子系統穩定的基礎,上一篇我們講述了內核啟動原理,以及 vendor、board 的開發配置,本文將介紹 SoC 層級的移植
    的頭像 發表于 05-22 10:49 ?1445次閱讀
    <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移植的路上,文檔資料的缺失讓我倍感痛苦,如今
    的頭像 發表于 02-06 14:04 ?1333次閱讀
    OpenHarmony<b class='flag-5'>富</b><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 ?2328次閱讀
    OpenHarmony<b class='flag-5'>富</b><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 ?876次閱讀
    使用 Taro 開發<b class='flag-5'>鴻蒙</b>原生應用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應用開發<b class='flag-5'>指南</b>
    主站蜘蛛池模板: 日本在线黄| 久久久久久久网站| 国产精品久久永久免费| 男人免费看片| 亚洲精品美女久久久aaa| 色妞综合| 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 欧美成人免费| 天天草天天射| 男女视频在线看| 免费看美女的逼| 可以看黄色的网站| 国产成人毛片亚洲精品不卡| 六月婷婷七月丁香| 久久99国产亚洲高清观看首页| 国产三级观看久久| 精品国产香港三级| 97se亚洲综合| 瑟瑟网站免费| 五月花亚洲| 狠狠色色综合网站| 国内精品久久久久影院薰衣草 | 国产成人1024精品免费| 性欧美xxxx视频| 永久免费看片| 亚洲成av人影片在线观看| 免费网站色| 国产高清区| 四虎现在的网址入口| 我爱操| 久久99热精品免费观看无卡顿 | 久久天天躁夜夜躁狠狠| 亚洲欧洲色天使日韩精品| 成人欧美一区二区三区小说| 91在线操| 久久久久88色偷偷| 视频在线播放免费| 你懂的网址在线| 福利视频自拍偷拍| 日本免费黄色大片| 精品女同|