0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙移植指南:打包刷机与设备调试

OpenHarmony技术社区 来源:OST开源开发者 2023-02-20 10:44 次阅读

上一篇我们为大家解惑了OpenHarmony 移植为什么这么难?这篇我们将分享打包刷机与简单设备调试。

打包 boot.img 镜像

boot.img 打包流程如下:

内核+设备树打包出带设备树的内核

设备树内核+bootimg.cfg+ramdisk.img 打包成 boot.img

①修改内核启动参数

修改 boot.img 大小:原解压出的大小是 8m 多,我们的内核因为把模块编译进内核的缘故,容量会增大,导致使用原有配置文件会无法成功打包,所以我们增大到 16m,小米 6 的 boot 分区有 64m 不会影响 boot.img 的刷入。

bootsize=0x1000000

修改并添加内核启动参数:

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 初始化时用于识别设备的参数,实测不配置也不影响启动。

hardware=sagitdefault_boot_device=1da4000.ufshc

ohos.required_mount.system 和 ohos.required_mount.vendor 是 OH 启动必须挂载的两个分区,必须进行配置。

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 是为启动日志输出到屏幕,后续可以进行观察 OH 的渲染框架是否接管屏幕 console=ttyGS0,115200 为开启串口控制台,后续方便进行输入命令,进行 debug 调试等。 其他可按需配置,启动参数参考标准 Linux

②打包带设备树的内核

命令如下,直接用 cat 命令,把内核和设备树二进制文件直接输出成 Image.gz-dtb。

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

③打包 boot.img

命令如下,使用 abootimg 工具,--create 指定进行 boot.img 创建的位置,-f 指定 bootimg.cfg 位置,-k 指定带设备树内核的位置,-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 的编译框架已经帮我们打包好了 system.img 和 vendor.img,在 out/packages/phone/images 中,复制 boot.img,system.img 和 vendor.img 到电脑中,准备进行刷机工作。

注意:刷机会格式化手机,请使用备用机进行刷机,刷机前有需要的话请把手机的数据复制到电脑,刷机有风险,请自行判断,变砖概不负责!!!

刷入镜像

①TWRP 刷入镜像

按音量键上+电源开机进入 TWRP,这时 TWRP 会进入 MTP 模式,把刷机镜像复制进手机。

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 分区:

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

滑动确认刷入:

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

按两次返回,选择 system.img,选择 system 分区:

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

同样按两次返回,选择 vendor.img,选择 vendor 分区: e86766e0-b069-11ed-bfe3-dac502259ad0.jpg 回到主页,选择清除,选择格式化 Data 分区:

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

输入 yes,格式化完成后重启:

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

②fastboot 刷入镜像

按音量键下+开机键进入 fastboot 模式,连接电脑,装好驱动,使用以下命令进行刷机:

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

简单调试经验分享

①设备不断重启

上篇文章中我们配置了 usb 串口,如果内核驱动正常的话手机使用 usb 连接电脑会自动识别为 com 设备,这时我们使用 xshell,mobaxterm 等工具查看串口日志。 e8c7341c-b069-11ed-bfe3-dac502259ad0.png 比如一般不断重启是因为 render_service 的崩溃,渲染服务是关键服务,OH 设置了崩溃会自动重启:

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

为了调试我们先更改一下设置,让它不自动重启,找到渲染服务的配置,把 critical 第一个参数从 1 改成 0,这样就不会自动重启了。

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

②使用 modetest 测试 DRM 驱动

要使 OH 能顺利点亮,我们首先要确认内核 DRM 驱动是否正常工作,这里我使用的是 modetest 进行测试。 modetest 的代码已经存在 libdrm 的仓库中,但是没有加入 OH 的编译框架,有需要的同学可以参考我移植树莓的 board 仓,里面的 test 文件夹中有写好的配置。

编译好 modetest 之后直接运行是没有效果的,因为 OH 的渲染服务占用了显卡,我们先把渲染服务关闭:

service_controlstoprender_service

关闭渲染服务之后,我们运行 modetest,modetest 会遍历设备所有的显卡,并打印出信息

modetest

查看 log:

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

Connectors:
idencoderstatusnamesize(mm)modesencoders
3231connectedDSI-164x114131
modes:
indexnamerefresh(Hz)hdisphsshsehtotvdispvssvsevtot)
#01080x192060.0010801200121612561920192419261930145444flags:;type:preferred,driver
......
我们可以找到,我们的驱动模块名为 msm,Connector id 为 32,mode 名为 1080x1920。

查看 modetest 支持的命令,配置这两个参数:

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

我的命令简化为:

modetest-Mmsm-s32:1080x1920
运行命令后,手机屏幕显示出颜色条纹,即为 DRM 驱动工作正常:

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

③OH 渲染框架调试

配置 hilog 打印等级,启动屏幕调试 hilog 打印:

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

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

使用命令启动渲染服务,并过滤只显示 display 相关的内容:

