# bootForHC32F460 **Repository Path**: GKoSon/bootForHC32F460 ## Basic Information - **Project Name**: bootForHC32F460 - **Description**: https://gitee.com/GKoSon/ioboard 的boot.bin - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-12 - **Last Updated**: 2026-02-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HC32F460 IAP Bootloader ## 项目简介 本项目是针对华大半导体HC32F460系列MCU的IAP(In-Application Programming)引导程序,支持OTA(Over-The-Air)差分升级功能。该 bootloader 实现了通过串口接收固件更新包,并支持MD5校验和CRC校验,确保固件传输的完整性和可靠性。 ## 主要特性 - **IAP引导功能**:支持跳转到应用程序执行 - **OTA差分升级**:支持增量(patch)和全量固件升级 - **通信接口**:支持串口通信,用于接收固件数据 - **安全校验**:集成MD5和CRC校验,确保固件完整性 - **Flash操作**:支持扇区擦除、读写操作 - **压缩支持**:集成hpatch_lite和tuz解压库,支持压缩固件包 ## 硬件要求 - HC32F460系列开发板 - 串口调试工具(USB转TTL模块) - J-Link或DAP调试器(用于程序烧录) ## 软件架构 ``` MDK/ ├── iap_boot.uvprojx # Keil工程文件 ├── startup_hc32f460.s # 启动文件 └── config/ ├── debug_init.ini # 调试初始化配置 ├── release_init.ini # 发行初始化配置 └── linker/ ├── HC32F460xC.sct # 512KB Flash链接脚本 └── HC32F460xE.sct # 1024KB Flash链接脚本 source/ ├── main.c/h # 主程序入口 ├── com.c/h # 串口通信驱动 ├── flash.c/h # Flash操作驱动 ├── md5.c/h # MD5校验算法 ├── hpatch_lite.c/h # 差分压缩库 ├── tuz_dec.c/h # 数据解压库 ├── tuz_hpbridge.c/h # 桥接模块 ├── hc32f4xx_conf.h # 芯片配置头文件 └── hpatch_lite_*.h # 相关头文件 ``` ## 功能模块 ### 1. 串口通信 (COM) - `COM_Init()`:初始化串口 - `COM_SendData()`:发送数据 - `COM_RecvData()`:接收数据 - `COM_DeInit()`:关闭串口 ### 2. Flash操作 - `FLASH_EraseSector()`:扇区擦除 - `FLASH_WriteData()`:写入数据 - `FLASH_ReadData()`:读取数据 - `FLASH_CheckAddrAlign()`:地址对齐检查 ### 3. 固件校验 - MD5校验计算 - CRC校验 ### 4. OTA升级 - 支持差分(patch)升级 - 支持全量固件升级 - 支持压缩固件包 - 固件信息存储与读取 ## 内存布局 ``` Flash空间分配: +------------------+ 0x00000000 | Bootloader | 引导程序区域 +------------------+ 0x00004000 | OTA Info区 | 升级信息存储 +------------------+ 0x00004200 | 旧固件区 | 备份固件 +------------------+ 0x00020000 | 新固件区 | 接收的新固件 +------------------+ 0x00040000 | 差分数据区 | 差分数据存储 +------------------+ 0x00060000 | 应用程序 | 应用程序区域 +------------------+ 0x00100000 ``` ## 使用说明 ### 编译烧录 1. 使用Keil MDK打开 `MDK/iap_boot.uvprojx` 工程 2. 选择对应的目标芯片型号(HC32F460xC或HC32F460xE) 3. 配置编译选项,确保使用正确的链接脚本 4. 编译工程生成 `boot.bin` 5. 使用J-Link或ISP将bootloader烧录到芯片 ### OTA升级流程 1. **准备工作**: - 设备上电,进入Bootloader模式 - 通过串口连接到PC 2. **传输固件**: - 发送OTA开始命令 - 传输固件数据(支持差分或全量) - 等待固件校验完成 3. **升级确认**: - 校验通过后自动更新 - 重启跳转到新固件 ### API使用 ```c // 跳转到应用程序 int32_t IAP_JumpToApp(uint32_t u32Addr); // 检查应用程序是否存在 void IAP_CheckApp(void); // OTA差分升级 int ota_diff_work(int diffFileSize); // 固件MD5自检 void file_MD5_self(uint8_t *md5Self); ``` ## 编译配置 ### 芯片型号选择 在Keil工程中根据实际芯片型号选择: - `HC32F460xC`:512KB Flash - `HC32F460xE`:1024KB Flash ### 调试配置 - 支持EventRecorder调试 - 提供J-Link配置文件 ## 依赖库 - **hpatch_lite**:轻量级差分补丁库 - **tuz**:数据解压库 - **HC32F460_DFP**:华大半导体官方SDK ## 注意事项 1. **首次烧录**:需通过调试器烧录Bootloader 2. **内存保护**:操作Flash时注意扇区边界 3. **升级安全**:建议在升级前备份原固件 4. **波特率**:根据实际串口配置调整通信参数 ## 版本历史 - **V1.0.0**:初始版本,支持基础IAP和OTA功能 ## 许可证 本项目遵循开源协议,具体许可证信息请查看项目根目录下的LICENSE文件。 ## 技术支持 如有问题或建议,欢迎通过Gitee平台提交Issue或Pull Request。 --- *本项目基于华大半导体HC32F460系列MCU开发,使用时请遵守相关协议和规定。*