Core0 每 10 ms 更新一帧传感器数据,Core1 每 20 ms 读取一次。刚好在 Core1 读取到一半时,Core0 又开始写入:时间戳已经变了,数据数组却仍属于上一帧。程序并不会立刻崩溃,但控制算法拿到的是不一致的快照。
再换一种场景:三个 Core 分别初始化通信、数据和控制模块。Core0 两毫秒就完成,而 Core2 要八毫秒。所有 Core 都完成初始化之后才能开放后续功能,单靠保护共享数据的 Spinlock 还不够。
这两个例子分别对应临界区互斥与阶段会合。前者常用 Spinlock,后者可以用 Barrier 组织;二者都建立在正确的原子操作、内存访问顺序和调度前提之上。我们从 AURIX TC3xx 的底层能力出发,再看 AUTOSAR OS 能提供哪些同步服务。