esp8266~启动模式和烧写错误

1. error magic! backup boot failed

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

2. 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

MTDOGPIO0GPIO2ModeDescription
LLHUARTDownload code from UART
LHHFlashBoot from SPI Flash
HxxSDIOBoot from SD-card

3. waiting for host

和硬件工程师联调项目,esp8266启动之后打印:

ets Jan 8 2013,rst cause:2, boot mode:(7,7)
waiting for host

wifi模块没启动起来正常工作,百度查询了下,就是因为IO 15被拉高了,正常工作时需要将 ESP8266 的 boot模式切换到 flash boot,即 GPIO15→0, GPIO0→1, GPIO2→1。
更详细的,可以参考百度贴吧。还有就是8266一定要单独供电或者外接电源,不要使用usb下载器供电,我之前测量gpio
的波形时也发现,usb供电的波形居然是不规则的锯齿形状。

4. 怎么控制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时停止的情况!


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

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会画板子的物联网工程师

如果文章还不错,欢迎点赞收藏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值