乐鑫技术交流
直播中

李林

8年用户 1291经验值
私信 关注
[问答]

OTA升级后重启版本不切换问题怎么解决?

我用自己搭的http server作为ota升级服务器,可以看到版本正确的被下载和写到flash,最后crc校验也成功,信息如下:
upgrade data load finish.
img_crc = 293621782
flash_crc = 293621782

最后在升级的回调函数中调用 system_upgrade_reboot() 重新启动。启动后发现boot没有跳转到0x81000的user2.bin执行,还是从0x1000位置启动user1.bin版本,信息如下:
ets Jan  8 2013,rst cause:2, boot mode:(3,0)

load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79

2nd boot version : 1.5
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size & Map: 32Mbit(512KB+512KB)
jump to run user1 @ 1000

请问是哪儿缺少步骤了吗?
system_upgrade_start(server) 启动
成功后,system_upgrade_reboot() 重启



回帖(1)

丁冬芹

2024-7-12 18:00:23
OTA升级后重启版本不切换问题可能是由于以下原因导致的:

1. **升级过程中的CRC校验**:确保CRC校验是正确的,因为错误的CRC校验可能导致升级失败。

2. **升级回调函数**:确保在升级回调函数中调用`system_upgrade_reboot()`后,系统能够正常重启。

3. **启动配置**:检查启动配置是否正确。可能的原因是在升级过程中,启动配置没有被正确更新。需要确保在升级完成后,新的启动配置被写入到flash中。

4. **分区表问题**:检查分区表是否正确。如果分区表没有正确更新,系统可能无法找到新的固件并从正确的位置启动。

5. **固件问题**:检查固件本身是否存在问题。如果固件存在问题,可能导致升级后无法正常启动。

6. **硬件问题**:检查硬件是否存在问题。硬件故障可能导致升级过程中出现问题,从而导致升级失败。

解决步骤:

1. **检查CRC校验**:确保升级过程中的CRC校验是正确的。

2. **检查升级回调函数**:确保在升级回调函数中调用`system_upgrade_reboot()`后,系统能够正常重启。

3. **检查启动配置**:在升级过程中,确保启动配置被正确更新。可以在升级完成后,手动检查启动配置是否正确。

4. **检查分区表**:检查分区表是否正确。如果分区表有问题,需要修复或重新生成分区表。

5. **检查固件**:确保固件本身没有问题。可以尝试使用其他固件进行升级,看是否能够解决问题。

6. **检查硬件**:如果以上步骤都无法解决问题,可能需要检查硬件是否存在问题。可以尝试更换硬件或联系硬件供应商寻求帮助。

通过以上步骤,应该能够找到问题的原因并解决OTA升级后重启版本不切换的问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分