0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙移植指南:打包刷機與設(shè)備調(diào)試

OpenHarmony技術(shù)社區(qū) ? 來源:OST開源開發(fā)者 ? 2023-02-20 10:44 ? 次閱讀

上一篇我們?yōu)榇蠹医饣罅?a target="_blank">OpenHarmony 移植為什么這么難?這篇我們將分享打包刷機與簡單設(shè)備調(diào)試。

打包 boot.img 鏡像

boot.img 打包流程如下:

內(nèi)核+設(shè)備樹打包出帶設(shè)備樹的內(nèi)核

設(shè)備樹內(nèi)核+bootimg.cfg+ramdisk.img 打包成 boot.img

①修改內(nèi)核啟動參數(shù)

修改 boot.img 大?。涸鈮撼龅拇笮∈?8m 多,我們的內(nèi)核因為把模塊編譯進內(nèi)核的緣故,容量會增大,導(dǎo)致使用原有配置文件會無法成功打包,所以我們增大到 16m,小米 6 的 boot 分區(qū)有 64m 不會影響 boot.img 的刷入。

bootsize=0x1000000

修改并添加內(nèi)核啟動參數(shù):

cmdline=clk_ignore_unusedconsole=tty1console=ttyGS0,115200no_console_suspendhardware=sagitdefault_boot_device=1da4000.ufshcohos.required_mount.system=/dev/block/platform/soc/1da4000.ufshc/by-name/system@/usr@ext4@ro,barrier=1@wait,requiredohos.required_mount.vendor=/dev/block/platform/soc/1da4000.ufshc/by-name/cust@/vendor@ext4@ro,barrier=1@wait,required

其中 hardware 和 default_boot_device 為 OH 初始化時用于識別設(shè)備的參數(shù),實測不配置也不影響啟動。

hardware=sagitdefault_boot_device=1da4000.ufshc

ohos.required_mount.system 和 ohos.required_mount.vendor 是 OH 啟動必須掛載的兩個分區(qū),必須進行配置。

ohos.required_mount.system=/dev/block/platform/soc/1da4000.ufshc/by-name/system@/usr@ext4@ro,barrier=1@wait,requiredohos.required_mount.vendor=/dev/block/platform/soc/1da4000.ufshc/by-name/cust@/vendor@ext4@ro,barrier=1@wait,required
console=tty1 是為啟動日志輸出到屏幕,后續(xù)可以進行觀察 OH 的渲染框架是否接管屏幕 console=ttyGS0,115200 為開啟串口控制臺,后續(xù)方便進行輸入命令,進行 debug 調(diào)試等。 其他可按需配置,啟動參數(shù)參考標(biāo)準(zhǔn) Linux。

②打包帶設(shè)備樹的內(nèi)核

命令如下,直接用 cat 命令,把內(nèi)核和設(shè)備樹二進制文件直接輸出成 Image.gz-dtb。

cat${KERNEL_IMAGE_FILE}${DTB}>"${OUT_PKG_DIR}/Image.gz-dtb"

③打包 boot.img

命令如下,使用 abootimg 工具,--create 指定進行 boot.img 創(chuàng)建的位置,-f 指定 bootimg.cfg 位置,-k 指定帶設(shè)備樹內(nèi)核的位置,-r 指定 ramdisk.img 的位置。

abootimg--create"${OUT_PKG_DIR}/boot.img"-f${BOOTCFG}-k"${OUT_PKG_DIR}/Image.gz-dtb"-r"${OUT_PKG_DIR}/ramdisk.img"
OH 的編譯框架已經(jīng)幫我們打包好了 system.img 和 vendor.img,在 out/packages/phone/images 中,復(fù)制 boot.img,system.img 和 vendor.img 到電腦中,準(zhǔn)備進行刷機工作。

注意:刷機會格式化手機,請使用備用機進行刷機,刷機前有需要的話請把手機的數(shù)據(jù)復(fù)制到電腦,刷機有風(fēng)險,請自行判斷,變磚概不負(fù)責(zé)?。?!

刷入鏡像

①TWRP 刷入鏡像

按音量鍵上+電源開機進入 TWRP,這時 TWRP 會進入 MTP 模式,把刷機鏡像復(fù)制進手機。

e774f0e0-b069-11ed-bfe3-dac502259ad0.png

選擇安裝:

e78309c8-b069-11ed-bfe3-dac502259ad0.jpg

e7a16436-b069-11ed-bfe3-dac502259ad0.jpg

選擇刷入鏡像,這時才會顯示我們的刷機文件:

e7d7fdc0-b069-11ed-bfe3-dac502259ad0.jpg

選擇 boot.img,選擇 boot 分區(qū):

e7fff6cc-b069-11ed-bfe3-dac502259ad0.jpg

滑動確認(rèn)刷入:

e82aae30-b069-11ed-bfe3-dac502259ad0.jpg

