目录
一、固件升级
1.1 固件升级原理:
USB设备固件升级的基本流程通常包括以下几个关键步骤:
固件下载:
- 主机侧准备:主机(通常是计算机或嵌入式系统)准备好新的固件文件,该文件通常是一个经过加密、压缩或签名的二进制文件,包含了设备所需的全部或部分新固件代码。
- 固件上传:主机通过USB接口将固件文件发送到设备。这通常通过控制传输、批量传输或特定的固件升级传输类型(如DFU模式下的传输)完成。大型固件可能需要分包发送。
固件验证:
- 完整性校验:设备接收到固件数据后,首先进行完整性校验,如计算CRC、SHA-1/SHA-256校验和或使用数字签名验证固件来源和未被篡改。
- 固件格式检查:设备检查固件数据的格式是否符合预期,如是否符合特定的内存布局、是否有正确的头部信息等。
固件写入:
- 安全区域写入:设备可能先将新固件写入非易失性存储器(如Flash)的临时或备份区域,以防止升级过程中断导致原固件损坏。
- 擦除与编程:在验证通过后,设备开始擦除原有固件所在的 Flash 区域,并将新固件逐页(或按一定块大小)写入。写入过程中可能需要进行页编程、扇区擦除等底层 Flash 操作。
重启与激活:
- 重启设备:固件写入完成后,设备通常需要重启以加载新固件。重启过程可能涉及复位硬件、切换引导加载程序到新固件等操作。
- 固件自检与激活:新固件在启动时进行自我检查,如校验关键数据结构、执行初始化代码等。通过自检后,新固件正式激活并开始运行。
1.2 USB设备固件升级协议:
适用于固件升级的USB协议或扩展协议主要有