说明
补丁获取方式:瑞芯微官方或第三方平台提供的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内
产品版本
| 芯片名称 | 内核版本 |
|---|---|
| RK3562 | kernel-5.10 |
| RK3568 | kernel-4.19,kernel-5.10 |
| RK3588 | kernel-5.10 |
| RK3576 | kernel-6.1 |
| RK3506 | kernel-6.1 |
2.打补丁
#XXXXX补丁名称patch-p1<XXXXX3.内核开启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_defconfig4.编译内核
#交叉工具链环境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-l10000cyclictest工具说明
-tN:N个测试线程
-a:自动绑定线程到CPU
-p:优先级(实时调度优先级,越高越实时)
-n:mlockall(),避免内存分页
-i:周期(微秒,默认1000即1ms)
-l:循环次数
使用RT加载应用程序
# 以 SCHED_FIFO 策略、优先级 90 启动sudochrt-f90./APP