Android 固件升级之 Xmodem

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 固件升级之 Xmodem相关的知识,希望对你有一定的参考价值。

参考技术A

  在串口通信中广泛使用的异步文件传输协议有Xmodem,Ymodem,Zmodem.本文只介绍 Xmodem,其他两种,未用过,没研究.Xmodem协议分为两种,一种是标准的 Xmode和Xmodem-1k 两个版本.
  Xmodem内容固定长度为 128 个字节,格式如下:

  Xmodem-1k内容固定长度为 1024个字节,格式如下:

控制符定义:

数据包序号:
  据包序号下标是从0x01开始向上递增的,累加到0XFF后将循环反复. (0~255)
数据包序号补码:
  数据包序号按位取反,即 ~数据包序号
校验和的方式有CRC校验和 CheckSum校验:
  使用不同的校验方式,占的字节数不一样哦~
  CRC校验:
    占 2 个字节,,CRC多项式公式为X16+X12+X5+1然后取低16位数据.(网上说的,我也不理解,没研究)

  CheckSum校验:
    占1 个字节,对传输的数据进行累加和,然后转成16 进制,用两个字节的来表示,取第 1 位.

1、当主板给 android 设备发送的C或者NAK后,android设备则知道主板已开启 Xmodem 协议传输,然后开始发送数据: SOH/STX+0x01+0xFE+Data[0-127]/Data[0-1024]+数据校验
2、主板接收到数据后,对数据进行校验,数据正确则回复ACK确认字节,android 设备接收到ACK确认后,就认为数据包被接收方正确接收了,接着发送下一包数据.
3、如果android设备NAK字节,则表示需要重新传输刚才的数据包;如果android 设备收到的CAN字节,则表示无条件停止传输。
4、传输完毕后,等待主板唤醒 android 设备,判断固件是否更新成功.(这部分跟主板开发进行协商吧~~)

随意写写,可自行进行封装~~~

使用:

以上是关于Android 固件升级之 Xmodem的主要内容,如果未能解决你的问题,请参考以下文章

HaaS100 OTA之固件验签功能介绍

CC2640之OAD固件升级(外置Flash)

CC2640之OAD固件升级(外置Flash)

怎么固件升级

Android 系统锁屏实现固件升级动画

请问怎么升级固件~谢谢~