硬件观察点终于命中了,停机 PC 却落在一个任务入口的 prepare 序言附近。内存里出现的可疑数值,恰好就是当时几个普通寄存器中的数据。这种现场比“某行代码越界了”更难解释:写入本身可能完全正常,问题发生在另一个执行流随后怎样使用这块内存。
本文沿一次 RH850/U2A 内存异常的记录,说明如何从异常地址找到对象,再从写入 PC 找到汇编和栈槽。现有线索支持继续调查两个相邻任务栈的重叠使用;尚未记录到完整的“写坏返回槽、恢复错误 LP、跳到数据区”过程,因而没有最终根因和修复回归结论。
平台为 G4MH 内核、MICROSAR OS、GHS 工具链与 MULTI 7.1.6。下文使用 TaskA/TaskB、边界 B 和对象地址 C_A,只保留定位所需的地址关系。