文档信息
| 报告名称 | WS8204 数字电源固件断点续传应用测试报告 |
| 版本 | v1.0 |
| 日期 | 2026-10-25 |
| 测试对象 | WS8204-EVB ×2(H-UART) |
| 固件镜像 | 64 KB 等效数字电源固件镜像 |
| 时间限制 | 120 s |
| 测试工具 | ws8204_perf.exe + run_fwupdate_resume.ps1 |
| 测试结果 | PASS |
1. 背景与目标
模拟通过星闪模块把数字电源固件从发送端传到接收端,验证:
64 KB 固件在 120 s 内完成传输
软件主动打断链路 5 次
每次打断后从断点继续,不从头开始
重传机制实际生效
最终文件不丢包、数据完整
源文件与接收文件 SHA-256 一致
2. 测试环境与拓扑
PC A (COM3) ── H-UART ── WS8204-A ── SLE ── WS8204-B ── H-UART ── PC B (COM4)
| A 板 | COM3,MAC 54:ef:80:1a:51:d9,Client/Master |
| B 板 | COM4,MAC 1a:ac:10:3d:36:e6,Server/Slave |
| 串口 | 115200 8N1,无流控 |
| 链路参数 | MTU 248,interval 200(25 ms),PHY 0(1M),SMUX 8 |
| 接收端 | PC 保存文件并做 SHA-256 校验 |
| 测试工具 SHA-256 | 32CF15D37F5E83D4BADE34F0FB2E01E3CBC7892DB1A415D2B08C8B3CCD73DABF |
3. 固件镜像
| 文件 | fw_image.bin |
| 大小 | 65,536 B(64 KB) |
| 版本头 | WS8204-DP-FW|V1.0.0|64KB|2026-10-25 |
| 主体 | 确定性伪随机填充 |
| SHA-256 | 1409690186ccf188e4e4b8e3e884bced2719d0ef7a6192748115bdf7d25d9694 |
4. 断点续传设计
4.1 块级断点
固件按 8 KB 块切分,64 KB 共 8 块。
每块单独传输并校验 SHA-256。
接收端持久化 resume_state.json,记录每块完成状态。
断点恢复点为被打断块的起始偏移,最多重传 8 KB。
已完成块不会重复传输;最终文件由已校验块按顺序拼接。
采用 8 KB 块而不是更小粒度,是因为当前 CH9102 H-UART 在连续 AT 传输约数 KB 后会出现写错误;8 KB 块是当前硬件下可稳定完成的块大小。块内仍由文件 SHA 和传输结果保证完整性。
4.2 软件打断
打断方式:发送端 AT+SDISC 主动断开 SLE 链路。
重连后读取 resume_state.json,跳过已完成块,从当前块继续。
本次共打断 5 次,位置为块 1、2、3、4、6(偏移 8/16/24/32/48 KB)。
4.3 重传机制
某块传输失败(长度或 SHA 不一致)时,整块重传。
额外重传一个已完成块,验证重复块不会破坏最终文件。
最终文件只由第一份校验通过的块组成,重复块不参与拼接。
5. 测试步骤
生成 64 KB 固件镜像并计算 SHA-256。
配置 A=Client、B=Server,建立链路。
按 8 KB 切块,初始化 resume_state.json。
逐块传输;在块 1/2/3/4/6 前执行 AT+SDISC 软件打断。
每次打断后重连,读取状态,从当前块继续。
块 2 首次失败后整块重传;最后额外重传块 0 验证幂等。
拼接所有块,计算接收文件 SHA-256。
对比源/接收 SHA,检查 8 块完成位图。
复现命令:
.\tools\run_fwupdate_resume.ps1 ` -Source "docs\02_测试数据\FW_20261025\fw_image.bin" ` -OutRoot "docs\02_测试数据\FW_RESUME_06_8k_fast50" ` -BlockBytes 8192 ` -InterruptPct "15,30,45,60,80" ` -TimeLimit 120
6. 测试结果
6.1 汇总
| 固件大小 | 65,536 B |
| 块大小 | 8,192 B |
| 总块数 | 8 |
| 软件打断次数 | 5 |
| 失败重传块数 | 1(块 2) |
| 失败重传字节 | 8,192 B |
| 额外幂等重传 | 1 块(块 0,8,192 B) |
| 总耗时 | 79.046 s |
| 时间限制 | 120 s |
| 时间余量 | 40.954 s |
| 最终 SHA-256 | 1409690186ccf188e4e4b8e3e884bced2719d0ef7a6192748115bdf7d25d9694 |
| SHA 对比 | 与源文件一致 |
| 完成位图 | 8/8 全部完成 |
| 结果 | PASS |
6.2 分块结果
| 0 | 1 | PASS | 5.485 | 27bb3990...926858a |
| 1 | 1 | PASS | 5.320 | fb31875d...026e9ab5 |
| 2 | 1 | FAIL | 11.331 | 7bc93b35...08f9907d |
| 2 | 2 | PASS | 5.371 | 7bc93b35...08f9907d |
| 3 | 1 | PASS | 5.389 | b36939a2...bb8a0360 |
| 4 | 1 | PASS | 5.512 | 5da49942...a3854c26 |
| 5 | 1 | PASS | 5.263 | c7556ed6...5b91a903 |
| 6 | 1 | PASS | 5.323 | b1461b56...4b4c90d3 |
| 7 | 1 | PASS | 5.257 | 4e501022...979387 |
完整 SHA 见附件 blocks.csv。
6.3 打断与恢复
| 1 | 1 | 8,192 | interrupted | 2.295 |
| 2 | 2 | 16,384 | interrupted | 2.242 |
| 3 | 3 | 24,576 | interrupted | 2.235 |
| 4 | 4 | 32,768 | interrupted | 2.276 |
| 5 | 6 | 49,152 | interrupted | 2.287 |
每次 AT+SDISC 后约 2.2 s 完成重连并继续;已完成块未重复传输。
6.4 重传证据
块 2 第一次传输失败:写入长度/SHA 不匹配,耗时 11.331 s。
块 2 第二次传输成功:耗时 5.371 s,块 SHA 与源块一致。
最后额外重传块 0:PASS,8,192 B;最终文件未被重复内容破坏。
汇总字段:retried_blocks=1、retried_bytes=8192、retransmitted_blocks=1、retransmitted_bytes=8192。
7. 数据完整性校验
源文件 SHA-256:
1409690186ccf188e4e4b8e3e884bced2719d0ef7a6192748115bdf7d25d9694
接收文件 SHA-256:
1409690186ccf188e4e4b8e3e884bced2719d0ef7a6192748115bdf7d25d9694
结果:
接收文件长度 65,536 B
8/8 块完成
resume_state.json 的 completed 全部为 true
无缺失块、无错误块
最终 SHA 与源文件完全一致
8. 时间分析
| 总耗时 | 79.046 s |
| 时间限制 | 120 s |
| 余量 | 40.954 s |
| 5 次断链恢复合计 | 约 11.335 s |
| 块 2 失败重传 | 11.331 s |
| 正常块传输平均 | 约 5.3 s |
满足 64 KB / 120 s 要求。
9. 结论
本场景测试 PASS。
64 KB 数字电源固件在 79.046 s 内完成,低于 120 s 限制。
软件主动打断 5 次,均成功从断点继续。
块 2 发生一次失败,整块重传后校验通过。
额外重复重传块 0,最终文件未被破坏,验证幂等性。
最终文件 SHA-256 与源文件一致,8/8 块完成,无丢包、无数据损坏。
10. 限制与说明
断点粒度为 8 KB 块,恢复点为被打断块的起始偏移;块内不完整则整块重传,最多回退 8 KB。
采用 8 KB 块是当前 CH9102 H-UART 连续传输稳定性的折中;若需要更细粒度(如 200 B),需要更稳定的 USB-UART 或硬件流控。
本测试的接收端为 PC 文件系统;如果实际数字电源 MCU 使用不同烧录协议,需要把块写入/校验接口替换为 MCU Flash 写入接口。
11. 数据与复现
关键数据:
docs\02_测试数据\FW_20261025\fw_image.bin docs\02_测试数据\FW_20261025\fw_image.sha256 docs\02_测试数据\FW_RESUME_06_8k_fast50\summary.json docs\02_测试数据\FW_RESUME_06_8k_fast50\blocks.csv docs\02_测试数据\FW_RESUME_06_8k_fast50\interruptions.csv docs\02_测试数据\FW_RESUME_06_8k_fast50\resume_state.json docs\02_测试数据\FW_RESUME_06_8k_fast50\received_fw.bin docs\02_测试数据\FW_RESUME_06_8k_fast50\block_*\(每块接收结果)
测试脚本:
tools\run_fwupdate_resume.ps1 tools\ws8204_perf\(file 命令、build.ps1、exe)
环境依赖:Windows 10/11、.NET Framework 4.8、PowerShell 5.1、CH9102 驱动、两块 WS8204-EVB。
12. 附件
附件位于 attachments\数字电源固件断点续传\:
| WS8204_数字电源固件断点续传测试报告.md | 本报告 | 见文件 | 见 SHA256SUMS.txt |
| WS8204_数字电源固件断点续传_测试数据_20261025.zip | 固件镜像、接收文件、summary、blocks、interruptions、state | 455,999 B | 2b7293f23956e2b5a641bb590ca2007caa6eca2b1a9eae3076ebb76a49bdbfd7 |
| WS8204_数字电源固件断点续传_测试脚本_20261025.zip | run_fwupdate_resume.ps1、C# 源码、exe、build.ps1 | 50,886 B | 54e96eb00e5c584d4be0f3d57aee88d5dba4173f93c5216af74b4e2e49a1c6cc |
| SHA256SUMS.txt | 附件校验和 | 见文件 | — |
| README_附件说明.md | 附件内容与复现说明 | 见文件 | — |
我要赚赏金
