feat: 链路控制、延迟校准与长测工具,补全文档
构建客户端 / 检查(类型 + 单元测试) (push) Canceled after 0s
构建客户端 / Linux x64(deb + AppImage) (push) Canceled after 0s
构建客户端 / Windows x64(NSIS 安装包) (push) Canceled after 0s
构建客户端 / macOS 通用(.app + .dmg) (push) Canceled after 0s

- 固件:新增 link_control / stream_control,覆盖运行中 Wi-Fi 断线恢复、取帧节拍、
  温控与质量/帧率减载;UDP 发送增加有界重试预算与帧期限,PSRAM JPEG 直发减少拷贝。
- 协议:重组器严格校验分片布局,统计未收齐、超时与完全缺失的帧,处理帧号回绕与设备重启。
- 桌面端:视频改 latest-value 通道并前置帧时间标记,拒绝积压和慢解码的过期画面;新增
  延迟标记页与 --latency-report 校准,完善录制、服务端与退出流程。
- 文档与脚本:新增硬件、开发、延迟、功耗、实时性、稳定性文档和改动记录,重写根 README;
  新增构建、性能、延迟与串口长测脚本,以及长测客户端脚本。
- 构建:固定 esp-1.97.0.0 工具链,分区表随构建复制,更新 sdkconfig 与忽略规则。
This commit is contained in:
2026-10-19 00:19:07 +08:00
parent 4794bed2cf
commit cc6b82d7ec
60 changed files with 4347 additions and 655 deletions
+6 -5
View File
@@ -1,17 +1,18 @@
# Name, Type, SubType, Offset, Size, Flags
#
# The app partition offset here is chosen by scripts/flash.sh, not by hand. It
# sits well above the usual 0x10000 because the module this firmware was first
# brought up on has a defective byte in its SPI flash at 0xFADE7 (bits 5..7
# The app partition offset must be validated against each rebuilt image. The
# module this firmware was first brought up on has a defective byte in its SPI
# flash at 0xFADE7 (bits 5..7
# cannot be programmed). The app image is unchanged by where it is placed, so
# moving the partition moves which image byte lands on that address - and
# because a rebuild can shift the image again, re-deriving the offset by hand
# because a rebuild can shift the image again, keeping an unchecked offset
# would break on the next build. flash.sh picks the lowest 64 KB-aligned offset
# whose byte at that address the flash can actually store, writes it back here,
# and rebuilds.
#
# If you move to healthy hardware, put `factory` back at 0x10000 and delete
# BAD_FLASH_ADDR from scripts/flash.sh; nothing else depends on this.
# The same module also showed bit 6 read back high at 0x10863; keep factory >=0x20000.
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x060000, 0x120000,
factory, app, factory, 0x070000, 0x120000,
1 # Name, Type, SubType, Offset, Size, Flags
2 #
3 # The app partition offset here is chosen by scripts/flash.sh, not by hand. It # The app partition offset must be validated against each rebuilt image. The
4 # sits well above the usual 0x10000 because the module this firmware was first # module this firmware was first brought up on has a defective byte in its SPI
5 # brought up on has a defective byte in its SPI flash at 0xFADE7 (bits 5..7 # flash at 0xFADE7 (bits 5..7
6 # cannot be programmed). The app image is unchanged by where it is placed, so
7 # moving the partition moves which image byte lands on that address - and
8 # because a rebuild can shift the image again, re-deriving the offset by hand # because a rebuild can shift the image again, keeping an unchecked offset
9 # would break on the next build. flash.sh picks the lowest 64 KB-aligned offset
10 # whose byte at that address the flash can actually store, writes it back here,
11 # and rebuilds.
12 #
13 # If you move to healthy hardware, put `factory` back at 0x10000 and delete
14 # BAD_FLASH_ADDR from scripts/flash.sh; nothing else depends on this.
15 # The same module also showed bit 6 read back high at 0x10863; keep factory >=0x20000.
16 nvs, data, nvs, 0x9000, 0x6000,
17 phy_init, data, phy, 0xf000, 0x1000,
18 factory, app, factory, 0x060000, 0x120000, factory, app, factory, 0x070000, 0x120000,