2. Cortex-M33应用核与Cortex-M33网络核硬件资源解析
nRF5340是Nordic首款双核Cortex-M33无线SoC,它把"应用"和"网络"两类职责拆到两颗物理独立的处理器上。理解这两颗核的硬件资源差异,是后续做双核分工、内存规划、外设分配和中断设计的前提。本节围绕主频、缓存、内存映射、外设归属、中断优先级以及双核共享资源的访问边界逐项展开。
一、两颗核的定位与主频差异
应用核(Application Core)面向用户业务逻辑,运行Zephyr等完整RTOS,主频最高128 MHz;网络核(Network Core)专职承载蓝牙LE、802.15.4、Thread、Zigbee等无线协议栈,主频最高64 MHz。两者都是Arm Cortex-M33,都带FPU(单精度浮点)、DSP指令和TrustZone安全扩展,但网络核的时钟频率只有应用核的一半,这是刻意的设计取舍:协议栈的实时性要求由硬件外设和专用加速器保证,不需要高主频,降低主频可以显著省电。
需要注意,128 MHz和64 MHz都是"最高"值。实际运行频率由时钟控制模块决定,应用核可在128/64/32 MHz等档位切换,网络核通常固定在64 MHz。做功耗预算时,不能默认两颗核都跑在最高频。
二、缓存与紧耦合内存
应用核配有指令缓存(I-Cache)和数据缓存(D-Cache),容量为2 KB I-Cache + 2 KB D-Cache。缓存的存在意味着应用核访问外部Flash和RAM时,命中缓存可显著降低平均访问延迟,但也带来一致性问题:如果DMA要写入一块被D-Cache缓存的内存,必须先做cache clean/invalidate,否则CPU可能读到旧数据。这是nRF5340应用核开发中最容易踩的坑之一。
网络核没有缓存,取而代之的是紧耦合内存(TCM)。网络核的代码和数据放在TCM中,访问延迟确定、无缓存抖动,这对协议栈的实时性至关重要。因此网络核的固件通常被链接到TCM区域,而不是普通RAM。
三、内存映射与容量分配
两颗核共享同一片1 MB Flash和512 KB RAM,但物理上被划分成各自的区域。Flash被分为应用核区、网络核区和共享区;RAM同样如此。典型划分(以Nordic默认配置为例,具体数值随SDK版本和分区方案变化):
| 区域 | 典型容量 | 归属 |
|---|---|---|
| Flash 应用核区 | 约 512 KB~768 KB | 应用核代码/常量 |
| Flash 网络核区 | 约 256 KB | 网络核协议栈 |
| RAM 应用核区 | 约 256 KB~448 KB | 应用核数据/堆栈 |
| RAM 网络核区 | 约 64 KB | 网络核数据/TCM |
| 共享RAM | 数KB~数十KB | 双核通信缓冲 |
这些边界不是硬件硬性锁死的,而是由分区表(partition)和链接脚本共同约定。修改分区方案时,必须同时更新两颗核的链接脚本,否则会出现地址重叠或越界访问。
四、外设归属与共享资源
nRF5340的外设并非全部对两颗核平等开放。大部分外设(如UARTE、SPIM、TWIM、PWM、SAADC、TIMER等)在硬件上归属于某一颗核,或通过DPPIC(分布式可编程中断控制器)分配给指定核。典型归属:
- 应用核独占:USB、大部分高速串行外设、SAADC、多数TIMER/PWM。
- 网络核独占:无线相关的RADIO、部分定时器和PPI通道。
- 双核共享:部分GPIO、部分串行外设、共享RAM、IPC(核间通信)外设、DPPIC。
共享外设的访问必须通过核间通信协调,不能两颗核同时直接操作同一寄存器,否则会产生竞态。实践中,通常约定"某一外设由某一颗核作为owner",另一颗核通过IPC请求服务,而不是直接读写。
五、中断优先级与DPPIC
Cortex-M33的NVIC支持可编程中断优先级,nRF5340上优先级数值越小优先级越高。两颗核各有独立的NVIC,中断优先级互不影响。但共享外设的中断需要通过DPPIC路由到目标核,DPPIC负责把外设中断分发到应用核或网络核的NVIC。
设计中断优先级时要遵循两条原则:一是无线协议栈相关中断(网络核)必须获得足够高的优先级,保证连接事件不被延迟;二是应用核中与实时性相关的DMA/串口中断优先级要高于普通任务中断。优先级配置错误是双核系统出现偶发丢包、连接不稳的常见原因。
六、双核共享资源的访问边界
共享资源主要包括共享RAM、IPC外设和部分共享外设。访问边界可以概括为三条规则:
- 共享RAM的读写必须通过IPC或明确的同步机制(如信号量、邮箱)进行,不能裸读写。
- 共享外设同一时刻只能由一颗核作为控制方,切换owner需要显式握手。
- 中断和DMA的配置要与owner核一致,避免中断路由到非owner核导致丢失。
七、资源分配速查
下面这张图把两颗核的主频、缓存/TCM、内存区域、外设归属和共享边界放在同一张关系图中,便于对照记忆。