1. 文档基础信息
本应用笔记文档编号AN1135,版本 V1.0,由珠海极海半导体发布。文档针对 G32R5xx 系列,重点讲解 G32R501 芯片IPC(处理器间通信)模块,内容覆盖模块介绍、寄存器访问、共享 RAM、双核启动流程,同时提供消息邮箱、资源共享互斥、事件控制三套完整 SDK 应用示例。
提示:IPC 底层协处理器指令细节可查阅 Cortex‑M 官方手册,实际项目优先调用 SDK 封装接口,不需要直接操作原始协处理指令。
资料获取:AN1135 G32R501 IPC应用笔记
2. G32R501 芯片硬件架构概述
G32R501 为同构多核非对称双核微控制器,内部集成两颗 Arm Cortex‑M52 内核:
- CPU0:主核,上电复位后优先启动;
- CPU1:从核,由 CPU0 软件配置后开启时钟再启动。
双核运行模式下,两个内核独立执行程序,需要一套专用机制完成内核之间的数据交互、事件通知、外设写保护,IPC 处理器间通信模块就是承担该功能的片上单元。
IPC 模块不属于普通 AHB/APB 外设,它挂载在内核协处理器接口,协处理器编号为 1,必须通过 MCR/MRC、MCRR/MRRC 协处理指令访问寄存器。
3. IPC 模块三大核心能力总览
- 中断控制与数据共享(消息邮箱) 具备 4 组收发寄存器,每个 CPU 可产生 12 路 IPC 通用中断;支持寄存器短消息传递 + 共享 RAM 大块数据交换。
- 事件控制 依靠 TASK、STATE 寄存器,结合轮询 / RXEV 信号,实现任务下发、状态反馈,支持唤醒睡眠状态的从核。
- WRPRT 写寄存器保护 防止任意 CPU 错误改写外设寄存器,规避双核并发访问外设带来的误写风险。
4. 芯片 RAM 存储分区基础说明
G32R501 合计 7 块独立 RAM 存储,分为私有 RAM 与共享 RAM 两大类:
| RAM 存储区 | 起始地址 | 访问权限 |
|---|---|---|
| CPU0_ITCM | 0x0000_0000 | CPU0 私有,CPU1 不可访问 |
| CPU1_ITCM | 0x0000_0000 | CPU1 私有,CPU0 不可访问 |
| CPU0_DTCM | 0x2000_0000 | CPU0 私有,CPU1 不可访问 |
| CPU1_DTCM | 0x2000_0000 | CPU1 私有,CPU0 不可访问 |
| SRAM1 | 0x2010_0000 | CPU0、CPU1 均可访问(共享内存) |
| SRAM2 | 0x2020_0000 | CPU0、CPU1 均可访问(共享内存) |
| SRAM3 | 0x2030_0000 | CPU0、CPU1 均可访问(共享内存) |
重点说明:CPU0 与 CPU1 的 ITCM、DTCM 地址虽然完全相同,但属于物理独立内存,不能用来做双核数据交互;跨核数据交换,必须使用 SRAM1/SRAM2/SRAM3 共享内存,配合 IPC 中断完成通知。
标准大块数据交互流程:
- CPU0 把数据写入共享 SRAM;
- CPU0 触发 CPU1 的 IPC GP 通用中断,通知数据就绪;
- CPU1 读取共享内存数据做业务处理;
- CPU1 完成处理后,触发 CPU0 GP 中断,告知处理完成,CPU0 可下发下一批数据。
5. IPC 模块典型业务落地场景
阅读全文
127