固件升级

Last Updated on : 2022-11-24 09:20:24download

本文针对串口协议对接固件 OTA 升级过程中的一些常见问题,梳理出对应的问题排查指引,帮助您解决一些日常问题。

我选的是0x01 512包大小,但是模组下发的包为510大小?类似这种数据下发不一致问题?

当模组下发的包长度与实际设置的长度不一致时,请先确认是否最后一包数据,数据大小不够设置的长度大小了;若是所有包均下发长度不一致请请提供对应设备ID,操作时间以及时区,串口交互日志记录,以工单的形式反馈给涂鸦。

OTA过程中, 发现拿到的数据内容错误的情况,有数据丢失?

排查方案:监听MCU和联网模组直接的串口交互数据,与MCU侧接收到的数据内容做比对,确认具体数据错误问题来源是联网模组传输时即传输错误还是MCU侧接收错误。

这类问题需要先做问题场景确认:

  1. OTA包不完整,每次传输的数据包都只能固定长度部分的数据?后面一半无法收到?

    这种场景建议先对MCU串口接收buf 大小做一下核对,确认串口接收buf的大小是否满足 0x0a命令字下(升级包启动功能命令)设置的每包传输大小,若不匹配,请合理调整串口交互包大小。

  2. OTA包长度完成,但有部分内容错误,错误内容有规律可循,比如传输包中每一包固定部分节点开始数据内容错。

    这种场景建议对数据包内容分析。结合一下,排查是否MCU的解析过程存在野指针之类操作?MCU的处理较慢,丢失了部分串口接收的数据?如若是这些场景可调整MCU侧的代码逻辑,或通过0x0a命令字设置更小的传输包大小。

  3. 若模组传输的数据包内容错误,请提供对应设备ID,操作时间以及时区,串口交互日志记录,以工单的形式反馈给涂鸦。

配置特定时间静默升级后,设备是否需要断电一次,去检测升级?

  • 情景描述:

    比如1.30设置了1:00-2:00时间段升级,设备不断电的话要等6小时后,也就是7:30才有升级提醒。但设置后断电,是能马上开始升级的?

  • 实例分析:

    特定时间静默升级:需要基线版本是40.00以上的设备才支持这个功能;固件机制是:上电后15秒去拉升级信息,之后间隔6小时去拉一次。如果固件上电后15s的升级检测在指定升级的时间段内,是可以马上开始升级的。