# miio_ota_crc32_tool **Repository Path**: m163/miio_ota_crc32_tool ## Basic Information - **Project Name**: miio_ota_crc32_tool - **Description**: 小米IoT平台OTA固件CRC32添加工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-04-30 - **Last Updated**: 2025-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 小米IoT平台OTA固件添加CRC32工具 ## 1 MCU升级流程 小米IoT平台采用Xmodem-128协议完成MCU的OTA升级功能,具体的流程参考官方文档说明: https://iot.mi.com/v2/new/doc/embedded-dev/module-dev/ota/mcu-ota ## 2 固件生成CRC32规范 MCU要做OTA升级,需要将编译生成的bin文件结尾至少添加一层CRC用于通用模组校验使用,否则模组不会向MCU下发升级指令,若MCU也需要CRC校验,则需要添加两层层CRC,里面一层CRC给MCU校验使用; 为了MCU端CRC校验方便,可以使用Xmodem协议最后一个数据包来存放CRC校验信息,小米IoT平台的CRC工具采用小端模式添加CRC,按官方的推荐方式,可以在固件末尾添加12字节的CRC信息(4字节固件长度 + 4字节MCU端CRC + 4字节模组端CRC); ## 3 固件追加CRC32工具使用 ### 3.1 使用官方追加CRC工具 小米官方提供了追加一层CRC工具,具体的下载地址如下: https://cdn.cnbj1.fds.api.mi-img.com/iotweb-user-center/ea87815b02c04550ea4bdae20d9ea2a8_crc32.zip?GalaxyAccessKeyId=AKVGLQWBOVIRQ3XLEW&Expires=9223372036854775807&Signature=CYNJHo23nP1Cwba2roLXxuO3ghc= ### 3.2 使用非官方追加CRC工具 使用非官方的CRC工具在固件上自动填充FF,使其大小补齐长度为128字节的整数倍,然后再在固件末尾添加12字节的CRC信息(4字节固件长度 + 4字节MCU端CRC + 4字节模组端CRC); 在windows平台下,把将要加CRC的文件放入目录bin/windows/下面,将固件改名为"fw.bin",双击运行miio_ota_crc32_tool.exe,生成的"fw_crc32.bin"即为加上12字节CRC的固件; 在linux平台下,把将要加CRC的文件放入目录bin/linux/下面,将固件改名为"fw.bin",运行下面的命令,生成的"fw_crc32.bin"即为加上12字节CRC的固件; ```shell # 不使用任何参数将自动查找fw.bin并添加CRC生成fw_crc32.bin ./miio_ota_crc32_tool.out # 使用参数时则查找xxx.bin文件并添加CRC生成xxx_crc32.bin ./miio_ota_crc32_tool.out xxx.bin ``` 运行结果如下: ## 4 非官方追加CRC工具源码 非官方追加CRC工具通过src目录下面的源码编译生成,使用gcc工具编译即可生成可执行工具; windows平台下可以下载Mingw(https://www.mingw-w64.org/downloads/),配置好环境变量之后,直接运行build.bat即可编译生成可执行文件; linux平台下可以直接安装apt-get指令安装gcc,然后通过Makefile即可编译生成可执行文件;