Ymodem 传输协议
Ymodem 负责可靠传输文件;UART 初始化、Flash 擦写和升级状态由对应库及 OTA 状态机负责。
协议要点
- 起始包携带文件名和长度,数据包使用 128 字节或 1K 负载。
- 接收端校验包序号和 CRC16,正确后回复
ACK,错误回复NAK,发送端以EOT结束。 - 接收流程为握手、文件头、数据包循环、结束确认;取消使用
CAN。
可复制实现
先按Ymodem 库配置完成 UART、Flash Wrapper 和 ymodem_config.h,再在 BootLoader 或 OTA Service 中调用:
#include "ymodem.h"
static uint32_t ymodem_buffer[256];
int32_t received_size = Ymodem_Receive((uint8_t *)ymodem_buffer);ymodem_buffer 至少为 PACKET_1K_SIZE 字节。模式 1 将 YMODEM_FLASH_START_ADDRESS 配置为 OTA_APP_ADDRESS;模式 2/3 配置为 OTA_AREA_A_ADDRESS,可写范围由 OTA 逻辑区大小限制。