mmuyu 发表于 2023-9-16 22:08:40

定位 esp8266 程序错误位置

    在ESP8266遇到程序异常的时候,我们可以通过esp输出的调试信息来定位程序具体的错误位置,方便我们排查问题所在。

这里以一个程序不断重启的异常问题,esp在上电到bootloader的时候,默认uart0是以74800的波特率工作的,因此在无法启动用户程序的时候,我们可以连接uart0,使用74800的波特率来查看错误原因。



这里,可以看见重启原因cause为2,首先我们可以通过espressif的文档初步判断问题原因
https://www.espressif.com.cn/zh-hans/support/documents/technical-documents?keys=Fatal+exception+%280%29
cause 2对应文档里的外部复位,或者deepsleep唤醒

这只能用于大致判断问题原因,无法定位问题所在,我们还需要更具体的原因,机智云生成的固件已经包含espressif的错误调试sdk,因此在程序异常的时候会输出异常程序的错误地址,通过epcl的偏移地址,我们使用winhex打开我们编译得到的.s文件,使用string模式搜索到对应的程序地址


我们在地址的附近看看有和特征点与代码匹配,在此示例里,可以看见有一个函数,与代码匹配,是用于控制74hc595的。



此时我们已经找到了问题所在,对函数内进行错误排查即可。

页: [1]
查看完整版本: 定位 esp8266 程序错误位置