OpenHarmony富设备移植指南(5)打包刷机与简单设备调试-开源基础软件社区-51CTO.COM
source link: https://ost.51cto.com/posts/20924
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
OpenHarmony富设备移植指南(5)打包刷机与简单设备调试 原创 精华
1,打包boot.img镜像
boot.img打包流程:
1.内核+设备树打包出带设备树的内核
2.设备树内核+bootimg.cfg+ramdisk.img打包成boot.img
1.1 修改内核启动参数
1.1.1 修改boot.img大小
原解压出的大小是8m多,我们的内核因为把模块编译进内核的缘故,容量会增大,导致使用原有配置文件会无法成功打包,所以我们增大到16m,小米6的boot分区有64m不会影响boot.img的刷入。
bootsize = 0x1000000
1.1.2 修改并添加内核启动参数
cmdline = clk_ignore_unused console=tty1 console=ttyGS0,115200 no_console_suspend hardware=sagit default_boot_device=1da4000.ufshc ohos.required_mount.system=/dev/block/platform/soc/1da4000.ufshc/by-name/system@/usr@ext4@ro,barrier=1@wait,required ohos.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=sagit default_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,required ohos.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。
1.2 打包带设备树的内核
命令如下,直接用cat命令,把内核和设备树二进制文件直接输出成Image.gz-dtb
cat ${KERNEL_IMAGE_FILE} ${DTB} > "${OUT_PKG_DIR}/Image.gz-dtb"
1.3打包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到电脑中,准备进行刷机工作。
注意:刷机会格式化手机,请使用备用机进行刷机,刷机前有需要的话请把手机的数据复制到电脑,刷机有风险,请自行判断,变砖概不负责!!!
2,刷入镜像
2.1 TWRP刷入镜像
按音量键上+电源开机进入TWRP,这时TWRP会进入MTP模式,把刷机镜像复制进手机。
选择刷入镜像,这时才会显示我们的刷机文件
选择boot.img,选择boot分区
滑动确认刷入
按两次返回,选择system.img,选择system分区
同样按两次返回,选择vendor.img,选择vendor分区
回到主页,选择清除,选择格式化Data分区
输入yes,格式化完成后重启
2.2 fastboot刷入镜像
按音量键下+开机键进入fastboot模式,连接电脑,装好驱动,使用以下命令进行刷机
fastboot flash boot (boot.img的路径)
fastboot flash system (system.img的路径)
fastboot flash vendor (vendor.img的路径)
fastboot erase userdata
fastboot reboot
2,简单调试经验分享
2.1 设备不断重启
上篇文章中我们配置了usb串口,如果内核驱动正常的话手机使用usb连接电脑会自动识别为com设备,这时我们使用xshell,mobaxterm等工具查看串口日志
比如一般不断重启是因为render_service的崩溃,渲染服务是关键服务,OH设置了崩溃会自动重启
为了调试我们先更改一下设置,让它不自动重启,找到渲染服务的配置,把critical第一个参数从1改成0,这样就不会自动重启了。
2.2 使用modetest测试DRM驱动
要使OH能顺利点亮,我们首先要确认内核DRM驱动是否正常工作,这里我使用的是modetest进行测试,modetest的代码已经存在libdrm的仓库中,但是没有加入OH的编译框架,有需要的同学可以参考我移植树莓的board仓,里面的test文件夹中有写好的配置。
编译好modetest之后直接运行是没有效果的,因为OH的渲染服务占用了显卡,我们先把渲染服务关闭:
service_control stop render_service
关闭渲染服务之后,我们运行modetest,modetest会遍历设备所有的显卡,并打印出信息
modetest
查看log
......
trying to open device 'msm'...done
Encoders:
id crtc type possible crtcs possible clones
31 81 DSI 0x00000001 0x00000001
Connectors:
id encoder status name size (mm) modes encoders
32 31 connected DSI-1 64x114 1 31
modes:
index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
#0 1080x1920 60.00 1080 1200 1216 1256 1920 1924 1926 1930 145444 flags: ; type: preferred, driver
......
我们可以找到,我们的驱动模块名为msm,Connector id为32,mode名为1080x1920,
查看modetest支持的命令,配置这两个参数
-M module use the given driver
-s <connector_id>[,<connector_id>][@<crtc_id>]:[#<mode index>]<mode>[-<vrefresh>][@<format>] set a mode
我的命令简化为:
modetest -M msm -s 32:1080x1920
运行命令后,手机屏幕显示出颜色条纹,即为DRM驱动工作正常
2.3 OH渲染框架调试
配置hilog打印等级,启动屏幕调试hilog打印
使用命令启动渲染服务,并过滤只显示display相关的内容
hilog -D 0xD001400 & service_control start render_service
打通串口并能显示log信息之后就是各种调试代码了,这部分操作就跟开发板差不多了,接下去就是对照log跟代码不断拉扯了,教程只能到这里了,祝各位调试顺利。
Recommend
-
3
OpenHarmony—系统刷机指导-51CTO.COM OpenHarmony—系统刷机指导 作者:陈潘 2022-03-14 15:19:36 本文将指导大家如何将鸿蒙系统刷到开发板上,通过这些开发板可以控制更多的硬件,通过软硬结合得...
-
7
← 肌肉结节和消除的方法测试发现,汽车里的物理按钮优于触摸屏控件 →
-
1
V2EX › Android Android 刷机后,如何判断还是同一个设备? 作为 app 重装 pro 激活判断依据
-
9
OpenHarmony富设备移植指南(3)OH编译框架适配与定制 原创 精华 1,OH编译框架适配特别说明:OH3.2 beta4我移植过多款设备,输入子系统会开机崩溃,还没找到具体原因,移植的时...
-
4
想了解更多关于开源的内容,请访问:...
-
3
OnePlus6T OpenHarmony简明刷机指南 原创 精华 一加6T在开源鸿蒙(OpenHarmony)的移植,主要利用工作之余的空闲时间移植,目前仅正常开机启动,触屏正常,最新已经初步支...
-
6
想了解更多关于开源的内容,请访问:...
-
3
OnePlus6T OpenHarmony简明刷机指南 作者:AlgoIdeas 2023-02-14 17:11:50 OpenHarmony版本基于OpenHarmony 3.2 Beta5,内核基于Linux 6.1,同时也支持OpenHarmony的主线5.10内核版本(暂未使用)。
-
10
OpenHarmony富设备移植指南(7.1)HDC与背光适配 作者:Diemit 2023-04-06 09:10:13 小米6采用的usb控制器是高通芯片内置的,并支持usb3.0,但是小米配置成只能用usb2.0的速度,这里要批判一下小米万年usb2.0,回...
-
8
想了解更多关于开源的内容,请访问:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK