当前位置: 首页 > news >正文

【瑞芯微平台实时Linux方案系列】第二篇 - 瑞芯微芯片PREEMPT_RT补丁集成与内核移植

一、简介:为什么是PREEMPT_RT + 瑞芯微?

  • 市场背景

    • 边缘视觉(缺陷检测、人脸识别)要求帧到帧延迟≤30ms,抖动<5ms;

    • 工业机器人对伺服环≤1ms,传统Linux调度无法满足。

  • 芯片选型: 瑞芯微RK3568/RK3588提供4×A55/A76+G52 GPU,国产化率>95%,成本比x86低40%,但官方SDK仅提供通用内核。

  • 方案价值: 通过集成PREEMPT_RT实现全抢占式调度,将Linux中断延迟从ms级降到μs级,为后续实时视觉算法、EtherCAT主站打下地基。 掌握本篇移植流程=拿到国产化“硬实时”入场券。


二、核心概念:5个关键词先搞懂

关键词一句话说明本文出现场景
PREEMPT_RT将Linux变成“硬实时”的补丁集,支持全抢占源码级集成
ARM64 GICv3瑞芯微中断控制器,需关闭LPI以降延迟内核config
defconfig瑞芯微默认配置,含大量安卓模块裁剪对象
module_init()驱动入口,RT补丁后可能sleep报错兼容性修复
cyclictest测试调度延迟工具,帧到帧抖动标尺验收标准

三、环境准备:10分钟搭好移植机

1. 硬件

  • RK3568/RK3588 开发板(≥4GB LPDDR4)

  • USB-TypeC 串口线(1500000波特率)

  • 32GB SD-Card(Class-10以上)

2. 软件

组件版本获取地址
官方SDKRK Linux v5.10-rkr3瑞芯微GitHub
RT补丁patch-5.10-rt72.patch.xzkernel.org/projects/rt
交叉工具链gcc-linaro-11.3-2022.06-x86_64_aarch64-linux-gnuLinaro
主机OSUbuntu 20.04 x86_64安装依赖包见下

一键安装依赖:

sudo apt update sudo apt install -y build-essential libncurses5-dev \ bison flex libssl-dev bc xz-utils curl

3. 创建工作目录

mkdir -p ~/rk-rt && cd ~/rk-rt export RT_DIR=$PWD

四、应用场景(300字示例)

边缘视觉缺陷检测工位
RK3568+USB3.0工业相机,采集1920×1080@60fps图像,通过GigE视觉协议送入OpenCV实时处理。产线速度1m/s,要求单帧检测+IO剔除信号总延迟≤25ms,传统Linux调度抖动高达18ms,导致漏检率0.3%。采用PREEMPT_RT后,中断响应<80μs,用户态任务调度抖动<400μs,配合用户态帧缓存机制,总延迟稳定在20ms以内,漏检率降至0.05%,达到客户SIL 2安全指标,同时保留Linux丰富生态,缩短算法迭代周期40%。


五、实际案例与步骤:从源码到boot.img

5.1 下载并打补丁(可复制)

# 1. 获取官方内核 cd $RT_DIR git clone https://github.com/rockchip-linux/kernel -b v5.10-rkr3 rockchip-5.10 cd rockchip-5.10 # 2. 下载RT补丁 wget https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/patch-5.10-rt72.patch.xz xzcat patch-5.10-rt72.patch.xz | patch -p1 --dry-run > ../dry.log # 确认无冲突后再正式打 xzcat patch-5.10-rt72.patch.xz | patch -p1

5.2 生成并裁剪defconfig

# 使用瑞芯微默认配置 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- rockchip_linux_defconfig # 开启RT核心功能 ./scripts/config --enable CONFIG_PREEMPT_RT ./scripts/config --disable CONFIG_LPI_CPUIF # GICv3 LPI增加延迟 ./scripts/config --disable CONFIG_ANDROID # 关闭安卓模块 ./scripts/config --disable CONFIG_DEBUG_PREEMPT # 关闭DEBUG减小开销

5.3 禁用高延迟模块(menuconfig可视化)

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig # 路径: # -> Kernel Features # -> Preemption Model (Fully Preemptible (Real-Time)) # -> Device Drivers # -> Graphics support # -> Rockchip Video Decoder (disable) # -> Kernel hacking # -> printk time stamp (disable) 减少printk抖动

保存为.config

5.4 编译内核与模块

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) Image dtbs modules # 输出:arch/arm64/boot/Image

5.5 打包boot.img(RK专用)

# 使用瑞芯微mkimage sudo cp arch/arm64/boot/Image kernel.img sudo cp arch/arm64/boot/dts/rockchip/rk3568-evb.dtb rk3568.dtb # 创建resource.img(含dtb与logo) python3 $SDK_DIR/tools/mkimage/mk-resource.sh rk3568.dtb logo.bmp resource.img # 合成boot.img python3 $SDK_DIR/tools/mkimage/mk-bootimg.py \ --kernel kernel.img \ --resource resource.img \ -o boot.img

5.6 安装到SD卡并验证实时性

# 假设SD为/dev/sdb sudo umount /dev/sdb* sudo dd if=boot.img of=/dev/sdb1 bs=1M sudo make modules_install ARCH=arm64 INSTALL_MOD_PATH=/media/$USER/rootfs/

