当前位置:   article > 正文

RK3568 OpenHarmony V3.2 Beta5 开发之板级驱动适配(二)_鸿蒙系统适配rk3568修改内核的dts配置信息

鸿蒙系统适配rk3568修改内核的dts配置信息

前言

上回说到,如果是自己的主板,应该如何适配板级驱动,让OpenHarmony系统在自己的板子上跑起来呢?

1.OpenHarmony SDK驱动内核编译流程解析

(1)首先,rk3568平台的内核配置和预编译脚本在:device/board/hihope/rk3568/kernel/build_kernel.sh
在这里插入图片描述
简单地说,其核心思想是:基于linux-5.10的基础内核,打上rk3568平台的核心补丁kernel.patch后,就可以支持RK3568板级dts配置和基础驱动。然后拷贝内核源码到out目录进行编译。

(2)内核的编译脚本在out/kernel/src_tmp/linux-5.10/make-ohos.sh 中
这里配置了编译工具链,指定的板级dts,config等(没错,这里就是我们需要找的地方)

在这里插入图片描述

2.构建编译思路

(1)首先进入内核基础目录kernel/linux/linux-5.10 打上kernel.patch,这样我们就拥有了一份rk3568完整的内核代码

(2) 进入kernel/linux/linux-5.10/arch/arm64/boot/dts/rockchip目录,加入自己的板级dts和相关dtsi配置

(3)修改后生成新的核心补丁kernel.patch,新的kernel.patch替换掉kernel/linux/patches/linux-5.10/rk3568_patch/kernel.patch

这样完全编译出的固件,就对应我们自己的主板了。(当然,编译脚本要指定到对应的板级dts,下面会举例)

3.调试实战

调试使用NNEWN NSR3568 开发板:
硬件接口图如下:

正面:
在这里插入图片描述
背面:
在这里插入图片描述

(1)修改预编译脚本
device/board/hihope/rk3568/kernel/build_kernel.sh


diff --git a/rk3568/kernel/build_kernel.sh b/rk3568/kernel/build_kernel.sh
index 4bd1e65..6b0fdf4 100755
--- a/rk3568/kernel/build_kernel.sh
+++ b/rk3568/kernel/build_kernel.sh
@@ -72,7 +72,7 @@ do
                        ;;
        esac
 done
-eval $make_ohos_env ./make-ohos.sh TB-RK3568X0 $ramdisk_arg ${ENABLE_LTO_O0}
+eval $make_ohos_env ./make-ohos.sh NN-RK3568N10 $ramdisk_arg ${ENABLE_LTO_O0}
 
 mkdir -p ${2}
 
diff --git a/rk3568/kernel/logo.bmp b/rk3568/kernel/logo.bmp
index 980f44e..b4bc234 100755
Binary files a/rk3568/kernel/logo.bmp and b/rk3568/kernel/logo.bmp differ
diff --git a/rk3568/kernel/logo_kernel.bmp b/rk3568/kernel/logo_kernel.bmp
index f74ed84..2c7ecdf 100755
Binary files a/rk3568/kernel/logo_kernel.bmp and b/rk3568/kernel/logo_kernel.bmp differ


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(2)修改内核编译脚本,添加自己的板级dts、dtsi文件
cd kernel/linux
进入内核源码目录:
先打一次rk3568默认补丁kernel.patch,操作如下:

cd linux-5.10/
patch -p1 < ../patches/linux-5.10/rk3568_patch/kernel.patch
  • 1
  • 2

make-ohos.sh修改如下:


 diff --git a/make-ohos.sh b/make-ohos.sh
 new file mode 100755
-index 000000000..4f6b72d23
+index 000000000..50fb79a39
 --- /dev/null
 +++ b/make-ohos.sh
-@@ -0,0 +1,135 @@
+@@ -0,0 +1,137 @@
 +#!/bin/bash
 +
 +set -e
