完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我注意到,当我在增强模式下重新启动以在 0x81000 时手动启动 user2 固件,然后运行 OTA 升级以升级 user1,它看起来像开始升级固件,但它几乎立即失败(WDT 重新启动),使 user1 和 user2 都无法使用。基本上,引导加载程序将在 user1 和 user2 之间无休止地跳跃(在这些分区上寻找一个幻数?
在我的 OTA 函数中,我用 system_get_userbin_addr() 替换了 system_upgrade_userbin_check() 以识别正确分区的正确文件,因为在增强模式下,第一个函数无法理解它从哪个分区运行,但我遇到了同样的问题。 const char* 文件; 开关 (system_get_userbin_addr()) { case 0x1000: file = "user2.bin"; break; case 0x81000: file = "user1.bin"; break; default: os_printf("[OTA]Invalid userbin number!n"); return; } ...然后获取文件并执行升级... 此外,我没有找到一种方法来退出增强模式以正常运行引导加载程序,即使在再次刷新固件和引导加载程序后也是如此,除了: system_upgrade_flag_set(upgrade_flag_finish); system_upgrade_reboot(); 有没有更好的方法来退出该模式? |
|
相关推荐
1个回答
|
|
OTA升级失败可能有几个原因。以下是一些可能的原因和解决方案:
1. **分区表损坏**:在增强模式下,引导加载程序会在user1和user2之间切换。如果分区表损坏或不一致,可能会导致OTA升级失败。请确保分区表正确配置并使用`make menuconfig`中的`Partition Table`选项进行验证。 2. **OTA升级逻辑问题**:您提到在OTA函数中使用了`system_get_userbin_addr()`代替`system_upgrade_userbin_check()`。这可能会导致升级逻辑出现问题。请确保正确识别要升级的分区,并在升级过程中正确处理。 3. **WDT(看门狗定时器)重启**:如果OTA升级过程中发生WDT重启,可能是因为升级过程中发生了错误或异常。请检查升级过程中的错误处理和异常处理逻辑,确保在发生错误时能够正确处理。 4. **固件大小问题**:如果升级后的固件大小超过了可用的闪存空间,可能会导致升级失败。请确保升级后的固件大小在可用闪存空间范围内。 5. **固件签名问题**:如果固件签名不正确或未签名,可能会导致升级失败。请确保固件签名正确,并在升级过程中正确处理签名验证。 6. **引导加载程序配置问题**:请检查引导加载程序的配置,确保其正确处理增强模式下的OTA升级。可能需要调整引导加载程序的配置以适应增强模式。 7. **固件兼容性问题**:请确保升级后的固件与当前硬件和软件环境兼容。如果存在兼容性问题,可能会导致升级失败。 为了进一步诊断问题,您可以尝试以下步骤: 1. **检查日志**:在OTA升级过程中,启用详细日志记录,以便在升级失败时查看详细的错误信息和调试信息。 2. **逐步调试**:使用调试工具逐步执行OTA升级过程,以便在升级失败时找到问题所在。 3. **测试不同的固件版本**:尝试使用不同的固件版本进行OTA升级,以确定问题是否与特定固件版本相关。 4. **检查硬件**:检查硬件连接和配置,确保硬件没有问题,例如闪存、WDT等。 通过以上步骤,您应该能够找到导致OTA升级失败的原因,并采取相应的解决措施。 |
|
|
|
只有小组成员才能发言,加入小组>>
1138 浏览 1 评论
576浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
461浏览 5评论
462浏览 4评论
435浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 10:52 , Processed in 0.845207 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号