1. 课程导入
在嵌入式与智能设备领域,单一操作系统已经很难同时满足“复杂业务处理”和“硬实时响应”这两类需求。Linux 擅长网络协议栈、文件系统、图形界面、AI 推理与丰富驱动生态,但它的调度抖动通常在毫秒级,难以稳定满足微秒级控制;RTOS(如 FreeRTOS、RT-Thread、Zephyr、VxWorks)具备确定性调度和极低中断延迟,却缺乏完整的应用生态与内存管理能力。于是,在同一颗 SoC 上同时运行 Linux 与 RTOS,并让两者协同工作,成为工业控制、汽车电子、机器人、医疗设备中的主流架构。
一、为什么需要多系统协同:从需求冲突说起
以一个典型的六轴协作机器人为例:上层需要视觉识别、轨迹规划、远程 OTA、Web 监控,这些任务计算量大、依赖库多,适合放在 Linux 侧;而下层关节伺服需要 1 kHz 甚至 10 kHz 的电流环、位置环控制,抖动必须控制在几微秒内,必须由 RTOS 承担。如果强行用 Linux 加实时补丁(PREEMPT_RT)实现,虽然可行,但会牺牲 Linux 生态兼容性,且最坏延迟仍受内核路径影响。
多系统协同的价值在于“各取所长”:
- 实时性隔离:RTOS 独占一个 CPU 核或一颗 MCU,Linux 的负载波动不会直接破坏控制周期。
- 生态复用:Linux 侧可直接使用 Python、OpenCV、ROS2、Docker、MQTT 等成熟组件。
- 安全分区:功能安全等级高的控制逻辑运行在 RTOS,非安全业务运行在 Linux,便于做 ISO 26262 / IEC 61508 认证。
- 成本与功耗:一颗多核 SoC 替代“应用处理器 + 独立 MCU”的双芯片方案,减少 BOM 与板级互联。
二、核心概念地图
在进入具体技术之前,需要先建立统一术语。下表列出本课程反复出现的核心概念及其定位。
| 概念 | 含义 | 典型技术 |
|---|---|---|
| 异构多核 | 同一芯片内不同架构或不同用途的核 | Cortex-A + Cortex-M/R、A核 + R核 |
| AMP | 非对称多处理,各核运行独立系统 | Linux + FreeRTOS 各占一核 |
| RPMSG | 基于共享内存的消息传递框架 | Linux remoteproc + virtio |
| remoteproc | Linux 侧远程处理器生命周期管理 | 加载/启动/停止 RTOS 固件 |
| 共享内存 | 双方可直接读写的高速数据区 | SRAM、DDR 保留区 |
| Mailbox | 硬件中断信箱,用于核间通知 | IPI、MU、HSEM |
| 设备树 | 描述硬件资源与保留内存 | reserved-memory、rproc 节点 |
三、整体知识框架与数据流
下图给出本课程的知识主线:硬件层提供多核与共享资源,Linux 侧负责管理与业务,RTOS 侧负责实时控制,中间通过核间通信(IPC)连接,最终由统一工具链完成构建、烧录与调试。
四、典型场景与协同模式
多系统协同并非只有一种形态,常见模式包括:
- AMP 独立核模式:Linux 跑在 A 核,RTOS 跑在 M/R 核,通过共享内存与 Mailbox 通信。这是本课程重点。
- 同核虚拟化模式:用 Jailhouse、Xen 等 Hypervisor 把一颗核分区,Linux 与 RTOS 分时运行,隔离性更强但配置复杂。
- 双芯片模式:Linux 主控 + 外部 MCU,通过 SPI/UART/CAN 连接,成本高但技术成熟。
以智能座舱为例:Linux 负责仪表渲染、语音助手、导航;RTOS 负责 CAN 报文收发、车门锁控制、电源管理。当用户点击“解锁”时,Linux 应用通过 rpmsg 发送命令,RTOS 在 2 ms 内驱动执行器并回传状态,整个过程对用户无感。
五、常见误区与学习建议
六、一个最小可运行片段
在 Linux 侧,通常通过 sysfs 控制 remoteproc 生命周期,并查看 rpmsg 通道:
# 查看远程处理器状态
cat /sys/class/remoteproc/remoteproc0/state
# 加载并启动 RTOS 固件
echo firmware.elf > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
# 查看 rpmsg 通道
ls /dev/rpmsg*
# 内核日志确认
dmesg | grep -i rproc
RTOS 侧则初始化共享内存、注册 rpmsg 端点,并在 Mailbox 中断中处理消息。两侧的地址、通道名、消息格式必须严格一致,这也是后续章节反复强调的“契约”思想。
掌握本课程后,你应当能够独立设计一个 Linux + RTOS 的 AMP 系统:划分实时与非实时任务、配置设备树保留内存、实现核间通信、完成固件加载与联合调试,并定位常见的启动失败、通信超时、缓存不一致等问题。接下来的章节将沿着“硬件—通信—系统—工具—实战”的顺序逐层展开。