esp8266~启动模式和烧写错误

error magic! backup boot failed

在使用8266时遇到了如下错误:
烧写错误
找个一早上在群里面发问,原来是烧写工具配置时出错了,flashsize莫名的选错了!
2Mb = 16Mbit。

boot

8266启动日志分析,程序上电之后运行的大概流程:

  1. boot模式选择
  2. 加载ram rom,校验flash是否完成
  3. boot跳转到用户区,运行程序
  4. rf初始化、扇区选择,下面是正常的user_init里面的程序

ESP8266有三种BOOT模式,由MTDO(GPIO15),GPIO0,GPIO2共同决定。boot mode:(3,7)中的3代表从flash启动,1则代表通过串口烧写代码。具体的boot过程,参考Github

MTDO GPIO0 GPIO2 Mode Description
L L H UART Download code from UART
L H H Flash Boot from SPI Flash
H x x SDIO Boot from SD-card

怎么控制8266运行user1还是user2?

平时使用download烧写程序时,擦除flash,下载user1、user2后,程序默认是从user1启动的,如果擦除之后只下载user2,8266会boot失败之后reboot,看门狗复位跳转到@81000运行user2程序并会更新系统参数从user2启动(注意:当不擦除flash情况下,再次把use1程序也下载之后也同样会从user2启动,因为系统参数已更新)。在进行FOTA远程升级时,也是会更新这个系统参数,FOTA具体参考ESP8266 RTOS SDK实现OTA 和 安信可SDK入门指南
那么我们要控制从user1启动还是user2,需要找到修改系统参数的接口,具体可以参考OTA的实现原理。大家也可以自己去实现OTA,目前我只会按照它提供的方案实现功能。
如下:
跳转到user2
补充:esp8266模组最好外部供电,串口只接RX、TX、GND。总是用TTL下载器,在开发时总会遇到程序烧进去了,但一复位启动,芯片不能正常运行。我遇到boot成功后跳转到user时停止的情况!


参考:
ESP8266 Boot 详解
ESP8266 烧写问题 SPI的不同模式

猜你喜欢

转载自blog.csdn.net/Bluechalk/article/details/81348432