3.0 KiB
bootloader启动
- 复位RESET引脚约18ms
- pc循环发送0x18 0xFF共10组
- mcu应答0x11共9组
- 检查mcu状态
01 FC 0B 00 00 02 00 00 00 0A < 01 02 EE FF ED (加密) < 01 02 FF FF FE (未加密)
- 加密则执行解密动作(擦除FLASH上内容)
B5 34 84 52 BF < 01
- 准备下载ramcode
00 00 00 00 20 A4 07 00 00 CB < 01
- 开始下载ramcode
B8 0A ... 9F < 01
- 启动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
- 修改通信用波特率
- 修改成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
- 请求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
- 校验错误
49 05 00 00 00 00 20 00 5E < 49 01 00 00 00 00 00 00 4A
- 请求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
- 请求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
- 空白检测
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
- 整片擦除
49 02 00 00 00 00 00 00 4B
- 页擦除(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
- 编程
49 04 00 00 00 00 20 00 CHK < 49 00 00 00 00 00 00 00 49
- 校验,所有数据的累加和取最后两个字节
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