### bootloader启动 1. 复位RESET引脚约18ms 2. pc循环发送0x18 0xFF共10组 3. mcu应答0x11共9组 4. 检查mcu状态 > 01 FC 0B 00 00 02 00 00 00 0A < 01 02 EE FF ED (加密) < 01 02 FF FF FE (未加密) 5. 加密则执行解密动作(擦除FLASH上内容) > B5 34 84 52 BF < 01 6. 准备下载ramcode > 00 00 00 00 20 A4 07 00 00 CB < 01 7. 开始下载ramcode > B8 0A ... 9F < 01 8. 启动ramcode > C0 00 00 00 00 00 00 00 00 C0 < happybaby 00 00 ### ramcode启动 启动后mcu端发送字符串 *happybaby* > 68 61 70 70 79 62 61 62 79 00 00 0. 修改通信用波特率 - 修改成9600bps (00 00 80 25) > 49 01 00 00 00 00 04 00 80 25 00 00 F3 - 修改成115200bps (00 01 C2 00) > 49 01 00 00 00 00 04 00 00 C2 01 00 11 - 应答 < 49 00 00 00 00 00 00 00 49 1. 请求0x20字节数据 (指定波特率) > 49 05 00 00 00 00 20 00 6E < 49 00 00 00 00 00 20 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF EF 38 2. 校验错误 > 49 05 00 00 00 00 20 00 5E < 49 01 00 00 00 00 00 00 4A 3. 请求0x10字节数据 > 49 05 00 00 00 00 10 00 5E < 49 00 00 00 00 00 10 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FE 48 4. 请求0x0200字节数据 > 49 05 00 00 00 00 00 02 50 > 49 05 00 02 00 00 00 02 52 > ... > 49 05 00 3C 00 00 00 02 8C > 49 05 00 3E 00 00 00 02 8E 5. 空白检测 > 49 07 00 00 00 00 04 00 00 40 00 00 94 < 49 00 00 00 00 00 01 00 01 4B > 49 07 00 00 00 00 04 00 00 02 00 00 56 < 49 00 0F 00 00 00 01 00 00 59 6. 整片擦除 > 49 02 00 00 00 00 00 00 4B 7. 页擦除(1sector=512Bytes) > 49 03 00 00 00 00 00 00 4C < 49 00 00 00 00 00 00 00 49 > 49 03 00 02 00 00 00 00 4E < 49 00 00 02 00 00 00 00 4B > ... > 49 03 00 3E 00 00 00 00 8A > 49 00 00 3E 00 00 00 00 87 8. 编程 > 49 04 00 00 00 00 20 00 CHK < 49 00 00 00 00 00 00 00 49 9. 校验,所有数据的累加和取最后两个字节 > 49 06 00 00 00 00 04 00 20 00 00 00 73 < 49 00 00 00 00 00 02 00 CF 1F 39 > 49 06 00 00 00 00 04 00 00 40 00 00 93 < 49 00 00 00 00 00 02 00 00 C0 0B #### 读取FLASH数据 > 49 05 A0 A1 A2 A3 L0 L1 CHK < 49 00 A0 A1 A2 A3 L0 L1 CHK * 49 05: 协议头 * A3..0: 起始地址 * L1..0: 字节长度 * data: FLASH数据 #### 按页擦除FLASH数据 > 49 03 A0 A1 A2 A3 00 00 CHK < 49 00 A0 A1 A2 A3 00 00 CHK * 49 03: 协议头 * A3..0: 起始地址 #### 整片擦除FLASH数据,耗时约40ms > 49 02 00 00 00 00 00 00 4B < 49 00 00 00 00 00 00 00 49 * 49 02: 协议头 #### 空白检测 > 49 07 00 00 00 00 04 00 A0 A1 A2 A3 CHK < 49 C1 C0 00 00 00 01 00 00 CHK * 49 07: 协议头 * C1..0: 检测值 * A3..0: 字节长度 #### 校验 > 49 06 00 00 00 00 04 00 L0 L1 L2 L3 CHK < 49 00 00 00 00 00 02 00 S1 S0 CHK * 49 06: 协议头 * S1..0: 校验和 * L3..0: 字节长度 #### 编程 > 49 04 A0 A1 A2 A3 L0 L1 CHK < 49 00 A0 A1 A2 A3 00 00 CHK * 49 04: 协议头 * A3..0: 起始地址 * L1..0: 字节长度,最大支持0x40字节 #### 加密 > 49 09 00 00 00 00 00 00 52 < 49 00 00 00 00 00 00 00 49