littlebot
Published on 2025-04-12 / 3 Visits
0

【源码】基于C语言和FreeRTOS框架的单片机固件升级系统

项目简介

本项目是基于C语言和FreeRTOS框架开发的嵌入式系统固件升级程序。其核心功能是借助UART接口接收符合YMODEM协议格式的固件文件,再通过I2C接口将文件写入到MCU的Flash存储器,从而实现单片机固件的升级。

项目的主要特性和功能

  1. 采用FreeRTOS实时操作系统进行多任务管理和调度,保障固件升级过程的实时性与稳定性。
  2. 运用YMODEM协议,通过UART接口接收固件文件。
  3. 利用I2C接口与MCU的Flash存储器通信,实现固件数据的写入。
  4. 具备错误处理机制,可在固件升级过程中处理可能出现的错误,并尝试恢复升级流程。
  5. 升级前计算并检查固件文件的MD5校验和,确保文件的完整性与正确性。

主要函数及功能

  • uart_init():初始化UART接口,用于接收固件文件。
  • uart_exit():关闭UART接口。
  • i2c_init():初始化I2C接口,用于与Flash存储器通信。
  • i2c_write():向Flash存储器写入数据。
  • Ymodem_Transmit():实现YMODEM协议的文件传输。
  • get_file_md5sum2():计算文件的MD5值,用于验证文件完整性。

安装使用步骤

  1. 硬件适配:由于本程序专为特定的MCU和Flash存储器设计,需要根据具体硬件平台对代码进行调整和适配。
  2. 生成升级文件:完成合并文件输出后,在jc_dg_keyboard_gd32mcu_freertos - 2023 - 505 - debug\output目录中找到gd32f103 - iap_jc_dg_keyboard_gd32.bin文件,用于出厂烧录到单片机;在jc_dg_keyboard_gd32mcu_freertos - 2023 - 505 - debug\temp目录中,jc_dg_keyboard_gd32.binjc_dg_keyboard_gd32.md5会同步生成,用于在rk3399中升级单片机程序。
  3. 进行升级:确保系统处于安全状态,防止升级过程中受到干扰或中断。建议在特定模式(如引导模式)下进行固件升级,且确保升级过程不被中断。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】