按兩次返回,選擇 system.img,選擇 system 分區(qū):

e846fbb2-b069-11ed-bfe3-dac502259ad0.jpg

同樣按兩次返回,選擇 vendor.img,選擇 vendor 分區(qū): e86766e0-b069-11ed-bfe3-dac502259ad0.jpg 回到主頁,選擇清除,選擇格式化 Data 分區(qū):

e89883ce-b069-11ed-bfe3-dac502259ad0.jpg

輸入 yes,格式化完成后重啟:

e8b2d56c-b069-11ed-bfe3-dac502259ad0.jpg

②fastboot 刷入鏡像

按音量鍵下+開機鍵進入 fastboot 模式,連接電腦,裝好驅(qū)動,使用以下命令進行刷機:

fastbootflashboot(boot.img的路徑)
fastbootflashsystem(system.img的路徑)
fastbootflashvendor(vendor.img的路徑)
fastbooteraseuserdata
fastbootreboot

簡單調(diào)試經(jīng)驗分享

①設(shè)備不斷重啟

上篇文章中我們配置了 usb 串口,如果內(nèi)核驅(qū)動正常的話手機使用 usb 連接電腦會自動識別為 com 設(shè)備,這時我們使用 xshell,mobaxterm 等工具查看串口日志。 e8c7341c-b069-11ed-bfe3-dac502259ad0.png 比如一般不斷重啟是因為 render_service 的崩潰,渲染服務(wù)是關(guān)鍵服務(wù),OH 設(shè)置了崩潰會自動重啟:

e8e098da-b069-11ed-bfe3-dac502259ad0.png

為了調(diào)試我們先更改一下設(shè)置,讓它不自動重啟,找到渲染服務(wù)的配置,把 critical 第一個參數(shù)從 1 改成 0,這樣就不會自動重啟了。

e90fcfe2-b069-11ed-bfe3-dac502259ad0.png

②使用 modetest 測試 DRM 驅(qū)動

要使 OH 能順利點亮,我們首先要確認(rèn)內(nèi)核 DRM 驅(qū)動是否正常工作,這里我使用的是 modetest 進行測試。 modetest 的代碼已經(jīng)存在 libdrm 的倉庫中,但是沒有加入 OH 的編譯框架,有需要的同學(xué)可以參考我移植樹莓的 board 倉,里面的 test 文件夾中有寫好的配置。

編譯好 modetest 之后直接運行是沒有效果的,因為 OH 的渲染服務(wù)占用了顯卡,我們先把渲染服務(wù)關(guān)閉:

service_controlstoprender_service

關(guān)閉渲染服務(wù)之后,我們運行 modetest,modetest 會遍歷設(shè)備所有的顯卡,并打印出信息

modetest

查看 log:

......
tryingtoopendevice'msm'...done
Encoders:
idcrtctypepossiblecrtcspossibleclones
3181DSI0x000000010x00000001

Connectors:
idencoderstatusnamesize(mm)modesencoders
3231connectedDSI-164x114131
modes:
indexnamerefresh(Hz)hdisphsshsehtotvdispvssvsevtot)
#01080x192060.0010801200121612561920192419261930145444flags:;type:preferred,driver
......
我們可以找到,我們的驅(qū)動模塊名為 msm,Connector id 為 32,mode 名為 1080x1920。

查看 modetest 支持的命令,配置這兩個參數(shù):

