1. IPCM 模块简介Introduction1.1 IPCM 是什么PL320 IPCM 是一个高度可配置的核间通信硬件模块主要能力包括向其他 CPU 核发送中断随中断携带少量数据Mailbox Data支持一对一 / 一对多的消息通信支持自动应答Auto Acknowledge支持邮箱链式发送Auto LinkIPCM 通过AMBAAHB接口被各个 CPU 核访问常与Core Identification ModulePL321中断控制器如 VIC / GIC一起使用构成完整的多核通信体系。注意channel有两个含义一个mbox内部的channel和硬件定义的channel id和cpu绑定的概念2. 功能架构总览Functional Overview2.1 模块整体结构IPCM 主要由三部分组成AHB接口所有寄存器通过 AHB 访问支持多个 CPU 核同时访问Mailbox 与控制逻辑132 个 Mailbox每个 Mailbox 具有独立的源、目的、中断、数据寄存器中断生成逻辑将 Mailbox 状态映射为最多 32 路中断输出IPCMINT31:02.2 IPCM 在多核系统中的位置典型系统中每个 CPU 核有本地 AHB有自己的中断控制器IPCM挂在共享 AHB 上中断线连接到各个核的中断控制器这样任何一个核都可以通过 IPCM 给其他核发消息。3. IPCM 的基本通信模型3.1 Channel ID 的概念IPCM 用ChannelID来抽象“中断接收者”Channel ID 是one-hot 编码每一位对应一个 IPCMINTxxx 中断输出一个核可以有一个或多个ChannelID例如Channel ID中断输出0x1IPCMINT0000x2IPCMINT1110x4IPCMINT222……3.2 一个 Mailbox 包含什么每个 Mailbox 内部包括Source Register表示当前 Mailbox 被哪个核“占用”Channel id不是mbox的通道而是通往某个cpu的cpu编号0表示空闲mailbox表示一个mbox channel这里表示src需要接收ack的中断Destination Register指定消息要发送给哪些 Channel IDMask Register控制是否对某个 Channel ID 产生中断Mode RegisterAuto Acknowledge / Auto LinkSend Register触发发送 / 应答中断Data Registers07 个存放消息数据Mailbox 的设计目标很明确中断 少量payload4. IPCM 的工作流程Functional Operation4.1 基本消息发送流程一个最典型的流程如下源核占用 Mailbox写 Source Registerone-hot Channel ID设置目标核在 Destination Register 中 OR 多个 Channel ID配置中断 Mask写入数据寄存器写 Send Register bit0触发目的核中断目的核处理中断应答Acknowledge手动或自动返回给源核4.2 Auto Acknowledge自动应答当Auto Acknowledge使能时多个目标核都必须清除自己的中断当 Destination Register 变为 0硬件自动向源核发送应答中断应答数据与原始数据相同4.3 Auto Link邮箱链式发送Auto Link 允许将多个 Mailbox 串成一个“发送队列”前一个 Mailbox 被应答后不打断源核自动触发下一个 Mailbox 发送mbox0搞完就到了mbox1其实是两个mbox的ch但是这里搞得好像是两个mbox5. 可配置能力ConfigurationIPCM 在综合时可配置三个参数参数范围Mailbox 数量1 32每个 Mailbox 的 Data 寄存器数0 7中断输出数1 32这些配置通过硬件引脚MBOXNUMINTNUMDATANUM并反映在Configuration Status Register中方便驱动自动识别能力。6. 典型通信示例分析6.1 Core0 → Core1 单次消息关键步骤Core0 占用 Mailbox0设置 Core1 为 Destination写数据Send bit0 → Core1 中断Core1 读取数据Core1 Send bit1 → Core0 应答Core0 释放 Mailbox6.2 背靠背消息Back-to-Back同一个 Mailbox多次 Send / AckMailbox 不释放减少仲裁与配置开销7. 设计特点与适用场景总结7.1 IPCM 的优势硬件级同步低延迟结构简单软件易实现天然支持 SMP / AMP非常适合核间控制消息电源管理固件与 OS 通信Secure / Non-secure world 通信7.2 IPCM 的局限数据量小最多 7 × 32bit更偏“信号 控制”不是高速数据通道更适合作为kick / notify / command而不是 bulk data 传输。