完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
升级到NONOS SDK 3.0.0后,我发现,用 ICACHE_RAM_ATTR 指定的函数调用 inside timer 回调总是让系统崩溃。
崩溃如下所示: 致命异常 28 (LoadProhibitedCause): epc1=0x40106ce2、epc2=0x00000000、epc3=0x00000000、excvaddr=0x00000004、depc=0x00000000 ˙ ets Jan 8 2013,rst cause:2, boot mode:(1,7) ets Jan 8 2013,rst cause:4, boot mode:(1,7) WDT 复位 as from code, 0x40106ce2 is IRAM section(>=0x40100000). Any idea what goes wrong here? |
|
相关推荐
1个回答
|
|
在这种情况下,系统崩溃的原因可能有几个。以下是一些建议和可能的原因:
1. **内存分配问题**:使用 ICACHE_RAM_ATTR 将函数放在 IRAM 中可能会导致内存分配问题。请确保您的应用程序没有超过 IRAM 的限制。 2. **函数调用栈溢出**:在 timer 回调函数中,如果递归调用或函数调用深度过大,可能会导致栈溢出。请检查您的代码,确保没有过度的递归调用或过深的函数调用。 3. **中断处理问题**:在 timer 回调函数中,如果处理中断的方式不正确,可能会导致系统崩溃。请确保您的中断处理逻辑是正确的。 4. **编译器优化问题**:升级到 NONOS SDK 3.0.0 后,编译器优化可能发生变化。这可能导致一些代码在新版本中无法正常工作。您可以尝试关闭一些优化选项,看看是否能解决问题。 5. **硬件问题**:虽然不太可能,但硬件问题也可能导致系统崩溃。请检查您的硬件设备,确保它们工作正常。 6. **SDK 版本问题**:升级到 NONOS SDK 3.0.0 后,可能存在一些已知或未知的问题。您可以尝试查找相关的问题报告,看看是否有其他用户遇到了类似的问题。 为了解决这个问题,您可以尝试以下步骤: 1. **检查代码**:仔细检查您的代码,确保没有内存泄漏、栈溢出或其他潜在问题。 2. **简化代码**:尝试简化 timer 回调函数,只保留最基本的功能,然后逐步添加其他功能,以确定问题所在。 3. **使用调试工具**:使用调试工具(如 GDB)来跟踪问题,找出崩溃的确切位置。 4. **查看日志**:查看系统日志,了解崩溃前后的系统状态,以便更好地了解问题。 5. **尝试其他版本**:如果可能,尝试使用其他版本的 NONOS SDK,看看问题是否仍然存在。 |
|
|
|
只有小组成员才能发言,加入小组>>
429浏览 6评论
362浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
343浏览 5评论
349浏览 4评论
327浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 07:15 , Processed in 0.804353 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191