摘要:在多核异构 SoC(Cortex-A7 + Cortex-M4)上跑 RTOS,共享内存区偶尔读到"过去的数据",甚至在数据明明已经更新后仍读到旧值。这类问题通常在实验室难以复现,量产阶段才爆发。本文用一个真实的工业网关事故,从现象到根因,拆解 Cache 一致性问题的三种典型形态——Cache Line 对齐导致的伪共享、DMA 与 Cache 交互时的数据陈旧、多核 Cache 不同步。给出完整的规避方案、可复现的演示代码和实测性能数据。建议收藏。一、引子:一个"时好时坏"的通信故障2024 年做一款工业协议网关,SoC 是 NXP i.MX6ULL(Cortex-A7 单核 + Cortex-M4 协处理器),跑 Linux + FreeRTOS 双系统。两个系统的分工:Cortex-A7 跑 Linux:协议转换、以太网通信、Web 界面Cortex-M4 跑 FreeRTOS:实时采集、Modbus 从站、故障保护两者通过共享内存 + RPMsg通信。A7 每秒把 100 条配置更新下发到共享内存,M4 读取后生效。问题来了:M4 偶尔读到"过期"的配置。具体现象:A7 写入新的电机参数(如 PID 增益)通过 RPMsg 通知 M4M4