收藏官网首页
查看: 3305|回复: 0

[经验分享] 定位 esp8266 程序错误位置

106

主题

107

帖子

7264

积分

论坛元老

Rank: 8Rank: 8

积分
7264
跳转到指定楼层
楼主
 楼主| 发表于 2023-9-16 22:08:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
    在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的。



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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表