立即注册
查看: 954|回复: 1

[乐鑫原厂资料] 乐鑫科技ESP8266重启原因以及常见Fatal Exception原因

已绑定手机
发表于 2022-11-5 16:28:09 | 显示全部楼层 |阅读模式 来自 广东省深圳市
1. 重启原因
1.1.   ROM Code 判断重启原因
ESP8266 每次重启,ROM code 都会将此次重启原因的序号打印出来,如下图。用户可以根据该序号知道此次重启的原因。这种调试方式用千用户程序无法启动,但是需要分析此次重启原因时。

465151.jpg
ROM code 里面打印的重置原因如下表。

表 1-1. ROM Code 判断重启原因

Rst cause         原因
0
没有定义
1
电源重启
2
外部复位或 Deep-sleep 醒来
4
硬件 WDT 重启


1.2.   用户程序判断重启原因
用户也可以通过应用层添加程序判断此次重启的原因。这种方式判断比较全面。该方式用于发生崩溃的位置打印乱码,无法调试。
添加代码段如下:

  1. <div>struct rst_info *rtc_info = system_get_rst_info();
  2. </div><div>os_printf("reset reason: %x\n", rtc_info->reason);
  3. if (rtc_info->reason == REASON_WDT_RST ||
  4. rtc_info->reason == REASON_EXCEPTION_RST ||
  5. rtc_info->reason == REASON_SOFT_WDT_RST) {
  6. if (rtc_info->reason == REASON_EXCEPTION_RST) {
  7. os_printf("FATal exception (%d):\n", rtc_info-
  8. >exccause);
  9. }
  10. os_printf("epc1=0x%08x, epc2=0x%08x, epc3=0x%08x,
  11. excvaddr=0x%08x, depc=0x%08x\n",
  12. rtc_info->epc1, rtc_info->epc2, rtc_info-
  13. >epc3, rtc_info->excvaddr, rtc_info->depc);
  14. }</div>
复制代码
  system_get_rst_info()             SDK 的 API    《 ESP8266 Non-OS SDK API   》 《 ESP8266 RTOS SDK API   》(链接为 espressif.com/ zh-hans/support/download/documents)。
通过添加判断重启原因的代码 得到的重启原因如下表。
表 1-2. 用户程序判断重启原因
<
Rst cause 亏原因GPIO状态
0电源重启改变
1硬件看门狗复位改变
2Fatal Exception保持
3软件看门狗复位保持
4软件复位保持
5Deep-sleep改变
6硬件复位改变

2.        常见 Fatal Exception 及原因
当程序崩溃时 可以根据 Fatal exception 号协助调试。Fatal exception 号以及描述如下。

表 2-1. 常见 Fatal Exception 及原因
Fatal exception 号描述可能原因
0非法指令1.  BIN 文件被破坏
2.  函数指针野指针
6除数为 0除数为 0
9读/写操作地址非对齐1.  读/写 Cache 地址不对齐
2.  函数指针野指针
28/29访间非法地址1.  Cache 被关闭后访间 Cache
2.  函数指针野指针

比如:
  1. Fatal exception (28):
  2. epc1=0x4025bfa6, epc2=0x00000000, epc3=0x00000000, excvaddr=0x0000000f, depc=0x00000000
复制代码
•   如果使用的是 user1.1024.new.2.bin 那么就在 user1.1024.new.2.S 文件里查证exception 地址“0x4025bfa6” 然后在用户代码中添加打印进行调试。
•   如果使用的是 eagle.irom0text.bin 就在 eagle.S 中查找 exception 地址。
•   如果查找不到对应地址 说明程序崩溃问题是在中断中发生或者是 ROM 里面的代码问题 比如:
-    4000e190 <memset>
-    4000df48 <meMCPy>
-    4000dea8 <memcmp>
-    4000de84 <bzero>
-    4000e1e0 <strstr>


更多内容请查看附件
游客,如果您要查看本帖隐藏内容请回复




已绑定手机
发表于 2022-11-7 07:59:37 | 显示全部楼层 来自 江苏省徐州市
谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表