1. 课程导入

在嵌入式系统演进过程中,一条清晰的趋势是:设备既要具备丰富的网络、文件系统、图形界面与生态软件能力,又必须对电机控制、传感器采样、通信协议栈等任务给出确定性的实时响应。传统方案往往在“功能丰富”与“实时可靠”之间二选一,而Linux 与 RTOS 混合部署正是为化解这一矛盾而出现的工程方法:在同一颗多核处理器(或同一 SoC 内)上,让 Linux 承担非实时、复杂业务与人机交互,让 RTOS 承担硬实时、周期性强、抖动敏感的控制任务,并通过核间通信、资源共享与统一启动流程把它们组织成一个可交付的系统。

一、什么是混合部署:从“两个系统”到“一个产品”

混合部署不是简单地把 Linux 和 RTOS 分别烧到两块板子上,而是强调同一硬件平台、统一资源管理、明确职责边界、可协同工作。典型形态包括:

  • 非对称多处理(AMP):不同核心运行不同操作系统,例如 Cortex-A 核跑 Linux,Cortex-M 核或同构从核跑 RTOS,核间通过共享内存与中断通信。
  • 虚拟化混合:Hypervisor 或 Jailhouse 等方案在同一核上划分虚拟单元,Linux 与 RTOS 作为不同 Guest 共存,强调隔离与资源配额。
  • 同核双域/协处理:Linux 通过 remoteproc/rpmsg 管理远端 RTOS 固件,常见于 TI Sitara、NXP i.MX、瑞芯微等平台。

无论哪种形态,工程上都要回答四个问题:谁负责实时?谁负责生态?它们如何通信?出问题时如何定位? 这正是本课程贯穿始终的主线。

核心定义:Linux 与 RTOS 混合部署,是在同一计算平台上,以明确的实时/非实时职责划分为前提,通过启动编排、核间通信、共享资源保护与调试观测手段,使 Linux 的丰富生态与 RTOS 的确定性响应共同构成一个可量产、可维护的嵌入式系统。

二、学习目标:学完之后你能做什么

  1. 能解释 AMP、虚拟化、remoteproc/rpmsg 等混合部署形态的差异与适用边界。
  2. 能根据任务周期、抖动容忍度、数据量,划分 Linux 侧与 RTOS 侧的功能边界。
  3. 能搭建最小可运行的混合部署系统:RTOS 固件加载、核间通信打通、共享内存读写正确。
  4. 能使用示波器、GPIO 翻转、trace、日志等手段测量端到端延迟与抖动。
  5. 能识别并规避缓存一致性、内存越界、优先级反转、启动时序竞争等典型陷阱。

三、整体知识框架

本课程按“认知—搭建—通信—实时—优化—交付”的路径展开,可用下面的结构关系图理解各模块之间的支撑关系。图中左侧是硬件与启动基础,中部是通信与资源协同,右侧是实时性保障与工程交付,三者共同构成混合部署的能力栈。

Linux 与 RTOS 混合部署知识框架 Linux 侧(非实时域) • 网络 / 文件系统 / GUI • 业务逻辑与云端连接 • remoteproc / rpmsg 管理 • 设备树与资源分配 • 日志、升级、运维 RTOS 侧(实时域) • 周期控制 / 电机环路 • 传感器采样与滤波 • 硬实时通信协议栈 • 中断响应与任务调度 • 看门狗与安全逻辑 核间协同层 • 共享内存与环形缓冲 • Mailbox / IPI 中断 • rpmsg 端点与通道 • 缓存一致性与屏障 • 资源互斥与生命周期 实时性保障与工程交付 延迟测量与抖动分析 CPU 隔离与中断亲和 启动时序与固件加载 调试、复盘与量产 课程路线:认知 → 环境搭建 → 核间通信 → 实时调优 → 场景实战 → 交付复盘 每一阶段都以“可运行、可测量、可复现”为验收标准

四、典型应用场景

混合部署的价值在具体场景中最容易理解。下表列出常见领域及其职责划分方式,可作为后续方案选型的参考清单。

应用场景 Linux 侧职责 RTOS 侧职责 关键指标
工业伺服驱动 HMI、参数配置、远程运维 电流环、速度环、PWM 输出 周期 ≤ 100 μs,抖动 < 5 μs
汽车域控制器 座舱交互、OTA、数据上云 CAN 网关、安全监控 报文延迟确定性
机器人控制器 视觉、路径规划、ROS 节点 关节伺服、力控闭环 控制周期 1 ms 稳定
医疗监护设备 界面、存储、网络上报 信号采集、报警逻辑 采样不丢点、报警及时
电力保护装置 人机界面、规约转换 保护算法、跳闸输出 动作时间可重复

五、常见误区与复盘提示

误区一:把“能跑起来”当成“混合部署完成”。两个系统各自启动成功,并不代表核间通信可靠、资源不冲突、实时性达标。验收必须包含压力测试与异常注入。

误区二:忽视缓存一致性。在 AMP 架构中,Linux 与 RTOS 共享内存时若未正确处理 cache 维护或使用非缓存区域,会出现“数据偶尔错”的难查问题。

误区三:实时任务被 Linux 侧拖累。共享总线、DDR 带宽、中断风暴都会让 RTOS 侧抖动变大,边界划分时要预留资源余量。

复盘建议:每完成一个阶段,记录三件事——当前延迟基线、已知风险点、下一次要验证的假设。混合部署的难点往往不在“写代码”,而在“定位跨域问题”。

下面是一段典型的启动与固件加载观察命令,后续章节会反复用到类似手段确认 RTOS 是否被正确拉起:

# 查看 remoteproc 状态
cat /sys/class/remoteproc/remoteproc0/state

# 加载并启动 RTOS 固件
echo start > /sys/class/remoteproc/remoteproc0/state

# 查看核间通信通道
ls /dev/rpmsg*
dmesg | grep -i rpmsg

从本章开始,你将逐步建立一套“可测量、可复现、可交付”的混合部署工程方法。请先记住三个关键词:职责边界、核间协同、实时度量。它们会在后续每一章中反复出现,并最终汇聚成你独立设计混合部署系统的能力。