# F407_bootloader-master **Repository Path**: dobbyzzp/F407_bootloader-master ## Basic Information - **Project Name**: F407_bootloader-master - **Description**: bootloader - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-02-06 - **Last Updated**: 2025-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 固定翼机巢2.0升级协议汇总: ## 版本:2022.01.17 ## BootLoader升级协议说明: 分为机巢主控升级、机械臂板升级和AGV升级,升级采用有线升级形式。 升级机巢主控最为简单快捷,升级机械臂板和AGV板需要机巢主控通过CAN将数据转发至对应待升级板子。 ## 升级步骤: ### 1、发送Boot命令: **说明:** 在 App 阶段发送 **0XC8 0XD8 0XE8 ID** 命令,MCU 从 app 跳转进入 bootloader 模式。 ID:1 代表机巢主控,2 代表机械臂板,3 代表AGV板。 ###   1.1、上位机 → 主控 - **上位机软件请求:** 0XC8 0XD8 0XE8 ID(1,2,3) - **机巢主控响应:** \r\nBOOT\r\n ###   1.2、主控 → 设备 - **机巢主控请求:** 0XC8 0XD8 0XE8 ID(1,2,3) - **机巢设备响应:** GetBOOT ### 2、发送Trace命令: **说明:** 在 Bootloader 阶段发送 **Trace** 命令,MCU 进入升级等待模式。 ###   2.1、上位机 → 主控 - **上位机软件请求:** AT+TRACEX\r\n >注意:X为M代表机巢主控,R代表机械臂,G代表AGV - **机巢主控响应:** \r\nOK\r\n ###   2.2、主控 → 设备 - **机巢主控请求:** TRACEX - **机巢设备响应:** CanOK ### 3、发送Bin连续接受开始触发命令: **说明:** 触发本包之前需要先触发Trace命令,输入该命令包触发对应的Bin包连续接受形式,整包校验码为通过CRC-8/MAXIM形式进行整体传输Bin校验后得出的uint8返回数据的**字符串形式(如:假设计算出来的值是0x81,那么该位置的字符串为81,以此类推)**,传输的包数为实际传输的包数int的**字符串形式(如:假设计算出来的值是1345,那么该位置的字符串为1345,以此类推)**。接收机需要在Main程序中才可以执行该命令。 CRC详细请参考:http://www.ip33.com/crc.html ###   3.1、上位机 → 主控 - **上位机请求:** AT+BINX=<整包校验码>,<传输的包数> >注意:X为M代表机巢主控,R代表机械臂,G代表AGV - **机巢主控响应:** \r\nOK2\r\n ###   3.2、主控 → 设备 - **机巢主控请求:** BINX<整包校验码><传输的包数> >注意:检验码为 1 字节;传输的包数为 2 字节,前字节为低八位,后字节为高八位 - **机巢设备响应:** CANOK2 ### 4、连续发送Bin包并进行校验 **说明:** 在成功进入Bin包连续发送阶段后可以触发本阶段命令。此包需要将所提供的Bin包分成以每1024个二进制位一包的若干包裹进行不定长发送,每发送一帧Bin文件包都会获得一个回调,升级端可以通过此回调来判定发送是否正常。升级bin包发送间隔必须大于100ms/package。CRC使用CRC-8/MAXIM。接收机需要在Main程序中才可以执行该命令。 CRC详细请参考:http://www.ip33.com/crc.html ###   4.1、上位机 → 主控 - **上位机请求:** 详情请看下表说明 - **机巢主控响应:** \r\nCRCOK\r\n 帧|占用位|说明 -|-|- SOF|3|**固定值:0xAB 0xBC 0XDD**此值作为固定帧头值的校验,此值需要正确通过才可以进行校验处理。 index|2|包序号,小端(低前高后),代表本次发送的是第几个数据包。 Length|2|小端(低前高后),代表本次Bin切分包长度(BinSource长度) BinSource|1~1024|Bin切分包,按照实际情况切分即可(若不是到文件末尾,那么包长需要均为1024个Byte) JumpFlag|1|跳转启动符号,在发送Bin包的最后一包的时候,App端需要将此位设置为0xFF,其余情况为0x00第55位(BinSource满的情况下) CRC Check|1|CRC-8/MAXIM,(第56位BinSource满的情况下) EOF|1|0x0E ###   4.2、主控 → 设备 - **机巢主控请求:** > 注意:按 8 个字节一包来发送数据;(Master 报文为 **0x208**,ARM 报文为 **0x209**,AGV 报文为 **0x20A**) 数据包|说明 -|- START|发送该字符串提醒设备准备接受数据包 BinSource|与上表相同,切分 1024 个字节 END|发送该字符串提醒设备接收数据包完毕 - **机巢设备响应:** C/CRCOK