fix: queue USB log buffer indices within SDK size limits

This commit is contained in:
chenjintao
2026-10-20 15:01:08 +08:00
parent 07094d4a4e
commit 11facd9574
3 changed files with 76 additions and 15 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ python3 tools/read_usb_log.py --port /dev/cu.usbmodemXXXX --reconnect
也可以使用现有串口终端打开这个 USB CDC 口:115200、8N1、无流控、UTF-8。同一端口同时只用一个读取程序。没有新增端口时,先检查数据线和 Mac 的 USB 设备枚举;实际板上的 USB 数据连接、CDC 描述符和 Mac 驱动识别仍需上板确认。
日志通过约 8 KB 的有界队列交给独立低优先级 USB 转发任务。业务日志入队使用零等待;USB 写失败时关闭并重新打开 CDC。队列拥塞或写失败会丢弃 USB 副本并累计计数,在线提示每约 5 秒报告一次。电脑接收时间不等于设备事件时间;断线前 SDK 已接受但未送到电脑的数据也无法保证补回,不支持历史日志回放。
日志保存在约 8 KB 的固定缓冲池中,通过只传递 4 字节缓冲区索引的有界队列交给独立低优先级 USB 转发任务,避免整条日志超过 SDK 的队列消息尺寸限制。业务日志入队使用零等待;USB 写失败时关闭并重新打开 CDC。队列拥塞或写失败会丢弃 USB 副本并累计计数,在线提示每约 5 秒报告一次。电脑接收时间不等于设备事件时间;断线前 SDK 已接受但未送到电脑的数据也无法保证补回,不支持历史日志回放。
转发范围是 `custom_app` 目标内编译的 `printf`,包括这次新增的诊断、VAD、WSS 和播放器日志。预编译库、内核、基带和启动前日志不经过本转发。单次格式化最多 511 字节,超长记录会明确加 `[TRUNCATED]`,并在 UTF-8 字符边界截断。日志不写设备 Flash、不上传服务器。