AMP 外设隔离架构:Linux 与 RT-Thread 的异构外设划分实战

描述

一、AMP 架构快速概览

1.1 什么是 AMP?

AMP(Asymmetric Multiprocessing,非对称多处理) 是一种在同一块多核芯片上同时运行多个独立操作系统的架构模式。与 SMP(对称多处理)不同,AMP 为每个操作系统分配专属的 CPU 核心、内存空间和外设资源,各子系统之间物理隔离、互不干扰。

在工业嵌入式领域,AMP 架构完美解决了 “实时性” 与 “丰富生态” 这对矛盾的需求:

Linux 侧:承担图形界面、网络协议栈、AI 推理、文件系统等非实时任务

RT-Thread 侧:承担硬实时控制、高速数据采集、工业总线通信等确定性任务


 

1.2 睿擎平台 AMP 架构

睿擎工业开发平台基于 Rockchip RK3506J 芯片(3 核 Cortex-A7),采用精细化的 1+2 核心划分方案:CPU0 专用于 Linux,CPU1 和 CPU2 运行 RT-Thread,并在其内部进一步区分常规任务与实时任务。

RT-Thread

关于 AMP 架构的完整技术解析,请参考平台技术文档。本文将重点聚焦于 外设隔离机制 与 划分策略 两个核心议题。

 

二、外设隔离机制深度解析

外设隔离是 AMP 架构的核心。只有将硬件资源从物理层面进行有效隔离,才能真正实现"两个大脑各司其职"的设计目标。睿擎平台通过 四大隔离机制 构建了完整的外设隔离体系。

2.1 CPU 核隔离 —— 任务的物理分区

CPU 核隔离是外设隔离的基础。睿擎平台采用精细化的 1 (Linux) + 2 (RT-Thread) 核心划分方案,并在 RT-Thread 内部进一步实现了常规任务与实时任务的物理隔离:

核心

归属系统

任务类型

职责范围

CPU0

Linux

非实时任务

图形界面、网络协议栈、AI 推理、常规外设中断处理

CPU1

RT-Thread

常规实时任务

协议栈处理、文件系统、软实时任务、一般外设管理

CPU2

RT-Thread

硬实时任务

周期性实时任务、硬实时外设独占、中断响应

核心隔离优势

Linux 独立隔离:Linux 独占 CPU0,其内部调度完全不受 RT-Thread 影响

RT-Thread 内部双级隔离:CPU1 负责常规软实时任务,CPU2 专用于硬实时任务,确保最高优先级任务不受任何干扰

确定性保障:即使 CPU1 上的常规 RT-Thread 任务负载饱和,CPU2 上的硬实时任务响应时间仍稳定在微秒级


 

2.2 中断隔离 —— 响应的确定性保障

中断是外设与 CPU 之间的通信桥梁。中断隔离的核心是通过 中断亲和性(Interrupt Affinity) 机制,将不同外设的中断路由到指定的 CPU 核心。在睿擎平台的 1+2 架构下,中断隔离分为三个层级:

RT-Thread
 

关键配置:在设备树中通过 interrupt-affinity 属性指定中断绑定关系:

RT-Thread


 

隔离效果

硬实时外设(如 I2C、SPI、Timer)中断响应时间稳定在 1~3 微秒,不受任何其他任务影响

常规实时外设(如 UART、SDMMC)中断绑定到 CPU1,确保基本的实时性

非实时外设(如 Display、Audio)中断绑定到 Linux 的 CPU0,与 Linux 调度协同工作

2.3 时钟域隔离 —— 功耗的独立管控

每个子系统需要独立管理自身的时钟树。睿擎平台通过 rockchip_amp 节点为 RT-Thread 系统分配专属时钟:

RT-Thread

隔离效果

两侧时钟域完全独立,不会出现时钟冲突

RT-Thread 侧可独立控制实时外设的时钟频率和功耗

