嵌入式测试学习第 36 天:串口日志分析、通过日志定位简单问题

串口日志分析、通过日志定位简单问题


一、串口日志是什么

串口(UART)是嵌入式设备最基础、最稳定、最便宜 的调试接口。

设备上电、启动、初始化、运行、报错、死机、重启,所有底层行为都会打印串口日志

测试工程师90%的问题都靠串口日志定位

  • 设备反复重启
  • 开机失败
  • WiFi/蓝牙连不上
  • 运行越久越卡
  • 死机无响应
  • 乱码
  • 文件系统损坏

二、串口工具与接线

2.1 常用工具

Windows:SSCOM、XCOM、串口调试助手

Linux/Mac:minicom、screen、SSCOM for Linux

下面用**SSCOM(最常用)**真实界面演示:

2.2 串口接线(必须正确,否则无日志/乱码)

USB转TTL → 设备

  • GND ↔ GND(必须接!否则乱码)
  • TX ↔ RX
  • RX ↔ TX
  • 5V/3.3V 不要接!会烧板

2.3 串口参数(必须一致)

  • 波特率:115200(最常见),其次 9600、38400
  • 数据位:8
  • 停止位:1
  • 校验位:None
  • 流控:None

三、日志等级(一眼判断严重程度)

所有嵌入式日志都分等级:

等级 标识 含义 测试处理
DEBUG DEBUG 调试信息,量产关闭 不用管
INFO INFO 正常运行 正常
WARN WARN 警告,潜在问题 必须记录
ERROR ERROR 功能失败 严重,必须修
FATAL FATAL 死机/崩溃 最高优先级

四、正常启动日志

4.1 正常日志示例(ESP32/STM32通用)

日志内容:

复制代码
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[INFO] Bootloader V2.0.1 start
[INFO] Chip: ESP32-WROOM-32, 4MB Flash
[INFO] System clock: 240MHz
[INFO] UART init 115200 OK
[INFO] GPIO/I2C/SPI init OK
[INFO] WiFi init success
[INFO] BLE init success
[INFO] File system mount OK
[INFO] Main task started
[INFO] Heartbeat: 1
[INFO] Heartbeat: 2

4.2 正常日志特征

  • ERROR/WARN/FATAL
  • 所有外设初始化 OK
  • 持续打印 心跳(Heartbeat)
  • 不会反复从头启动(无自动重启)

五、真实工作案例


案例1:设备反复自动重启 → 看门狗复位(最高发)

现象

运行几分钟自动重启,循环往复。

日志内容

复制代码
[INFO] Heartbeat: 120
[INFO] I2C read sensor...
[FATAL] Watchdog Reset!
[INFO] Bootloader start...

分析

  • Watchdog Reset = 看门狗超时复位
  • 卡死在 I2C read sensor → 主线程卡住,没喂狗

原因

  • I2C设备无应答,程序死等
  • 长任务阻塞,喂狗代码没执行

解决

  • I2C加超时机制
  • 长循环里定期喂狗

案例2:日志突然中断、设备死机(静默死机)

现象

日志停住,按键/网络无响应,只能断电重启。

日志内容

复制代码
[INFO] SPI Flash write start
[INFO] Write addr: 0x08000000
[INFO] Writing data...
<<< 日志停在这里,无输出 >>>

分析

  • 卡在 SPI Flash write → SPI总线挂死
  • 无报错、无重启 → 静默死机

原因

  • Flash硬件损坏
  • SPI时序错误
  • 写Flash时未关中断导致死锁

解决

  • 换Flash测试
  • SPI读写超时
  • 写Flash前关闭中断

案例3:串口乱码(90%新手遇到)

现象

全是乱码,看不到正常文字。

原因(按概率)

  1. 波特率不匹配(设备115200,工具9600)
  2. GND没接(干扰)
  3. 数据位/校验位不匹配

解决

  • 波特率依次试:115200 → 9600 → 38400
  • 固定 8N1
  • 必须接 GND

案例4:WiFi连接失败(密码错误/认证超时)

现象

能搜到WiFi,但连不上。

日志内容

复制代码
[INFO] WiFi scan OK, found 8 APs
[INFO] Connect SSID: OfficeWiFi
[ERROR] Password check fail
[ERROR] Auth timeout, disconnect

分析

  • Password check fail → 密码错误
  • Auth timeout → 路由器WPA3,设备只支持WPA2

