arduino的esp8266开发板, 经常会出异常零错误,这个错误是非法指令错, 非法指令错, 一般是程序跑飞了,去错误的地点执行指令,
我这里遇到的不是这样,以前编译运行很好的程序, 现在怎么编译都会出异常0错误, 更换了esp8266 的SDK版本, 从2.4.2, 2.5.2, 2.7.3, 3.0.2 , 都出现异常,最后仔细研究了一下异常信息, 才找到原因,问题出在编译器。
[code]
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Exception (0):
epc1=0x40203959 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
[/code]
用objdump 反编译一下,elf目标文件, 会发现目标文件中, epc1=0x40203959 这个地址, 确实是个非法指令,那么,问题就出在 gcc编译器了, 看了一下编译窗口, 发现 gcc使用了Os优化参数, 优化了目标文件的体积, 尝试改成O0 不做优化,体积大了不少, 但是不发生异常了。 具体需要修改的文件就是 ~/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/platform.txt , 需要修改3处
评论
现在来看, 异常0的发生, 跟供电电源的稳定性,关系很大。减少电源波纹,提高电源输出能力
现在来看, 异常0的发生, 跟供电电源的稳定性,关系很大。减少电源波纹,提高电源输出能力,会有改善