hilog-D0xD001400&service_controlstartrender_service
打通串口并能显示 log 信息之后就是各种调试代码了,这部分操作就跟开发板差不多了,接下去就是对照 log 跟代码不断拉扯了,教程只能到这里了,祝各位调试顺利。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1367

    浏览量

    40252
  • 移植
    +关注

    关注

    1

    文章

    377

    浏览量

    28114
  • 调试
    +关注

    关注

    7

    文章

    574

    浏览量

    33906
  • 鸿蒙
    +关注

    关注

    57

    文章

    2325

    浏览量

    42764
  • OpenHarmony
    +关注

    关注

    25

    文章

    3682

    浏览量

    16183

原文标题:鸿蒙移植指南:打包刷机与设备调试

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PSP3000全系统破解指南

    PSP3000全系统破解指南
    发表于 08-16 16:27

    鸿蒙设备学习菜鸟指南》之 【索引及PDF和工具分享】

    本帖最后由 HonestQiao 于 2020-11-3 14:29 编辑 《鸿蒙设备学习菜鸟指南》之 【目录索引】本帖为索引贴,各节的内容,将逐步发布。本菜鸟指南的写作目的,是
    发表于 10-30 13:14

    【HiSpark系列】鸿蒙设备学习索引及PDF和工具分享

    本帖最后由 l_xy 于 2020-11-3 11:56 编辑 原文链接:https://bbs.elecfans.com/jishu_2003267_1_1.html《鸿蒙设备学习菜鸟指南
    发表于 11-03 11:54

    非华为手机品牌教程

    坛子里的各位大神你们好!最近鸿蒙的OS的发布让人看得热血沸腾,惊艳无比,想起当初用三星手机的时候小米的MIUI,用小米UI后再回三星ui,HTC等。今想请教各位大神谁有做好的
    发表于 06-05 11:22

    鸿蒙openharmony到RK3566开发板上的步骤

    连接。需要重启开发板,并且长按电源键和音量 + ,进入loader模式。当机工具提示发现一个loader设备时,那么说明已经具备的条件了,可以开始
    发表于 03-15 14:36

    小米手机鸿蒙系统

    鸿蒙系统小米包是一款针对小米手机打造的包,在
    的头像 发表于 06-24 14:45 2.2w次阅读
    小米手机<b class='flag-5'>刷</b><b class='flag-5'>鸿蒙</b>系统

    小米鸿蒙系统包下载 安装教程如下

    小米鸿蒙系统包是一款专为小米手机用户打造的机工具,是可以让用户在小米手机上感受鸿蒙系统的手机软件,可以纵享大量一键
    的头像 发表于 06-29 09:44 5.5w次阅读
    小米<b class='flag-5'>鸿蒙</b>系统<b class='flag-5'>刷</b><b class='flag-5'>机</b>包下载 安装教程如下

    用Cocos引擎远程真机设备来开发鸿蒙游戏教程

    6 月 25 日,新鲜出炉的 DevEco 2.2 beta 提供了远程真调试,而上周 6 月 18 发布的 Cocos Creator 3.2 支持一键打包鸿蒙项目。 作为一个没有
    的头像 发表于 06-30 08:56 2006次阅读
    用Cocos引擎远程真机<b class='flag-5'>设备</b>来开发<b class='flag-5'>鸿蒙</b>游戏教程

    小米鸿蒙系统教程

    鸿蒙系统小米包是一款针对小米手机打造的包,在
    的头像 发表于 07-02 11:03 7w次阅读

    小米鸿蒙系统教程

    鸿蒙系统小米包是一款针对小米手机打造的包,在
    的头像 发表于 07-02 11:10 7.8w次阅读

    小米手机如何鸿蒙系统

    最近华为鸿蒙系统非常火,许多用户纷纷下载,拥有小米手机的用户也想体验下鸿蒙系统,在这篇文,将分享小米手机鸿蒙系统的详细步骤。
    的头像 发表于 07-07 16:18 19.8w次阅读
    小米手机如何<b class='flag-5'>刷</b><b class='flag-5'>鸿蒙</b>系统

    OpenHarmony富设备移植指南(1)导言

    OpenHarmony富设备移植指南导言。在研究学习OpenHamony移植的路上,文档资料的缺失让我倍感痛苦,如今移植树莓派4b以及小米6
    的头像 发表于 02-06 14:04 1288次阅读
    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 2280次阅读
    OpenHarmony富<b class='flag-5'>设备</b><b class='flag-5'>移植</b><b class='flag-5'>指南</b>(2)从postmarketOS获取<b class='flag-5'>移植</b>资源

    鸿蒙】标准系统移植指南

    标准系统移植指南 本文描述了移植一块开发板的通用步骤,和具体芯片相关的详细移植过程无法在此一一列举。后续社区还会陆续发布开发板移植的实例供开
    的头像 发表于 02-27 14:36 854次阅读
    【<b class='flag-5'>鸿蒙</b>】标准系统<b class='flag-5'>移植</b><b class='flag-5'>指南</b>

    PoE受电设备调试指南

    电子发烧友网站提供《PoE受电设备调试指南.pdf》资料免费下载
    发表于 09-24 10:59 0次下载
    PoE受电<b class='flag-5'>设备</b><b class='flag-5'>调试</b><b class='flag-5'>指南</b>