# BootloaderExample **Repository Path**: smartfanfan/BootloaderExample ## Basic Information - **Project Name**: BootloaderExample - **Description**: 关于STM32的BootLoader升级样例程序 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-01-10 - **Last Updated**: 2023-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BootloaderExample 关于STM32的BootLoader升级样例程序,使用芯片F103 1. 烧写本BootLoader程序,使用串口2进行通信 2. 编写App应用程序,修改段地址,main函数启动打开中断 3. HexFileUpdateTils适用与本通信流程,可直接对指定IP端口发送HEX文件 ## 移植说明 1. 编写UPDATEOP,FLASH操作.注:buf大小与擦写大小一致 2. 使用BootOp_Init对BootFrame进行初始化 3. 编写PROHANDLE,通信协议,本demo中使用HEX文件的行通信协议.注:接收buf大小要保证有足够写入时间 4. 使用ProtocolDataInit对ProtocolData进行初始化. 5. 接收数据使用ProtocolRecvBytes,符合协议的数据会通过callback进行回调 6. 使用BootRecvData(接收HEX字符串)或BootRecvByte(接收HEX字节)接收数据.注:每次满写入buf或换段时,会自动调用flash写入 7. 通过BootLoader跳转固定地址或者通过Flash保存App入口地址,动态跳转 ## App编写说明 1. 打开中断 2. 项目代码段偏移 3. 中断向量偏移 ## 通过通信对嵌入式App进行升级 1. 串口无差错接收,高效率 2. 直接发送HEX文件对App进行升级 ## 升级方式 1. Boot程序启动后发送指定数据包(A包),等待 2. Boot程序收到应答(A包,同上),进入烧写模式 3. Boot程序接收Hex流文件,成功后自动跳转App ## 补充说明 1. 根据网络上所说,STM32FLASH实际可使用大小为手册上两倍 2. 程序只能使用原有大小,但FLASH操作可使用所有FLASH(2倍) 3. 实际测试可用 4. 经过查看官网论坛得到,剩余FLASH不被ST公司检测,不保证能用