@@ -1665131,7 +1665526,8 @@ index 000000000..4f6b72d23
 +BUILD_PATH=boot_linux
 +EXTLINUX_PATH=${BUILD_PATH}/extlinux
 +EXTLINUX_CONF=${EXTLINUX_PATH}/extlinux.conf
-+TOYBRICK_DTB=toybrick.dtb
++#TOYBRICK_DTB=toybrick.dtb
++NNEWN_DTB=rk3568-evb-nnewn.dtb
 +if [ ${KBUILD_OUTPUT} ]; then
 +      OBJ_PATH=${KBUILD_OUTPUT}/
 +fi
@@ -1665145,6 +1665541,7 @@ index 000000000..4f6b72d23
 +model_list=(
 +      "TB-RK3568X0   arm64 0xfe660000 rk3568-toybrick-x0-linux  Image rockchip_linux_defconfig"
 +      "TB-RK3568X10  arm64 0xfe660000 rk3568-toybrick-x10-linux Image rockchip_linux_defconfig"
++      "NN-RK3568N10  arm64 0xfe660000 rk3568-evb-nnewn Image rockchip_linux_defconfig"
 +)
 +
 +
@@ -1665166,7 +1665563,7 @@ index 000000000..4f6b72d23
 +      
 +      echo "label rockchip-kernel-5.10" > ${EXTLINUX_CONF}
 +      echo "  kernel /extlinux/${image}" >> ${EXTLINUX_CONF}
-+      echo "  fdt /extlinux/${TOYBRICK_DTB}" >> ${EXTLINUX_CONF}
++      echo "  fdt /extlinux/${NNEWN_DTB}" >> ${EXTLINUX_CONF}
 +      cmdline="append earlycon=uart8250,mmio32,${uart} root=PARTUUID=614e0000-0000-4b53-8000-1d28000054a9 rw rootwait rootfstype=ext4"
 +      echo "  ${cmdline}" >> ${EXTLINUX_CONF}
 +}
@@ -1665234,7 +1665631,7 @@ index 000000000..4f6b72d23
 +      fi
 +      make_extlinux_conf ${dtb_path} ${uart} ${image}
 +      cp -f ${OBJ_PATH}arch/${arch}/boot/${image} ${EXTLINUX_PATH}/
-+      cp -f ${OBJ_PATH}${dtb_path}/${dtb}.dtb ${EXTLINUX_PATH}/${TOYBRICK_DTB}
++      cp -f ${OBJ_PATH}${dtb_path}/${dtb}.dtb ${EXTLINUX_PATH}/${NNEWN_DTB}
 +      cp -f logo*.bmp ${BUILD_PATH}/
 +      if [ "enable_ramdisk" != "${ramdisk_flag}" ]; then
 +              make_ext2_image

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

dts和dtsi文件自己添加到kernel/linux/linux-5.10/arch/arm64/boot/dts/rockchip/目录

(3)合并生成新补丁,迭代旧的kernel.patch
操作如下:

cd linux-5.10/
git add -A
git diff --cached > kernel.patch
cp kernel.patch ../patches/linux-5.10/rk3568_patch/
git reset --hard 9a1d8aa6829683f690336aaf2741c0b658964aeb
  • 1
  • 2
  • 3
  • 4
  • 5

(4)编译验证
编译指令(由于我们默认已经将编译脚本指向了我们自己的dts,所以编译指令不变)
./build.sh --product-name rk3568 --ccache4

4.效果演示

开机logo
在这里插入图片描述
开机动画
在这里插入图片描述
UI主界面
在这里插入图片描述

相机
在这里插入图片描述

时钟
在这里插入图片描述
音乐播放
在这里插入图片描述
屏幕亮度调节
在这里插入图片描述
系统版本
在这里插入图片描述
附上NSR3568 开发板(购买连接)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/251952?site
推荐阅读
相关标签
  

闽ICP备14008679号