三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

瑞芯微开发板内核打PREEMPT_RT补丁

瑞芯微开发板内核打PREEMPT_RT补丁

说明

补丁获取方式:瑞芯微官方或第三方平台提供的SDK内。/SDK/docs/Patches/Real-Time-Performance/PREEMPT_RT内选择对应版本的补丁

适用于RK3506、RK3562、RK3568、RK3576、RK3588

测试平台

硬件:正点原子RK3588开发板、米尔RK3568核心板、米尔RK3506开发板
软件:正点原子RK3588 SDK、米尔RK3568 SDK

方法一

1.将对应的patch补丁放到/SDK/Kernel内

产品版本

芯片名称内核版本
RK3562kernel-5.10
RK3568kernel-4.19,kernel-5.10
RK3588kernel-5.10
RK3576kernel-6.1
RK3506kernel-6.1
2.打补丁
#XXXXX补丁名称patch-p1<XXXXX
3.内核开启RT
#加载内核配置文件 若没有rockchip_linux_defconfig,改为自己定义的配置文件,后续所有设计到的都类似,RK3506 将arm64改为armmakeARCH=arm64 rockchip_linux_defconfig
#打开内核图形配置界面 RK3506 将arm64改为armmakeARCH=arm64 menuconfig

依次选择

General setup ---> Preemption Model ---> (X)Fully Preemptible Lernel (Real-Time)
#保存配置 RK3506 将arm64改为armmakeARCH=arm64 savedefconfig
#将保存的配置文件覆盖原文件 有的厂家可能自命名 RK3506 将arm64改为armcpdefconfig arch/arm64/configs/rockchip_linux_defconfig
4.编译内核
#交叉工具链环境exportCROSS_COMPILE=../prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-#相比使用./build.sh kernel内置命令,多加了rockchip_rt.config#rk35XX_linux修改为自己的板子 有的可能没有rockchip_linux_defconfig和rk35XX_linux.config,确保defconfig文件匹配即可makeARCH=arm64 rockchip_linux_defconfig rk35XX_linux.config rockchip_rt.config#xxxxx要使用的设备树名称.makeARCH=arm64 xxxxx.img-j10

方法二(SDK内修改)

步骤1,2,3同方法一,步骤3也可参考以下内容。

3.内核开启RT

在SDK根目录

#打开内核图形配置界面./build.sh kernel-config

依次选择

General setup ---> Preemption Model ---> (X)Fully Preemptible Lernel (Real-Time)
4.修改编译配置

在/SDK/device/rockchip/common/build-hooks/10-kernel.sh中,找到do_build(),在make_kernel_config前插入

RK_KERNEL_CFG_FRAGMENTS="$RK_KERNEL_CFG_FRAGMENTSrockchip_rt.config"

并保存。

5.编译
#编译整个SDK./build.sh all#只编译内核./build.sh kernel

验证:

将镜像下载到板子上

查看 RT 安装是否成功

uname-a

显示Linux yuxi5.10.209-rt89-g16b8cb7e2392-dirty #3 SMPPREEMPT_RTSat Aug 16 20:25:40 CST 2025 aarch64 aarch64 aarch64 GNU/Linux代表成功

使用cyclictest测试

安装工具

sudoaptupdatesudoaptinstallrt-tests

测试

# 单核测试cyclictest-t1-p80-n-i1000# 多核测试(测试4个线程,每个绑定到一个CPU)cyclictest-t4-p80-a-n-i1000# 输出统计结果cyclictest-t1-p99-n-i1000-l10000

cyclictest工具说明

-tN:N个测试线程

-a:自动绑定线程到CPU

-p:优先级(实时调度优先级,越高越实时)

-n:mlockall(),避免内存分页

-i:周期(微秒,默认1000即1ms)

-l:循环次数

使用RT加载应用程序
# 以 SCHED_FIFO 策略、优先级 90 启动sudochrt-f90./APP
← 返回列表