XH221C 固件升级
XH221C 浏览器直接升级,无需驱动(HID 中断端点 · WebHID · 免驱、全平台)
XH221C WebHID 固件升级器
VID 0x1209 / PID 0x221C · HID 中断端点(EP1 OUT + EP2 IN)· 免驱、全平台
未连接
—
协议版本—
设备版本—
APP 区大小—
硬件标识—
硬件版本—
编译时间—
更新时间—
未选择固件文件(应为 APP 固件 .bin,烧录地址 0x2800)。
进度:0%
日志
使用说明
1. 本页面需运行在安全上下文:
2. 上电时无有效 APP 会直接进入 Bootloader,有 APP 则正常运行 APP。连接时不会把设备切到 Bootloader——只有点“开始升级”且版本校验通过后,才会发送进入升级命令切过去。
3. 点“连接设备”,在系统弹窗中选中
4. 选择 APP 固件
5. 版本校验为硬拦截:硬件版本不一致 → 禁止升级;软件版本(含编译时间)完全一致 → 视为已是最新,禁止重复烧录。
版本段写入 bin 偏移
因为带编译时间,每次重新编译都会自动成为新版本,无需手工修改版本号。
设备通过
6. CS32 唯一数据校验:CS32 是覆盖整个镜像的 CRC32 指纹(那 4 字节按 0 参与计算), 由构建脚本
7. 更新时间:升级时网页把当前时间下发给设备写入状态页,客户连上设备即可在「更新时间」一栏看到。
时间用「2020 元年」的 32 位打包格式(年-2020 + 月日时分,精确到分钟),不是 Unix 时间戳,
没有 2038 溢出问题,可表示 2020~2275 年。
1. 本页面需运行在安全上下文:
https:// 或 http://localhost。2. 上电时无有效 APP 会直接进入 Bootloader,有 APP 则正常运行 APP。连接时不会把设备切到 Bootloader——只有点“开始升级”且版本校验通过后,才会发送进入升级命令切过去。
3. 点“连接设备”,在系统弹窗中选中
CloudChip XH221C。4. 选择 APP 固件
.bin,点“开始升级”:版本校验 → 擦除 → 下发期望CRC → 分块写入 → 跳转运行。5. 版本校验为硬拦截:硬件版本不一致 → 禁止升级;软件版本(含编译时间)完全一致 → 视为已是最新,禁止重复烧录。
版本段写入 bin 偏移
0x100(44 字节:XHV2+固件版本+硬件版本+__DATE__+__TIME__+硬件标识 XH221C+CS32),因为带编译时间,每次重新编译都会自动成为新版本,无需手工修改版本号。
设备通过
CMD_GET_HWID 上报自身型号,显示在「硬件标识」一栏;设备型号与固件标识对不上同样禁止升级。6. CS32 唯一数据校验:CS32 是覆盖整个镜像的 CRC32 指纹(那 4 字节按 0 参与计算), 由构建脚本
Tools/patch_app_cs.py 回填。选中文件时自动校验,对不上=文件被改动/损坏,会被拦截;
设备跳转前也会校验一次。固件里 CS32 为 0(脚本未跑)时跳过该项。7. 更新时间:升级时网页把当前时间下发给设备写入状态页,客户连上设备即可在「更新时间」一栏看到。
时间用「2020 元年」的 32 位打包格式(年-2020 + 月日时分,精确到分钟),不是 Unix 时间戳,
没有 2038 溢出问题,可表示 2020~2275 年。