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

【瑞芯微平台实时Linux方案系列】第十七篇 - 瑞芯微平台边缘AI与实时控制协同方案

一、简介:为什么要在瑞芯微上“AI+实时”协同?

  • 国产芯片崛起:RK3568/RK3588 自带 3TOPS/6TOPS NPU,成本 < 国外同级 30%,已批量用于边缘网关、机械臂控制器。

  • 场景痛点

    • 传统方案“AI推理”与“PLC控制”分属两颗 CPU,通过 CAN/Ethernet 通信 → 延迟 5-15 ms,抖动大。

    • 单颗瑞芯微 SoC 即可跑 Linux + PREEMPT_RT,同时完成“感知-决策-控制”端到端闭环,目标延迟 < 1 ms。

  • 掌握技能价值

    • 缩短硬件 BOM 成本 20%+

    • 国产化替代标书中“实时+AI”加分项

    • 形成可复用的“AI推理优先级调度”软件 IP


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

关键词一句话说明本文出现场景
PREEMPT_RTLinux 实时补丁,将自旋锁变互斥锁、线程化中断内核编译打开 CONFIG_PREEMPT_RT=y
NPU神经网络加速单元,瑞芯微 RK3568 为 0.8 TOPS@INT8使用 RKNN Toolkit2 把 PyTorch → .rknn
SCHED_FIFO实时调度策略,优先级 1-99,数字越大越先运行把 AI post-process 线程升到 prio=90
cyclictest循环测量定时延迟工具验证“AI满载”时控制线程抖动 < 100 μs
zero-copy推理结果通过共享内存直接给 PLC 任务,避免 memcpy使用 mmap + 原子计数器

三、环境准备:30 分钟搭好“AI+实时”工作台

1. 硬件

模块规格备注
主板RK3568 工业板(4×A55 2 GHz)需引出 GPIO ×8 用于 PWM/脉冲
内存4 GB LPDDR4推理缓存 300 MB + RT 控制 100 MB
存储32 GB eMMC预留 8 GB 给根文件系统
摄像头MIPI CSI-2 1080P@60fps用于视觉抓取定位
执行器直流电机 + 编码器 1000 线闭环周期 1 kHz

2. 软件

组件版本获取方式
实时内核linux-5.10.y-rt25瑞芯微官方 SDK + RT 补丁
RKNN Toolkit21.4.0pip install rknn-toolkit2
交叉工具链gcc-arm-10.2随 SDK 提供
构建系统Yocto 3.1含 meta-rockchip、meta-rt

3. 一键编译 RT 内核(可复制)

#!/bin/bash # build_rt_kernel.sh set -e SDK=https://github.com/rockchip-linux/kernel.git git clone -b stable-5.10 $SDK --depth=1 cd kernel wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.10/patch-5.10.25-rt25.patch.xz xzcat patch-5.10.25-rt25.patch.xz | patch -p1 make ARCH=arm64 rockchip_defconfig ./scripts/config -e CONFIG_PREEMPT_RT make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) Image dtbs

输出arch/arm64/boot/Image即为 RT 内核。


四、应用场景:边缘视觉+实时控制 300 字示例

在一条“锂电池极耳焊接”产线,RK3568 控制器通过 MIPI 相机实时采集极耳位置(1920×1080@60fps),NPU 运行轻量化 YOLOv5-n 模型定位焊点中心坐标,推理耗时 6 ms;坐标结果写入共享内存后,实时控制线程(SCHED_FIFO, prio=95)以 1 kHz 频率读取坐标并生成 PWM 脉冲,驱动伺服焊头下压,焊接精度±0.05 mm,端到端闭环延迟<0.9 ms(含图像采集、推理、PID、电机响应)。传统“工控机+GPU”方案延迟 8-12 ms,且需独立 PLC;本方案单 SoC 完成,硬件成本降 35%,功耗降 50%,满足国产化与实时双重需求。


