【ESP32 调度模块问题排查】
问题描述
现场的调度模块3.1.0版本,支持呼叫铃功能,但是在现场出现严重的丢包。遂被派去现场抓日志调试。
方案排查
- 调度模块加入日志
- 串口嗅探工具interceptty
- 嗅探串口解析工具
排查记录
现场抓回来的日志是调度模块打印的调试信息和收到的数据。但是ros那边的现象是不断的丢包。导致的现象就是会车的时候卡顿。主要分析手段就是对interceptty的日志进行统计,查看丢包的数量
当时在公司第一次复现的时候,发现确实有丢包的情况,但是,不知道为什么丢。
第二次在公司复现的时候,抓出来的日志,从ros的日志中看出,碰巧看到,这个丢包出现的时间点很有规律,是每隔5秒就丢一次。
当时就很好奇,后来在蒋工的提示下,发现他是在重启。从重启这个突破口进入,发现是光韬的代码在接收到ros发过来的呼叫铃的包之后,因为开机的时候没有呼叫铃注册,所以espnow_send的mac地址是空的,除了广播地址,没有其他的地址,所以发送失败,超过5次就reset重启了。
最后发现问题是由于光韬的代码逻辑错误。