本文档详细介绍了U-Boot串口升级协议v1.0.01,该协议主要用于通过串口进行U-Boot固件的更新过程。主要讨论了以下几个关键部分:
1. **主流程图与U-Boot升级流程图**:
文档首先提供了U-Boot升级的整体流程图,展示了从上位机发送升级请求到设备接收并验证、执行、最终确认升级完成的步骤。这包括数据传输、校验和错误处理的关键环节。
2. **数据包格式**:
数据包采用小端格式(little-endian),由多个字段组成,如版本号(v1.0.0)、操作指令(cmd)、参数(param)、命令长度(cmd_len)、校验和(crc16)以及同步数据(syncdata0, syncdata1),其中syncdata0固定为0xAA,syncdata1固定为0x55。CRC16采用CRC-CCITT(XModem)标准进行校验。
3. **回复状态**:
协议规定了四种回复状态:命令执行成功的JL_SU_CMD_SUSS(0x0)、CRC错误的JL_SU_CMD_CRC_ERROR(0x1)、SDK ID错误的JL_SU_CMD_SDK_ID_ERROR(0x2)和其他错误的JL_SU_CMD_OTHER_ERROR(0x3)。每个状态都有对应的定义值,用于表示设备在处理命令后返回的状态信息。
4. **操作指令与参数**:
提供了具体的操作指令,例如 JL_SU_CMD_DEVICE_INIT,这是一个上位机向设备发送的初始化命令,用于获取设备相关区域(如app_dir_head或uboot_zone)的信息,参数包括区域名字、模式、地址、长度、偏移长度和对齐长度。设备收到指令后会返回相应的确认信息。
5. **数据方向**:
指令和响应数据的传输方向明确,上位机(通常为PC或其他控制设备)发送指令给设备,而设备则回传状态和可能的参数。
U-Boot串口升级协议v1.0.01是一个结构化的通信协议,确保了在串口环境下U-Boot固件升级的安全性和可靠性。通过遵循其规定的流程和数据格式,开发者能够有效地管理和升级嵌入式系统的U-Boot环境。