Skip to content

RK3588 系统安装使用 SDK 示例

本文说明在 Orange Pi 5 Plus(RK3588)设备上,针对 5.10.160-rockchip-rk3588 内核安装和使用 KH-UCANFD_Linux_SDK 的过程。

适用环境:

  • 设备:Orange Pi 5 Plus
  • 平台:RK3588
  • 系统内核:5.10.160-rockchip-rk3588
  • SDK:KH-UCANFD_Linux_SDK

系统镜像烧录和基础系统安装可参考 Orange Pi 官方文档:

http://www.orangepi.cn/orangepiwiki/index.php/Orange_Pi_5_Plus#.E4.BD.BF.E7.94.A8balenaEtcher.E7.83.A7.E5.BD.95Linux.E9.95.9C.E5.83.8F.E7.9A.84.E6.96.B9.E6.B3.95

检查当前内核版本

先确认当前运行内核版本:

bash
uname -r

RK3588 内核版本示例 本文后续步骤以输出为 5.10.160-rockchip-rk3588 为例。

准备内核源码

使用 Orange Pi 5 Plus 的 5.10 内核通常 orange-pi-5.10-rk35xx 分支。

bash
git clone --depth=1 -b orange-pi-5.10-rk35xx https://github.com/orangepi-xunlong/linux-orangepi.git ~/linux-orangepi-5.10
cd ~/linux-orangepi-5.10

导入当前内核配置

进入内核源码目录后,导入当前系统的内核配置,并准备外部模块编译所需文件:

bash
cp /boot/config-$(uname -r) .config
make ARCH=arm64 olddefconfig
make ARCH=arm64 modules_prepare

建立 build 链接

将当前运行内核的 build 路径指向已准备好的内核源码树:

bash
sudo ln -sfn ~/linux-orangepi-5.10 /lib/modules/$(uname -r)/build

确认链接是否正确:

bash
ls -l /lib/modules/$(uname -r)/build

编译模块:

bash
cd ~/linux-orangepi-5.10
make ARCH=arm64 -j$(nproc) modules

可使用以下命令检查关键文件是否已生成:

bash
test -f .config && echo ".config OK" || echo ".config missing"
test -f include/generated/autoconf.h && echo "autoconf OK" || echo "autoconf missing"
test -f include/config/auto.conf && echo "auto.conf OK" || echo "auto.conf missing"
test -f Module.symvers && echo "Module.symvers OK" || echo "Module.symvers missing"

如果此时提示 Module.symvers missing,通常表示源码只执行过 modules_prepare,还没有完整编译过内核模块。很多外部 .ko 驱动在开启 CONFIG_MODVERSIONS 时需要 Module.symvers

生成 Module.symvers

完整编译内核模块以生成 Module.symvers

bash
cd ~/linux-orangepi-5.10
make ARCH=arm64 -j$(nproc) modules

编译完成后确认文件存在:

bash
ls -lh Module.symvers

能看到类似下面的文件信息即可:

text
-rw-r--r-- 1 orangepi orangepi xxM Module.symvers

修正 kernel release

内核源码树输出的 release 必须和 uname -r 完全一致。对于 5.10.160-rockchip-rk3588,可按下面方式设置:

bash
cd ~/linux-orangepi-5.10
scripts/config --set-str LOCALVERSION "-rockchip-rk3588"
scripts/config --disable LOCALVERSION_AUTO
make ARCH=arm64 olddefconfig
make ARCH=arm64 LOCALVERSION= prepare
make ARCH=arm64 LOCALVERSION= modules_prepare
make ARCH=arm64 LOCALVERSION= kernelrelease

最后一条命令预期输出:

text
5.10.160-rockchip-rk3588

如果输出不一致,请先修正内核源码配置,再继续安装 SDK。

下载并安装 SDK

下载 KH-UCANFD_Linux_SDK:

bash
wget https://gitee.com/ChengDu-KunHong/KH-UCANFD_Linux_SDK/releases/download/latest/KH-UCANFD_Linux_SDK.zip
unzip KH-UCANFD_Linux_SDK.zip
cd KH-UCANFD_Linux_SDK-*/

指定 RK3588 当前内核源码树安装驱动:

bash
sudo ./build.sh --kernel-location ~/linux-orangepi-5.10

如内核源码放在其他目录,请将 --kernel-location 后面的路径替换为实际内核源码路径。

验证驱动加载

查看驱动模块信息:

bash
modinfo kcan

加载驱动:

bash
sudo modprobe kcan

确认模块已加载:

bash
lsmod | grep kcan

重新插拔 CAN FD 设备后,查看 CAN 网络接口:

bash
ip -d link show

正常情况下可以看到 can0can1 等 CAN 接口。

RK3588 SDK 功能验证

常见问题

Module.symvers missing

现象:

text
Module.symvers missing

原因通常是内核源码只执行了 modules_prepare,还没有完整编译模块,导致符号版本表未生成。

处理方式:

bash
cd ~/linux-orangepi-5.10
make ARCH=arm64 -j$(nproc) modules
ls -lh Module.symvers

modprobe 加载失败或版本不一致

如果 sudo modprobe kcan 加载失败,请检查内核源码树的 release 是否与当前系统完全一致。

驱动智能连接,赋能科技未来