UART 升级
| 名称 | 数值 | 说明 | 
|---|---|---|
| SOH | 0x01 | Start of Heading | 
| STX | 0x02 | Start of Text | 
| ACK | 0x06 | Acknowledge | 
| DC1 | 0x11 | Device Control,定义为切换到主机发送状态 | 
| DC2 | 0x12 | Device Control,定义为切换到主机接收状态 | 
| NAK | 0x15 | Negative Acknowledge | 
| CAN | 0x18 | Cancel | 
| A | 0x41 | ASCII 字符 ‘A’,从机程序发出的连接信号 | 
| C | 0x43 | ASCII 字符 ‘C’,主机程序发出的连接信号 | 
- 
                    设置传输波特率 表 2. BROM 阶段使用的串口参数说明 波特率 数据位 校验位 停止位 流控制 115200 8 N 1 N 
- 
                    建立连接 在连接检测阶段,由从机程序主动发出就绪信号,主机程序检测并回应的方式建立连接。 从机程序运行起来首先发送字符 A,表示就绪,并等待主机程序回应 ACK。如果等待超时, 则重复发送字符 A,进入等待。该过程循环执行,直到收到主机程序的 ACK 回复。 主机程序就绪时接收到字符 A,则应发送 ACK 建立连接。  
 从机程序的连接处理流程:  图 1. 从机端建立连接的流程 主机程序的连接处理流程:  图 2. 主机端建立连接的流程 
- 
                    掉线检测。 在没有传输任务的情况下,主机程序应该每隔 0.5 秒发送一次 C 进行确认连接状态, 如果收到 ACK,表明连接有效,超时则表明连接已经断开。 从机程序通过命令通信的间隔时间进行掉线检测,即最后一次接收到有效的命令的时间到当前时间之间, 如果间隔超过 3 秒,则认为掉线,重新进入建立连接的状态,主动向外发出字符 A。  
 
- 
                    数据传输。 主机程序与从机程序完成连接阶段即进入数据传输阶段。 本协议的数据传输过程的一个特点是,数据传输是一个主机驱动的过程,从机总是被动响应。 即主机程序控制整个数据传输过程,从机程序是一个被动响应命令的程序。这也是为了保持与 USB 升级协议的行为一致。 这个特点与 YMODEM 协议相反。YMODEM 协议是一个从机驱动的协议,从机程序驱动数据的传输。 关键点: - 
                            无论是主机程序还是从机程序,只有处于数据传输阶段才可以传输数据 
- 
                            数据传输阶段,主机程序和从机程序都要区分两个状态:数据发送状态和数据接收状态 
- 
                            从机程序不会主动传输数据,传输数据的动作,总是被动触发 
 状态切换 为了描述方便,在数据传输阶段的状态统一分为两个状态进行描述: - 
                            主机发送状态 
- 
                            主机接收状态 
 默认情况下,系统处于主机发送状态 (从机程序的角度为数据接收状态)。 在该状态下主机程序仅向外发送数据帧,并且等待 ACK。从机程序等待读取数据帧, 读取校验正确之后,发送 ACK。 状态切换由主机程序执行。当主机程序需要接收数据时,通过发送 DC2(RECV) 给从机程序, 从机程序回复 ACK 之后,通信状态切换为主机接收状态,此时从机程序可以发送数据帧, 主机程序等待接收数据帧,并且在校验正确后发送 ACK。 当主机程序接收数据完毕,需要发送 DC1(SEND) 给从机程序,将状态切换到主机发送状态。 
- 
                            
- 
                    传输流程 一个典型的数据传输流程如下图。  
 
