OpenHarmony适配开源图形驱动(新框架)---RK3568
本文主要介绍如何基于新框架将开源驱动适配OpenHarmony,在OH上使能开源GPU。我们使用的基线版本是基于openharmony最新的master版本,以及Releas3.1版本。
1.刷入openharmony版本,确保基线闭源GPU使能且屏幕能正常点亮
1)基线版本可以选择最新的master版本或者Releas3.1社区发布版本。
2)拉取代码,并进行编译与烧录,确定基线版本可以正常点亮。
拉取OH代码(我使用的是Ubantu20.0.4):
$ repo init -u https://gitee.com/openharmony/manifest.git -b master --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
编译完成后如下:
编译完成后进行烧录,生成的镜像文件在\out\ohos-arm-release\packages\phone\images,烧录时依次选择对应的固件,点击执行耐心等待下载完成即可
2.编译Mesa3d,生成gpu驱动相关的mesa开源库
2.1基于SIG代码仓对mesa进行编译
首先通过git clone下载已适配好的mesa源码。git clone https://gitee.com/openharmony-sig/third_party_mesa3d.git
2.2执行配置好的脚本生成相应的驱动so:
执行命令:python ohos/build_ohos.py ~/openHarmony路径 rk3568 ~/mesa3d路径
注意:这里的openharmony的路径和mesa3d路径需要设置成自己的路径
生成的相应的lib库位于build_ohos下
3.将编译出来的Mesa库接入到OpenHarmony
由于master和release的代码路径发生了变化,因此这里分为两个版本:
3.1 找到上面编译好的mesa3d的库:
配置项 |
---|
文件名 |
output/target/usr/lib/libEGL.so.1 |
output/target/usr/lib/libGLESv1_CM.so.1 |
output/target/usr/lib/libGLESv2.so.2 |
output/target/usr/lib/libgbm.so.1 |
output/target/usr/lib/libglapi.so.0 |
output/target/usr/lib/dri/ panfrost_dri.so |
将这些二进制文件拷贝到/device/soc/rockchip/hardware/gpu
3.2 修改对应的OH代码-Master:
-
~/base/startup/init_lite/ueventd/etc/ueventd.config
增加card1和rendD129的权限,在该文件中加上:
/dev/dri/card1 0666 0 1003
/dev/dri/renderD129 0666 0 1003 -
~/openHarmonyMaster/device/soc/rockchip/device/soc/rockchip/hardware/display/src/display_gralloc/display_gralloc_gbm.c
-
~/openHarmonyMaster/device/board/hihope./rk3568/kernel/build_kernel.sh
-
~/openHarmonyMaster/foundation/ace/ace_engine/adapter/ohos/build/product_config.gni
-
~/openHarmonyMaster/foundation/graphic/standard
a. ./frameworks/surface/src/egl_consumer_surface.cpp不需修改
b. ./frameworks/surface/src/egl_surface.cpp 不需修改
c. ./graphic_config.gni 路径不一致
d. ./frameworks/surface/src/native_window.cpp 不需修改
e. ./BUILD.gn去掉surfaceimage依赖
-
~/openHarmonyMaster/kernel/linux/config./linux-5.10/arch/arm64/configs/rk3568_standard_defconfig
3.3 修改对应的OH代码-Release3.1:
-
~/base/startup/init_lite/ueventd/etc/ueventd.config
增加card1和rendD129的权限,在该文件中加上:
/dev/dri/card1 0666 0 1003
/dev/dri/renderD129 0666 0 1003 -
~/device/hihope/hardware/display/src/display_gralloc/display_gralloc_gbm.c
-
~/device/hihope./rk3568/kernel/build_kernel.sh
-
~/foundation/ace/ace_engine/adapter/ohos/build/product_config.gni
-
~/foundation/graphic/standard
a. ./frameworks/surface/src/egl_consumer_surface.cpp
b. ./frameworks/surface/src/egl_surface.cpp 不需修改
c. ./graphic_config.gni 路径不一致
d. ./frameworks/surface/src/native_window.cpp 不需修改
e. ./BUILD.gn去掉surfaceimage依赖 -
~/kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig
版权声明:本文为CSDN博主「zleoyu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zleoy/article/details/122721370
更多推荐