与 main.vp 的帧参数影子校验互补:那边抓的是 __init__ 栈局部量在启动阶段被写坏, 这边抓的是 .bss 全局在被写坏后、使用前被拦下。 - _SetFrameInvariants():在 start() 完成全部 .bss 赋值后记录影子 (_fb/_screen_w/_screen_h/_fb_pitch/_back_fb/_row_buf/_bg_row_buf/_dirty_rows) - _CheckFrameInvariants():桌面线程每秒比对一次,不一致即打印 [FATAL] (左右并列显示 实际值/期望值)并停机 这样两类写坏都能在使用前变成可定位现场,而不是继续静默破坏(如把后备缓冲刷到物理 0 起)。