zoukankan      html  css  js  c++  java
  • 配置ESP8266 NONOS SDK时由于工具链版本差异引发的故障

      前几天部署ESP8266_NONOS_SDK时遇到了一个看似奇怪的问题,描述如下:

      examples例程可以通过编译,但烧写到ESP8266模块后,程序无法正常运行,编译和烧写的相关配置均无误。在boot模式下编译,串口输出jump to run user1后,触发Fatal Exception (29)。进一步测试其它例程,运行结果完全相同。串口输出日志如下:

     ets Jan  8 2013,rst cause:2, boot mode:(3,7)
    load 0x40100000, len 2408, room 16 
    tail 8
    chksum 0xe5
    load 0x3ffe8000, len 776, room 0 
    tail 8
    chksum 0x84
    load 0x3ffe8310, len 632, room 0 
    tail 8
    chksum 0xd8
    csum 0xd8
    2nd boot version : 1.6
      SPI Speed      : 40MHz
      SPI Mode       : QIO
      SPI Flash Size & Map: 4Mbit(1024KB+1024KB)
    no GPIO select!
    jump to run user1 @ 1000
    
    
    Fatal Exception (29)
    
    epc1=0x4000df64, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
    
    Fatal Exception (29)
    
    epc1=0x4000df64, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
    
    Fatal Exception (29)
    
    epc1=0x4000df64, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000

      在这里开一文记录解决该问题的思路,以供遇到相似问题的朋友参考,避免入坑。

      鉴于例程本身的可靠性可以保证,只剩下SDK或者工具链的问题。考虑到espressif并没有完全开源其技术细节,在SDK中仍留有闭源的archive静态链接库文件(参见lib目录),而这些静态库可能链接同时依赖于工具链中的库(例如libc、libhal等),而若当前使用的工具链版本SDK官方使用的工具链版本不同时,可能会出现兼容性问题。

      通过仔细阅读NONOS_SDK的文档,发现官方原始使用的工具链gcc版本信息如下(SDK v3.0):

    xtensa-lx106-elf-gcc (crosstool-NG 1.20.0) 4.8.2

      而当前我所使用的交叉编译工具链中gcc版本信息为:

    xtensa-lx106-elf-gcc.exe (crosstool-NG crosstool-ng-1.22.0-92-g8facf4c0) 5.2.0

      于是尝试将当前交叉编译工具链回退版本到4.8.2,重新编译后,故障消除。

    备注: NONOS_SDK v3.0可以在espressif release页面上找到:https://github.com/espressif/ESP8266_NONOS_SDK/releases。

  • 相关阅读:
    QT 信号槽 异步事件驱动 单线程 多并发
    Qt 静态库与共享库(动态库)共享配置的一个小办法
    关于:有符号与无符号整数的大小比较
    QT信号槽 中的对象野指针
    Qt程序打包发布
    Qt程序打包发布
    SQL Server 2012 sa 用户登录 18456 错误 (转)
    QtCreator常用之快捷键
    opengl中相关的计算机图形变换矩阵之:模型视图几何变换
    opengl中相关的计算机图形变换矩阵之:齐次坐标 (摘编)
  • 原文地址:https://www.cnblogs.com/cassuto/p/10427643.html
Copyright © 2011-2022 走看看