插入开发板上电,串口登录:

# 检查RT是否开启 dmesg | grep "PREEMPT_RT" # 预期:PREEMPT_RT 5.10.71-rt72

运行cyclictest:

# 运行1分钟,优先级80 cyclictest -p80 -i100 -d60s -n

结果示例:

T: 0 ( 1234) P:80 I:100 C: 600000 Min: 8 Act: 18 Avg: 21 Max: 38

Max=38μs,远低于非RT的2-3ms,移植成功。


六、常见问题与解答

问题现象解决
打补丁失败hunk FAILED确认官方SDK与补丁版本差,手动合入冲突文件
启动卡在Starting kernel未打包resource.img确保dtb已放入resource.img
cyclictest Max>200μsCPU节能导致内核cmdline加nohz_full=1-3 intel_pstate=disable
USB相机掉帧中断亲和性差将对应IRQ绑定到big核:echo 2 > /proc/irq/xx/smp_affinity
驱动编译报错“might sleep”RT下调度API限制使用rt_mutex代替普通mutex,避免在atomic上下文sleep

七、实践建议与最佳实践

  1. 版本锁定
    把RT补丁、defconfig、交叉链哈希写入《软件配置清单》,任何升级走MR。

  2. CI自动化
    GitLab Runner每夜自动跑cyclictest,Max>100μs即报警。

  3. 分区裁剪
    关闭CIFS/BT/NFC等非产线模块,内核体积减30%,编译时间减半。

  4. IRQ亲和性
    视觉帧中断绑定big核,控制环任务放little核,减少上下文切换抖动。

  5. 预留JTAG
    生产板保留SWD接口,便于后期故障注入与SIL认证调试。

  6. 文档同步
    用PlantUML画“启动流程+中断路径”图,随代码提交,auditor点赞。


八、总结:一张脑图带走全部要点

瑞芯微+PREEMPT_RT移植 ├─ 下载:官方SDK + RT补丁 ├─ 配置:开启PREEMPT_RT,裁剪非实时模块 ├─ 编译:Image dtbs modules → boot.img ├─ 验证:cyclictest Max<50μs ├─ 优化:IRQ亲和、锁拆分、CI门禁 └─ 认证:文档矩阵 + 故障注入 → SIL 2

实时性不是“跑得快”,而是“跑得准”。
完成本篇移植后,你的瑞芯微平台已具备硬实时基础,可放心叠加OpenCV、EtherCAT、ROS 2等实时应用。下一步,请把cyclictest结果贴进Git,开启你的国产化边缘视觉/工业控制产品之旅!

http://www.jsqmd.com/news/307444/

相关文章:

  • 骑行,说说各职业骑友的可爱特点。
  • 让Agent画思维导图稳固长期记忆:新框架实现稳定长期学习,准确率提升38%
  • 【通信原理】无线电台工作原理深度解析:从电磁波到信息传输的完整技术体系
  • NMN启动细胞焕新计划,W+端粒塔研创NMN十二载,带领抗衰进入健康管理2.0时代
  • 法国用工“雷区”遍布?EOR成中企出海“合规导航仪”
  • 医用导管哪家好?宁波益创韦如何在高精度管材赛道脱颖而出
  • Logback、Log4j2、SLF4J 、ELK、EFK、Loki 傻傻分不清楚?
  • python lambda匿名函数
  • 导师推荐!8个AI论文平台测评,本科生毕业论文全攻略
  • 什么是google算法?搞懂底层逻辑才不会被收割
  • 汽车行业如何突围?天淳AI+GEO精准获客新策略
  • 学霸同款2026 AI论文平台TOP8:研究生开题报告神器测评
  • VSCode中,通过SFTP插件管理远程服务器文件
  • 2025年棕刚玉十大定制品牌口碑排行榜,棕刚玉/碳化硅/黑碳化硅/磨料/金刚砂/铬刚玉/不锈钢灰/精密铸造砂/白刚玉棕刚玉品牌有哪些
  • Windows10聚焦图片保存位置说明
  • 当八股文遇到实践--关于StringBuilder 和String
  • 想要随时随地做账务自动化任务就用青龙面板+cpolar
  • 在AI语言大模型时代 Cloudera CDP(华为CMP 鲲鹏版)对自有知识的保护
  • 1 月聚焦:晶抗生物专业度在产品中如何体现?细胞因子检测试剂盒/猪试剂盒/il-1β 试剂盒,晶抗生物公司有哪些
  • OpenAI不Open!七年功勋老将投奔宿敌,实验室沦为API代工厂
  • agent开发——深入解读短期记忆、长期记忆
  • Realme真我手机关闭安装应用安全扫描
  • nginx内网安装 - yum离线安装
  • 再见,人类程序员!OpenAI自曝:一行代码都不写了,100%用Codex
  • 聊聊雄安水藻园园林绿化工程公司可信不?
  • 2026年碳硫分析仪选购指南:国产十大品牌与优质供应商推荐
  • 总结杭州靠谱的全屋定制,免费设计、售后完善的品牌排名
  • 2026年上海口碑好的防水解决方案提供商推荐,专业防水公司全解析
  • 2025年十大深受大众喜爱的智能马桶品牌
  • 2026年烟囱防腐正规厂商价格大揭秘,哪家更划算