Linux 侧无法意外关闭 RT-Thread 正在使用的时钟


 

2.4 内存空间隔离 —— 数据的安全屏障

AMP 架构在内存层面同样实现了隔离:

内存区域

归属系统

用途

Linux 系统内存

Linux

Linux 内核、用户空间、文件缓存

RT-Thread 系统内存

RT-Thread

RT-Thread 内核、线程栈、设备驱动缓冲

共享内存区

双系统共用

RPMSG 通信缓冲区、数据交换区

内存访问权限:每个操作系统只能访问自己的内存空间,跨系统数据交换必须通过受控的共享内存区域进行,防止内存越界访问。

 

三、外设划分策略与配置指南

3.1 外设分配指南

根据睿擎平台的 1+2 架构,RT-Thread 内部进一步细分为常规核 (CPU1) 与实时核 (CPU2),因此外设分配需要遵循三级划分策略:

分配给 RT-Thread 实时核 (CPU2) —— 硬实时外设

这些外设对响应延迟有最严格要求,建议绑定到 RT-Thread 专用的硬实时核心:

外设类型

典型实例

分配理由

高精度定时器

Timer3/4/5

微秒级周期调度、精确时序控制

高速数据采集

I2C0, SPI0

避免任何调度抖动影响采样精度

实时通信总线

CAN0, EtherCAT

确定性通信要求,周期抖动 < ±5μs

实时 GPIO

GPIO1 中断引脚

快速响应外部事件,亚微秒级延迟

PWM 控制

PWM0/1

精确的电机速度/阀门开度控制

分配给 RT-Thread 常规核 (CPU1) —— 软实时外设

这些外设需要基本的实时性保证,但允许偶发的微小抖动:

外设类型

典型实例

分配理由

串口通信

UART0/1

通信速率较高,需要低延迟响应

文件存储

SDMMC1

RT-Thread 侧日志记录、参数存储

次要 CAN 总线

CAN1

非关键 CAN 通信,容忍微秒级抖动

次要 GPIO

GPIO2-5

状态监测、非紧急中断响应

分配给 Linux 的外设

外设类型

典型实例

分配理由

显示接口

MIPI-DSI, HDMI

依赖 Qt/Wayland 复杂图形栈

USB Host

USB0

完善的 USB 协议栈和驱动生态

大容量存储

SDMMC0, eMMC

需要 ext4/FAT32 文件系统支持

音频子系统

I2S0, Audio Codec

复杂的 ALSA/PulseAudio 处理框架

主网络接口

GMAC0

完整的 TCP/IP 协议栈、网络工具链

可共享使用的外设

外设类型

共享方式

说明

网络接口

虚拟网卡 (veth)

RTT 通过 RPMSG 接入 Linux 网络栈

文件系统

文件共享服务

通过共享内存跨系统访问文件

3.2 设备树配置实战

完整的外设迁移需要在 board.dts中完成三个关键配置:


 

步骤一:声明外设归属

通过 status 属性将 I2C0 声明为 RT-Thread 管理:

RT-Thread


 

步骤二:分配时钟资源

将 I2C0 的控制器时钟加入 rockchip_amp 时钟列表:

RT-Thread


 

步骤三:编译验证

编译设备树并烧录后,在 RT-Thread Shell 中验证设备归属:
 

RT-Thread

输出结果中 i2c0 已注册在 RT-Thread 系统中,即为迁移成功。

 

四、总结

AMP 架构的外设隔离体系为工业嵌入式系统提供了坚实的运行基础:

四层隔离机制(CPU/中断/时钟/内存)从物理层面保证了外设的可靠归属

清晰的划分指南帮助开发者快速确定每个外设的最优分配方案

灵活的配置方式通过设备树即可动态调整外设归属,无需修改硬件

睿擎工业开发平台完整实现了上述所有机制,并提供了丰富的开发工具链和示例工程,帮助开发者快速构建高效、可靠的 AMP 混合部署应用。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分