现象
车机开着开着突然黑屏、重走 Logo、重新加载------很多人第一反应是"硬件坏了"或"系统抽风"。多数情况下,这是看门狗(Watchdog)在兜底重启。
原理
看门狗是车机主板上的一个硬件定时器模块。它上电就开始倒计时,系统必须定期"喂狗"------往寄存器写一个特定值,把计时器清零。只要系统活着,喂狗就不会断。
一旦某个关键进程卡死,喂狗就停了:
- 主线程死锁,调度器转不动;
- 死循环占满 CPU,喂狗线程抢不到时间片;
- 内存爆了(OOM),关键进程被 kill 或冻住;
- Binder 通信彻底堵死,跨进程心跳发不出去。
计时器走到头,看门狗直接拉低复位引脚,整块主板硬重启。这不是软件层 restart,是硬件级别的复位,所以表现为"毫无征兆地黑屏重启"。
为什么这么设计
核心逻辑只有一句:宁可重启,也别留一块死屏在用户眼前。
倒车影像、导航、空调这些功能背后都依赖系统活着。如果关键进程死了却没人兜底,用户面对的就是一块卡死的黑屏,比重启更危险。看门狗就是最后一道保险------你卡我不跟你商量,直接拉复位。
对开发的硬约束
正因为看门狗盯的是"系统还活不活",而不是"界面流不流畅",所以车机性能优化有几条铁律:
- 主线程不干重活,避免喂狗线程饿死;
- Binder 调用设超时、不阻塞,跨进程心跳不能断;
- 关键进程要能自恢复,别等看门狗来兜底。
说白了,你以为卡的是 UI,其实卡的是整车的命门。下次车机无故重启,先查哪个进程把狗饿死了,而不是急着骂硬件。