解决

  • 核对密码
  • 路由器改为 WPA2-PSK
  • 靠近路由器(RSSI > -70dBm)

案例5:文件系统损坏,开机失败

现象

反复开关机后,开机卡在启动界面,配置丢失。

日志内容

复制代码
[INFO] Mount /fatfs...
[ERROR] FATFS mount failed
[WARN] Flash partition corrupted
[INFO] Enter recovery mode

分析

  • FATFS mount failed → 文件系统挂载失败
  • Flash partition corrupted → 分区损坏

原因

  • 异常断电(写数据时突然掉电)
  • Flash坏块

解决

  • 格式化文件系统
  • 重新烧录固件
  • 增加掉电保护机制

案例6:长期运行内存泄漏 → 越跑越卡最后死机

现象

刚上电正常,几小时后卡顿,最后死机重启。

日志内容

复制代码
[INFO] Malloc 1024 OK
[INFO] Malloc 1024 OK
...(重复上千次)
[ERROR] Malloc fail! No free RAM
[WARN] System memory: 99% used

分析

  • Malloc fail → 内存耗尽
  • 只 malloc 不 free → 内存泄漏

解决

  • 找到未释放内存,加 free
  • 改用静态数组,减少动态内存

案例7:Hard Fault(硬件异常/指针错误)

现象

突然崩溃重启,日志报 Hard Fault。

日志内容

复制代码
Guru Meditation Error: Core 0 panic'ed (StoreProhibited)
PC: 0x400d1234, PS: 0x00060d30
Backtrace: 0x400d1234:0x3ffbe5a0

分析

  • Hard Fault = 指针错误、栈溢出、非法访问内存
  • C语言常见:野指针、数组越界、栈溢出

解决

  • 查代码指针操作
  • 增大栈大小
  • 检查数组边界

案例8:欠压重启(电源硬件问题)

现象

一开继电器/电机就重启,空载正常。

日志内容

复制代码
[FATAL] Brownout Reset: Voltage drop detected
System voltage: 2.9V, Threshold: 3.3V

分析

  • Brownout Reset = 欠压复位
  • 电源带载能力不足,硬件问题

解决

  • 更换更大功率电源
  • 增加电容滤波

六、串口日志万能分析流程

  1. 先找 ERROR/WARN/FATAL/Reset
  2. 定位报错前最后一行日志 → 问题就在这个模块
  3. 看时间戳
    • 上电就错 → 初始化问题
    • 运行一段时间错 → 内存/看门狗/稳定性
  4. 对比正常日志:差异点就是故障点
  5. 区分软硬件
    • HardFault/Watchdog → 软件
    • Brownout → 硬件电源

七、总结

  1. Watchdog Reset 是什么?

    看门狗超时复位,主线程卡死、没喂狗。

  2. 日志突然中断无报错?

    SPI/I2C总线挂死,静默死机。

  3. 串口乱码先查什么?

    波特率 → GND接线 → 数据位/校验位。

  4. Hard Fault 原因?

    野指针、数组越界、栈溢出。


相关推荐
一楼的猫2 小时前
AI写作合规技术方案:平台检测机制分析与规避策略
人工智能·学习·机器学习·ai写作
wuyk5552 小时前
24. C 语言模块化:不是拆几个.c 文件那么简单
c语言·开发语言·stm32·单片机
四月天433 小时前
web安全-SSTI(服务器模板注入)
笔记·学习·web安全·网络安全
☆cwlulu4 小时前
调试排查工具介绍(gdb、strace、Valgrind等)
开发语言·c++·嵌入式硬件·ubuntu
网络与设备以及操作系统学习使用者4 小时前
相对论核心原理详解
学习·深度优先
lzqrzpt5 小时前
LED驱动电源选型标准与工程应用技术要点解析
python·单片机·嵌入式硬件·物联网
木子单片机5 小时前
基于51单片机的音乐彩灯设计
单片机·嵌入式硬件·51单片机·keil
hongmai6668885 小时前
ESP32-S2-MINI-2U-N4R2:一款为灵活部署而生的Wi-Fi MCU模组
人工智能·单片机·嵌入式硬件·物联网·智能家居
熙芯XiChip6 小时前
Modbus-RTU帧结构与功能码解析
单片机
电子工程师成长日记-C516 小时前
51单片机录音笔(带闹钟)
单片机·嵌入式硬件·51单片机