五、实际案例与步骤:从模型到闭环,逐行可跑

5.1 步骤总览

  1. 转换模型 → 2. 编译 RT App → 3. 部署到板 → 4. 调度优化 → 5. 延迟测量

5.2 模型转换(PC 端)

# yolov5n.pt → yolov5n.rknn python convert.py

convert.py(可直接复制):

from rknn.api import RKNN rknn = RKNN() rknn.config(target_platform='rk3568', batch_size=1) rknn.load_pytorch(model='yolov5n.pt', input_size_list=[[3,640,640]]) rknn.build(do_quantization=True, dataset='./calib') rknn.export_rknn('yolov5n.rknn')

5.3 实时推理 + 控制代码(板端)

// rt_ai_control.c #define _GNU_SOURCE #include <pthread.h> #include <sys/mman.h> #include <rknn_api.h> #include <time.h> #define SHARE_SIZE 4096 typedef struct { float x, y; // 像素坐标 _Atomic int new_flag; // 原子标志 } share_t; static share_t *shm; /* AI 线程:SCHED_FIFO 80 */ void *ai_thread(void *arg) { rknn_context ctx; rknn_init(&ctx, "yolov5n.rknn", 0, 0, NULL); while (1) { void *img = capture_camera(); // 6 ms rknn_run(ctx, img, ...); rknn_outputs_get(ctx, &out, 1); shm->x = out.x; shm->y = out.y; atomic_store(&shm->new_flag, 1); } } /* 控制线程:SCHED_FIFO 95 */ void *control_thread(void *arg) { struct sched_param param = { .sched_priority = 95 }; pthread_setschedparam(pthread_self(), SCHED_FIFO, &param); while (1) { if (atomic_load(&shm->new_flag)) { float x = shm->x, y = shm->y; atomic_store(&shm->new_flag, 0); pwm_update(pid_calc(x, y)); // 1 kHz } usleep(1000); // 1 ms } }

编译:

aarch64-linux-gnu-gcc rt_ai_control.c -o rt_ai_control \ -lrknnrt -lpthread -latomic

5.4 调度优化:把 AI 线程绑到非隔离核

# 隔离核 0-1 给控制,核 2-3 给 AI & Linux echo isolcpus=0,1 rcu_nocbs=0-1 > /boot/cmdline.txt taskset -c 2 ./rt_ai_control # AI 在核 2

5.5 延迟测量:cyclictest 满载测试

# 控制线程满载 1 kHz 同时测抖动 cyclictest -p 95 -m -Sp90 -i200 -d60s > cyclictest.log

结果示例:

T: 0 ( 1234) P:95 I:200 C: 300000 Min: 8 Act: 14 Avg: 15 Max: 68

Max=68 μs < 100 μs → 满足实时闭环要求。


六、常见问题与解答(FAQ)

问题现象解决
rknn_init返回 -1模型与 NPU 驱动不匹配确保 RKNN 版本与固件一致,用cat /sys/kernel/debug/rknpu/version查看
cyclictest Max > 200 μs未关 C-State/TurboBIOS 关闭 EIST、C6,内核加intel_idle.max_state=0
AI 线程抢占控制线程优先级倒挂AI 线程用SCHED_FIFO 80,控制用 95,差值≥10
共享内存读写冲突坐标跳变使用_Atomic+ 双缓冲,或 ring-buffer
内存不足OOM killer 杀 AI 进程为 NPU 预留 300 MB,Yocto 里关闭 GPU 相关组件

七、实践建议与最佳实践

  1. 双缓冲坐标
    AI 写 back buffer → 原子切换指针 → 控制读 front buffer,实现零拷贝

  2. NPU 批处理
    一次推理 4 帧,降低单帧均摊时间 25%,但需接受 4 ms 额外延迟。

  3. CPU 亲和性脚本化
    tasksetchrt写入 systemd 单元,开机即生效,避免手工遗忘。

  4. 功耗与实时平衡
    空闲时echo powersave > /sys/devices/.../scaling_governor,负载>80% 自动切 performance。

  5. 远程 OTA
    使用 OSTree + SWUpdate,升级失败自动回滚,保障产线 7×24 h。

  6. 文档沉淀
    每新增 1 个实时线程,必须在《线程优先级表》登记,防止“优先级碎片化”。


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

