# lite_loader **Repository Path**: jeremyceng/lite_loader ## Basic Information - **Project Name**: lite_loader - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-15 - **Last Updated**: 2026-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Lite Loader 嵌入式系统引导加载程序与 OTA 升级解决方案 ## 项目简介 Lite Loader 是一款专为嵌入式系统设计的轻量级引导加载程序(Bootloader),支持安全固件升级和双备份机制。该项目为 STM32L552 等微控制器提供完整的 OTA(Over-The-Air)升级能力,采用 YMODEM 协议进行无线/有线固件传输,并利用 MD5 校验确保固件完整性。 ## 功能特性 - **安全固件升级**:双区域备份机制,确保升级失败时可回滚至原固件 - **YMODEM 协议支持**:支持通过串口等介质进行固件传输 - **MD5 完整性校验**:验证固件数据完整性,防止损坏的固件被加载 - **启动成功标记**:记录启动状态,支持异常复位后的自动恢复 - **Flash 区域管理**:灵活的 App 区与备份区管理,支持扇区拷贝和交换 - **平台可移植性**:提供统一的硬件抽象接口,便于适配不同 MCU ## 模块结构 | 模块 | 描述 | |------|------| | `lite_loader.c` | 主引导加载程序核心逻辑 | | `ll_boot.c` | 启动标志管理与应用跳转 | | `ll_area.c` | Flash 区域管理(擦除、拷贝、交换) | | `ll_load.c` | 固件加载与校验 | | `ll_mark.c` | 启动标记管理 | | `ll_appinfo.c` | 应用信息存储(校验值、大小) | | `ll_port.c` / `ll_port_STM32L552.c` | 平台移植层 | | `ll_read_write_unit.c` | 底层 Flash 读写单元 | | `ll_update_handler.c` | 升级数据包处理 | | `update_ymodem_adapter.c` | YMODEM 升级适配器 | | `YMODEM/ymodem_callback.c` | YMODEM 协议回调 | ## 工作流程 1. **初始化**:系统上电后执行 `ll_init()`,检查是否需要升级 2. **升级检测**:判断当前状态(NEED_TO_UPDATE / NEED_TO_SWAP / JUMP_TO_APP) 3. **固件接收**:通过 YMODEM 协议接收新固件数据 4. **数据校验**:使用 MD5 验证接收数据的完整性 5. **固件写入**:将新固件写入备份区域 6. **区域交换**:完成写入后交换 App 区和备份区 7. **启动标记**:设置启动成功标记,记录正常启动 8. **跳转执行**:将控制权交给应用程序 ## 状态定义 ```c enum { NEED_TO_UPDATE = 0, // 需要升级 NEED_TO_SWAP, // 需要交换区域 JUMP_TO_APP, // 跳转到应用程序 INIT_ERROR // 初始化错误 }; ``` ## 硬件要求 - STM32L552 微控制器(或兼容的 STM32 系列) - 足够的 Flash 空间用于双区域存储 - 串口用于 YMODEM 固件传输 ## 使用说明 ### 配置 在 `lite_loader_config.h` 中配置相关参数,包括: - Flash 地址映射 - 缓冲区大小 - 校验信息长度 ### 集成 1. 将 lite_loader 相关源文件添加到工程 2. 实现平台相关的 Flash 操作接口 3. 在启动代码中调用 `lite_loader()` 函数 4. 配置应用程序的起始地址 ### 固件升级 1. 设备进入升级模式 2. 主机通过 YMODEM 协议发送新固件 3. 设备接收并校验固件 4. 自动完成固件烧录和区域切换 5. 重启并运行新固件 ## 文件说明 - `ll_*.c / ll_*.h` - 核心功能模块 - `lite_loader_config.h` - 配置文件 - `ll_port_STM32L552.c` - STM32L552 平台实现 - `sector_move.c` - 扇区移动算法测试 - `test_case.c` - 测试用例 ## 许可证 本项目仅供学习和研究使用。