完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
OTA升级完成后,跳转到新的固件时启动失败,但是烧录进新的固件却可以正常启动。
重启代码如下: wifi_save_bin_info(); debug_printf("wifi update verify block success!!Rebooting......rn"); system_upgrade_flag_set(UPGRADE_FLAG_FINISH); system_upgrade_reboot(); while (1); 打印出的log如下: wifi update verify block success!!Rebooting...... reboot to use2 Fatal exception (28): epc1=0x401000e3 epc2=0x00000000 epc3=0x40100b07 epcvaddr=0x00006d70 depc=0x00000000 rtn_add=0x401002b9 检查.s文件查到该地址为: 401000e0 : 401000e0: fffe41 l32r a4, 401000d8 <_DoubleExceptionVector+0x68> 401000e3: 0438 l32i.n a3, a4, 0 401000e5: 07b327 bgeu a3, a2, 401000f0 401000e8: 438c beqz.n a3, 401000f0 401000ea: 034d mov.n a4, a3 401000ec: fffcc6 j 401000e3 401000ef: 023900 excw 401000f2: fffa31 l32r a3, 401000dc <_DoubleExceptionVector+0x6c> 401000f5: 0429 s32i.n a2, a4, 0 401000f7: 1248 l32i.n a4, a2, 4 401000f9: 0328 l32i.n a2, a3, 0 401000fb: 242a add.n a2, a4, a2 401000fd: 0329 s32i.n a2, a3, 0 401000ff: f00d ret.n 40100101: 000000 ill 但是发现该问题发生的现象为:从一个有debug_log输出的固件升级到一个没有debug_log输出的固件时100%会发生,从没有debug_log升级到有debug_log输出固件偶尔会发生,从没有debug_log升级到没有debug_log输出的固件偶尔会发生。 debug_log的定义: #ifndef os_printf /* NOTE: don't use printf_opt in irq handler, for test */ #define os_printf(fmt, ...) do { static const char flash_str[] ICACHE_RODATA_ATTR STORE_ATTR = fmt; printf(flash_str, ##__VA_ARGS__); } while(0) #endif #ifdef OS_PRINTF_ENABLED #define debug_printf os_printf #else #define debug_printf #endif 所有的重启失败均发生在新固件启动的初始位置,我在初始位置做了debug_log打印,但是没有任何输出。 |
|
相关推荐
1个回答
|
|
根据您提供的信息,OTA升级完成后,跳转到新的固件时启动失败,但烧录进新的固件却可以正常启动。这可能是由于以下原因导致的:
1. **启动配置问题**:可能是新的固件在启动时配置不正确,导致无法正常启动。检查启动配置文件,确保新的固件使用的是正确的配置。 2. **固件不完整或损坏**:在OTA升级过程中,可能由于网络问题或其他原因导致固件文件不完整或损坏。请尝试重新进行OTA升级,确保固件文件完整无损。 3. **内存问题**:从您提供的log信息来看,出现了"Fatal exception (28)",这可能是由于内存访问错误导致的。检查新固件的内存使用情况,确保没有越界访问或其他内存问题。 4. **硬件问题**:如果烧录进新的固件可以正常启动,但OTA升级后无法启动,可能是硬件问题。检查硬件连接和配置,确保硬件没有问题。 5. **系统升级标志未正确设置**:从您的代码来看,您在升级完成后设置了`system_upgrade_flag_set(UPGRADE_FLAG_FINISH)`。请确保这个标志在新固件中被正确识别和处理。 6. **固件兼容性问题**:新的固件可能与当前硬件或系统不兼容。检查新固件的版本和硬件/系统要求,确保它们兼容。 为了解决这个问题,您可以尝试以下步骤: 1. 重新进行OTA升级,确保固件文件完整无损。 2. 检查启动配置文件,确保新的固件使用的是正确的配置。 3. 检查新固件的内存使用情况,确保没有越界访问或其他内存问题。 4. 检查硬件连接和配置,确保硬件没有问题。 5. 检查系统升级标志是否在新固件中被正确识别和处理。 6. 确保新固件与当前硬件和系统兼容。 希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。 |
|
|
|
只有小组成员才能发言,加入小组>>
172个成员聚集在这个小组
加入小组432 浏览 1 评论
1300 浏览 1 评论
599浏览 6评论
498浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
481浏览 5评论
480浏览 4评论
464浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 09:09 , Processed in 0.840171 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号