瑞芯微 AI + 实时闭环 ├─ 芯片:RK3568 NPU 0.8 TOPS ├─ 内核:PREEMPT_RT + isolcpus ├─ 模型:YOLOv5 → RKNN ├─ 线程:AI@FIFO80 Control@FIFO95 ├─ 通信:_Atomic 共享内存 └─ 验证:cyclictest < 100 μs

实时 Linux 不只是“快”,更是“准时”。
当你把 AI 推理与电机控制塞进同一颗国产 SoC,还能把抖动压到 68 微秒,BOM 成本、功耗、体积全部下降——这就是“AI+实时”协同的价值。

立刻打开你的 RK3568 板子,复制本文脚本跑一遍,再把延迟图贴在 README,让下一个面试官看到:你不仅能写算法,更能把它按时送到电机手里!

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

相关文章:

  • 【瑞芯微平台实时Linux方案系列】第十四篇 - 瑞芯微平台实时Linux定时器高精度控制
  • 2026 边缘计算公司推荐:五大领军者引领算力服务新纪元
  • 论文查重的“AI侦探”:书匠策AI如何用黑科技破解学术雷区
  • 2026年滁州装修性价比之选:五大服务商深度测评与收费解析
  • 【瑞芯微平台实时Linux方案系列】第十五篇 - 瑞芯微平台实时与非实时任务协同优化
  • 钢卷吊具回购哪家强?国内这些吊具厂商实力领跑!抛缆绳/不锈钢链条索具/钢锭吊具/柔性吊带,吊具品牌怎么选择
  • OpenPLC Runtime v4 编译流程
  • 完整教程:Python 爬虫高级面试真题_5
  • 大模型开源入门教程:《开源大模型食用指南》全网发布,轻松助你速通大模型
  • 2026年滁州装修公司怎么选?这份深度评测与避坑指南请收好
  • 通州宠物寄养哪家好?2026年通州、朝阳宠物寄养基地盘点
  • 好写作AI:留学生的学术“翻译官”——让AI帮你把中文思考变成地道英文论文!
  • 水性防锈漆推荐实战经验:为什么榜首是常州久业?
  • 2026年朔州靠谱的钢结构工程施工企业推荐,了解一下
  • 私域流量生态重构:链动2+1模式S2B2C商城小程序的流量整合与价值创造
  • 2026年Active Directory渗透测试:为何依旧关键及精通之道
  • 分析二手车事故车如何避免,陕西优客好车专业检测让您购车无忧
  • 主流AI编程工具深度解析
  • 人工智能应用-机器听觉:3.早期的语音合成器
  • 5种MOSFET漏电流产生原因
  • 15种先进的检索增强生成(RAG)技术
  • 2026年高性价比的中老年相亲平台排行榜,哪家性价比高
  • 在显卡服务器上部署断电快速恢复机制,实现大规模 AI 大模型训练的可靠性保障?
  • 探讨北京推荐的月子会所排名,心理咨询服务完善的芙蓉花排第几?
  • 【2026】 LLM 大模型系统学习指南 (37)
  • 论文写不动?顶流之选的AI论文写作软件 —— 千笔AI
  • 好写作AI:开题报告“破冰行动”——用AI把模糊想法变成清晰研究蓝图
  • 聊一聊专业糙米加工坊,鹿鸣糙米工坊专业不专业深度分析
  • 人工智能应用-机器听觉:4.传统语音合成技术
  • 直驱风机Simulink仿真模型与永磁直驱式风力发电系统整体仿真