RK3568 OpenHarmony V3.2 Beta5 开发之板级驱动适配(二)

本文详细介绍了如何在RK3568开发板上适配OpenHarmony驱动,包括内核编译流程解析,构建编译思路,具体调试步骤以及效果演示,涉及修改内核配置脚本和生成新的补丁文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

上回说到,如果是自己的主板,应该如何适配板级驱动,让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.调试实战

(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


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

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

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

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

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

4.效果演示

<think>好的,我需要帮助用户了解如何使用RK3568和VSCode远程连接Ubuntu来下载OpenHarmony 3.2 Release源码的作用。首先,我应该明确各个组件的作用和它们之间的关系。RK3568是一款芯片,常用于开发,用户可能是在使用基于RK3568开发进行OpenHarmony开发。VSCode远程连接Ubuntu可能是指通过VSCode的远程开发功能连接到Ubuntu服务器或虚拟机,方便代码管理和下载。 接下来,用户想知道这种设置的作用。我需要分点列出几个主要作用,比如开发环境统一、效率提升、源码管理、调试便利性以及团队协作。同时,需要参考用户提供的引用内容,特别是关于代码同步和编译的部分。引用[1]提到代码放在开源社区,用户可能需要下载和编译,引用[2]给出了代码同步的命令,这些应该整合到回答中,说明使用VSCode远程连接如何帮助执行这些步骤。 然后,生成相关问题时要围绕OpenHarmony的源码下载、环境配置、远程开发的优势、RK3568的具体使用场景,以及可能遇到的挑战。需要确保问题有针对性,能够引导用户进一步探索。 需要检查是否符合之前的系统指令,比如使用正确的LaTeX格式,但这个问题可能不涉及数学公式,所以可能不需要。确保回答结构清晰,分点说明,引用标记正确,比如[^1]和[^2]。最后,使用中文保持自然流畅。</think>### RK3568与VSCode远程连接Ubuntu下载OpenHarmony 3.2 Release源码的作用 1. **统一开发环境** 通过VSCode远程连接Ubuntu,可以在本地使用熟悉的IDE(如VSCode)直接操作远程Ubuntu服务器,实现开发环境标准化。例如,OpenHarmony源码的下载和编译依赖Linux环境,而RK3568开发通常需要与Linux主机配合使用。 2. **提高源码管理效率** VSCode的远程插件(如Remote-SSH)支持直接在远程服务器上编辑代码,结合Git和`repo`工具管理源码。例如,OpenHarmony的代码同步命令: ```bash repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.2-Beta5 --no-repo-verify repo sync -c ``` 可通过VSCode的终端直接执行,避免频繁切换系统[^2]。 3. **便捷调试与验证** 下载后的源码可在Ubuntu环境中编译生成镜像文件,并通过RK3568开发进行硬件验证。远程连接使得本地修改代码、远程编译和部署形成闭环,减少操作复杂度。 4. **团队协作与代码复用** VSCode支持版本控制工具(如Git),便于多人协作开发OpenHarmony的代码已开源,远程环境可直接拉取最新版本或特定分支。 --- ###
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值