第31章:故障排查与优化

遇到 Bug 不要慌,遵循“现象 -> 假设 -> 验证”的科学排查流程。

31.1 网络故障

现象:设备频繁掉线。

  • 排查思路
    1. 信号强度:检查 RSSI,是否因为距离路由器太远或有墙壁阻隔?
    2. DHCP 租期:路由器的 DHCP 租期到了,IP 续租失败?
    3. 路由器负载:家用路由器带机量通常不超过 30 台,连接过多会导致随机踢人。
    4. 云端限流:检查云平台日志,是否因为发包频率太快被 Throttling(限流)?

31.2 数据异常

现象:温度传感器显示 -999 或 0。

  • 排查思路
    1. 硬件连接:I2C/UART 线松动?虚焊?
    2. 时序问题:上电初始化时,传感器还没准备好就去读?(加 delay)。
    3. 数据溢出:变量类型选错了?(用 int8 存了 200)。

31.3 功耗异常

现象:电池本来能用一年,结果一周就没电了。

  • 排查思路
    1. 休眠失败:代码逻辑有 Bug,导致无法进入深度睡眠。
    2. 外设漏电:主控睡了,但传感器、LDO 或上拉电阻还在耗电。
    3. 唤醒频繁:中断引脚被干扰信号误触发,导致频繁唤醒。

31.4 系统死机

现象:设备运行几天后突然没反应,重启后正常。

  • 排查思路
    1. **内存泄漏 (Memory Leak)**:malloc 后忘了 free。随着时间推移,堆内存耗尽。
    2. 指针越界:操作了非法内存区域。
    3. 电源波动:电机启动瞬间拉低电压,导致 MCU 复位。
    • 对策:开启硬件看门狗 (WDT),死机后自动重启。

排查完故障,我们往往还需要对系统进行调优。下一章我们将探讨性能调优

« 上一篇 系统监控与维护 下一篇 » 性能调优