|
|
我来查故障 log 链路:先看设备当前进程、配置、已有 fault_logs、运行日志,再对照 5/23 的记录找差异。
初查结果:设备现在没有任何故障文件,fault_logs 目录是空的;配置和程序都在,但需要确认串口是否还在收帧、触发条件是否还匹配。接下来我直接看源码里的故障触发逻辑和设备串口状态。
现在设备上没有 /dev/ttyACM* 或 /dev/ttyUSB*,所以程序根本收不到串口帧,故障记录自然不会触发。我要继续查是 USB/串口设备没起来,还是启动顺序/驱动问题。
关键原因基本明确了:当前程序只扫描 /dev/ttyACM*、/dev/ttyUSB*,但触摸屏内核启动信息显示实际接收串口是 /dev/ttyS2(rec device is /dev/ttyS2)。所以重启后程序没打开真实串口,故障 log 不可能生成。现在我从 1650 基线分支改源码,把串口候选加入 /dev/ttyS2,更新版本号后编译部署。
编译机连接参数写法不兼容,我查一下之前记录里的 hostkey 再继续。
编译虚拟机现在连不上。我先不等它,直接对当前 1650 基线二进制做安全补丁:只替换串口候选字符串和界面版本号,不改其它逻辑;这样能尽快恢复故障 log。
已恢复打开真实接收串口 /dev/ttyS2。现在程序能开串口了,但还要看是否持续收到有效帧、故障触发有没有进来;我等几十秒检查调试日志和长期记录是否增长。
串口已能打开,但 35 秒内没有收到一帧有效数据:调试日志只有 open serial /dev/ttyS2,没有 frame #...。这说明现在问题从“没开串口”变成“串口没有数据/波特率或端口不对/外部设备没发”。我继续做低风险探测:查串口配置代码和设备节点计数。
我发现 /dev/ttyACM0 现在已经出现了,之前那版程序启动太早时没等到它;我刚才把 /dev/ttyS2 放到首选后,虽然能打开串口,但这个口没有数据。现在改为更稳妥的策略:优先打开 /dev/ttyACM0,同时把开机启动脚本延迟几秒,让 USB 串口先枚举出来。
现在已恢复串口收帧,长期记录也开始写新文件了。我再做一次重启验证,确认断电/重启后也会等待 USB 串口枚举并自动打开 /dev/ttyACM0。
已检查并修复故障 log。
问题原因:
早上修复开机界面后,程序启动太早,USB ACM 串口 /dev/ttyACM0 还没枚举出来,iba_pda 启动时扫描不到真实数据串口,所以没有接收帧,也就不会生成故障 log。
我做了这些处理:
检查发现一开始:
/VFD/vfd_logs/fault_logs 为空
/tmp/iba_pda_vfd_debug.log 只有 serial thread start
没有 read、没有 frame
说明程序没收到数据
试过 /dev/ttyS2,能打开但没有数据;实际有效数据口仍是 /dev/ttyACM0。
修复启动脚本:
/root/start_iba_pda.sh
增加启动延时:
sleep 8
让 USB ACM 串口先枚举完成,再启动 /root/iba_pda。
更新程序显示版本号为:
20260525_0830
已重新部署并执行 reboot 验证。
验证结果:
重启后 /root/iba_pda 自动启动
/dev/ttyACM0 存在
调试日志持续收到有效帧:
frame #... ok=1
长期记录已生成新文件:
/VFD/vfd_logs/run_logs/log_run_260525-082453.csv
故障记录也已生成:
/VFD/vfd_logs/fault_logs/260525-082428.dat
故障文件大小:
438582 字节
当前部署文件:
/root/iba_pda MD5:d586602a061e775585aedf6a73749412
/root/start_iba_pda.sh MD5:d533a40a29b3c9e699406d5e14e58480
/etc/init.d/S99mcgs_app MD5:7d5dc366e411d5564d531f910d34d67c
修复记录保存到了:
I:\AI\work\2026-05-25\fault_log_acm_bootdelay_fix_20260525_0830\summary.md
现在故障 log 写入链路已经恢复。 |
|