完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.刷入openharmonyrk分支版本,确保基线闭源GPU使能且屏幕能正常点亮
1)基线版本是RK分支的OpenHarmony版本,选用此版本的原因是,该版本使能了闭源的GPU。 2)拉取代码,并进行编译与烧录,确定基线版本可以正常点亮。 拉取OH代码(我使用的是Ubantu20.0.4): $ repo init -u master -m rk.xml --no-repo-verify $ repo sync -c $ repo forall -c 'git lfs pull' 安装依赖工具,编译器,并进行编译, $ sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev genext2fs liblz4-tool libtinfo5 lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby $ sudo apt install openjdk-17-jre-headless $ bash build/prebuilts_download.sh $ ./build.sh --product-name rk3568 --ccache 编译完成后如下: 编译完成后进行烧录,生成的镜像文件在outohos-arm-releasepackagesphoneimages,烧录时依次选择对应的固件,点击执行耐心等待下载完成即可 2.修改kernel5.10内核并重新编译 由于RK分支使用的是4.19的内核,1.10后主干才支持kernel5.10,因此编译kernel5.10需要采用的是Master 1.10以后的版本,拉取代码和编译的过程同上,此处不再描述(只有本小节使用的是主干1.10以后的版本,其它小节均使用的是RK分支版本)。编译完成后进入kernel 5.10源码路径outkernelsrc_tmplinux-5.10,进行如下操作: 2.1 修改DTS 打开.outkernelsrc_tmplinux-5.10archarm64bootdtsrockchiprk3568.dts进行修改,适配开源panfrost。diff如下: 修改后如下: gpu: gpu@fde60000 { compatible = "rockchip, rk3568-mali", "arm,mali-bifrost"; reg = <0x0 0xfde60000 0x0 0x20000>; interrupts = interrupt-names = "job", "mmu", "gpu"; clocks = <&scmi_clk 1>, <&cru CLK_GPU>; clock-names = "core", "bus"; operating-points-v2 = <&gpu_opp_table>; #cooling-cells = <2>; power-domains = <&power RK3568_PD_GPU>; status = "disabled"; }; 2.2 启用Panfrost内核 进入到linux-kernel5.10的目录后,cd到对应的目录outkernelsrc_tmplinux-5.10,执行make menuconfig ARCH=arm64,在graphic support中启用panfrost, 然后在Direct Rendering Manager取消选择Ignore drm ioctl permission,然后保存退出配置。 2.3 单独编译kernel5.10 执行 ./make-ohos.sh TB-RK3568X0进行编译。 3.编译buildroot,启用mesa3d和panfrost驱动 3.1基于xfan的代码仓对mesa进行编译 首先通过git clone下载最新的mesa21.3.3版本。 3.2执行make menuconfig进行buildroot固件的编译,进行如下的配置: [tr]配置项配置值[/tr]
保存,进行编译make 执行完成后生成镜像rootfs,如下: 最后将生成的两个的镜像进行重新烧录即可: 4.运行glmark2-es2-wayland,验证内核panfrost驱动和用户态panfrost驱动是否可以正常工作。 首先后台启动weston: mkdir /tmp/xdg XDG_RUNTIME_DIR=/tmp/xdg weston --tty 1 & glmark2-es2-wayland 如果看到屏幕上有正常的渲染画面,即验证panfrost驱动与kernel5.10驱动可以在weston中正常工作。 PS:如果未正常工作,可以尝试以下步骤: cd到out/kernel/src_tmp/linux-5.10/drivers/gpu/drm 修改drm_ioctl.c,搜索关键字DUMB,将0修改为DRM_RENDER_ALLOW, 如下: 再次尝试启动glmark2即可 5.将编译出来的Mesa库接入到OpenHarmony 5.1 找到编译好的二进制文件: [tr]配置项[/tr]
将这些二进制文件拷贝到devicerockchiphardwaregpu 5.2 修改对应的编译配置项: 修改devicerockchiprk3568,增加“//device/hihope/hardware/gpu:libgallium_dri”, 如下图: import("//build/ohos.gni") print("rk3568_group in") group("rk3568_group") { deps = [ "//device/rockchip/hardware/gpu:libgallium_dri" ] 修改devicerockchiphardwaregpuBUILD.gn为: import("//build/ohos.gni") import("//build/ohos/ndk/ndk.gni") mesa3d_common_prebuilts = [ "libgbm.so.1", "libEGL.so.1", "libglapi.so.0", "libGLESv1_CM.so.1", "libGLESv2.so.2", ] mesa3d_common_deps = [] foreach(file, mesa3d_common_prebuilts) { target = "mesa3d-common-$file" ohos_prebuilt_shared_library(target) { source = file subsystem_name = "hdf" part_name = "hdf" install_enable = true } mesa3d_common_deps += [ ":$target" ] } group("mali-bifrost-g52-g2p0-wayland") { deps = mesa3d_common_deps } ohos_prebuilt_shared_library("libgallium_dri") { source = "libgallium_dri.so" part_name = "rockchip_products" install_enable = true symlink_target_name = [ "panfrost_dri.so", "rockchip_dri.so", ] } 5.3修改fence 修改third_party/weston/libweston/renderer-gl/egl-glue.c 增加weston_check_egl_extension(extensions, “EGL_ANDROID_native_fence_sync”) 如下图: 打开/foundation/graphic/standard/frameworks/surface/src/producer_egl_surface.cpp,这里强制进行缓存送显避免出现白屏的情况,如下图: 6. 修改rendD节点权限,使得hap有权限访问 修改base/startup/init_lite/ueventd/etc/ueventd.config文件,增加card1和rendD129的权限,在该文件中加上: /dev/dri/card1 0666 0 1003 /dev/dri/renderD129 0666 0 1003 最终重新编译./build.sh --product-name rk3568 --cccahe,重新烧录system.img |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
533 浏览 0 评论
803 浏览 1 评论
700 浏览 1 评论
1926 浏览 1 评论
3171 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:01 , Processed in 0.631999 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号