-Mmoduleusethegivendriver
-s[,][@]:[#][-][@]setamode

我的命令簡化為:

modetest-Mmsm-s32:1080x1920
運行命令后,手機屏幕顯示出顏色條紋,即為 DRM 驅(qū)動工作正常:

e92d788a-b069-11ed-bfe3-dac502259ad0.jpg

③OH 渲染框架調(diào)試

配置 hilog 打印等級,啟動屏幕調(diào)試 hilog 打?。?/p>

e94dcda6-b069-11ed-bfe3-dac502259ad0.png

e96a0af2-b069-11ed-bfe3-dac502259ad0.png

使用命令啟動渲染服務(wù),并過濾只顯示 display 相關(guān)的內(nèi)容:

hilog-D0xD001400&service_controlstartrender_service
打通串口并能顯示 log 信息之后就是各種調(diào)試代碼了,這部分操作就跟開發(fā)板差不多了,接下去就是對照 log 跟代碼不斷拉扯了,教程只能到這里了,祝各位調(diào)試順利。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1345

    瀏覽量

    40152
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    375

    瀏覽量

    28072
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    564

    瀏覽量

    33833
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2287

    瀏覽量

    42629
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3607

    瀏覽量

    15956

原文標(biāo)題:鴻蒙移植指南:打包刷機與設(shè)備調(diào)試

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    PSP3000全系統(tǒng)破解指南

    PSP3000全系統(tǒng)破解指南
    發(fā)表于 08-16 16:27

    鴻蒙設(shè)備學(xué)習(xí)菜鳥指南》之 【索引及PDF和工具分享】

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

    【HiSpark系列】鴻蒙設(shè)備學(xué)習(xí)索引及PDF和工具分享

    本帖最后由 l_xy 于 2020-11-3 11:56 編輯 原文鏈接:https://bbs.elecfans.com/jishu_2003267_1_1.html《鴻蒙設(shè)備學(xué)習(xí)菜鳥指南
    發(fā)表于 11-03 11:54

    非華為手機品牌教程

    壇子里的各位大神你們好!最近鴻蒙的OS的發(fā)布讓人看得熱血沸騰,驚艷無比,想起當(dāng)初用三星手機的時候小米的MIUI,用小米UI后再回三星ui,HTC等。今想請教各位大神誰有做好的
    發(fā)表于 06-05 11:22

    鴻蒙openharmony到RK3566開發(fā)板上的步驟

    連接。需要重啟開發(fā)板,并且長按電源鍵和音量 + ,進入loader模式。當(dāng)機工具提示發(fā)現(xiàn)一個loader設(shè)備時,那么說明已經(jīng)具備的條件了,可以開始
    發(fā)表于 03-15 14:36

    小米手機鴻蒙系統(tǒng)

    鴻蒙系統(tǒng)小米包是一款針對小米手機打造的包,在
    的頭像 發(fā)表于 06-24 14:45 ?2.2w次閱讀
    小米手機<b class='flag-5'>刷</b><b class='flag-5'>鴻蒙</b>系統(tǒng)

    小米鴻蒙系統(tǒng)包下載 安裝教程如下

    小米鴻蒙系統(tǒng)包是一款專為小米手機用戶打造的機工具,是可以讓用戶在小米手機上感受鴻蒙系統(tǒng)的手機軟件,可以縱享大量一鍵
    的頭像 發(fā)表于 06-29 09:44 ?5.4w次閱讀
    小米<b class='flag-5'>鴻蒙</b>系統(tǒng)<b class='flag-5'>刷</b><b class='flag-5'>機</b>包下載 安裝教程如下

    用Cocos引擎遠(yuǎn)程真機設(shè)備來開發(fā)鴻蒙游戲教程

    6 月 25 日,新鮮出爐的 DevEco 2.2 beta 提供了遠(yuǎn)程真調(diào)試,而上周 6 月 18 發(fā)布的 Cocos Creator 3.2 支持一鍵打包鴻蒙項目。 作為一個沒有
    的頭像 發(fā)表于 06-30 08:56 ?1932次閱讀
    用Cocos引擎遠(yuǎn)程真機<b class='flag-5'>設(shè)備</b>來開發(fā)<b class='flag-5'>鴻蒙</b>游戲教程

    小米鴻蒙系統(tǒng)教程

    鴻蒙系統(tǒng)小米包是一款針對小米手機打造的包,在
    的頭像 發(fā)表于 07-02 11:03 ?6.9w次閱讀

    小米鴻蒙系統(tǒng)教程

    鴻蒙系統(tǒng)小米包是一款針對小米手機打造的包,在
    的頭像 發(fā)表于 07-02 11:10 ?7.8w次閱讀

    小米手機如何鴻蒙系統(tǒng)

    最近華為鴻蒙系統(tǒng)非?;?,許多用戶紛紛下載,擁有小米手機的用戶也想體驗下鴻蒙系統(tǒng),在這篇文,將分享小米手機鴻蒙系統(tǒng)的詳細(xì)步驟。
    的頭像 發(fā)表于 07-07 16:18 ?19.7w次閱讀
    小米手機如何<b class='flag-5'>刷</b><b class='flag-5'>鴻蒙</b>系統(tǒng)

    OpenHarmony富設(shè)備移植指南(1)導(dǎo)言

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

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

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

    鴻蒙】標(biāo)準(zhǔn)系統(tǒng)移植指南

    標(biāo)準(zhǔn)系統(tǒng)移植指南 本文描述了移植一塊開發(fā)板的通用步驟,和具體芯片相關(guān)的詳細(xì)移植過程無法在此一一列舉。后續(xù)社區(qū)還會陸續(xù)發(fā)布開發(fā)板移植的實例供開
    的頭像 發(fā)表于 02-27 14:36 ?745次閱讀
    【<b class='flag-5'>鴻蒙</b>】標(biāo)準(zhǔn)系統(tǒng)<b class='flag-5'>移植</b><b class='flag-5'>指南</b>

    PoE受電設(shè)備調(diào)試指南

    電子發(fā)燒友網(wǎng)站提供《PoE受電設(shè)備調(diào)試指南.pdf》資料免費下載
    發(fā)表于 09-24 10:59 ?0次下載
    PoE受電<b class='flag-5'>設(shè)備</b><b class='flag-5'>調(diào)試</b><b class='flag-5'>指南</b>