【嵌入式开发】Linux上位机通过esptool烧写ESP8266

版权声明:自由转载-非商用-非衍生-保持署名 https://blog.csdn.net/mgsweet/article/details/79893401

前言

本教程针对非官方开发板、无状态转换按钮、须通过gpio口控制esp8266进入下载状态并实现esp8266固件更新的嵌入式linux设备。虽然esp8266有在线更新的功能,但由于开发需求不得不研究相关知识,而网上资料甚少,特此补充。

准备

  1. 上位机安装好python, pip, 以及esptool,esptool下载地址:https://github.com/espressif/esptool,安装方法极其简单,在pip的支持下,在上位机命令行输入pip install esptool即完成安装。当然后面我又实现了离线安装以上软件的脚本,具体方法须自行百度,这里不作阐述。
  2. esp8266接线,IO2-EN-VCC均设为高电平,IO15低电平,RST-IO0要连到上位机可控制的gpio口上(需要切换高低电平),TXD、RXD、GND要正确连接到上位机对应的接口
  3. 固件准备,请到官网下载对应的固件,或编译出自己的固件。

烧写流程

  1. 首先要确定烧写地址,这个需要根据esp8266的flash大小做决定,如果不清楚自己的模块是什么型号,可以通过输入指令esptool.py --port /dev/ttyUSB0 flash_id查看,其中--port /dev/ttyUSB0需要改为上位机中连接esp8266的路径,
  2. 确认了flash烧写格式就可以开始烧写了,首先将io0置为低电平(下载模式),然后将rst置为低电平(低电平有效),1秒后再置为高电平(模式切换后需要重置才有效),然后输入类似write_flash --port /dev/ttyUSB0 0x00000 boot.bin 0x01000 use1.bin这样的命令去烧写,当然实际命令会比较长,按照write_flash --port 设备路径 地址1 bin1 地址2 bin2 ...这样去编写命令
  3. 当然你也可以擦除flash,命令类似esptool.py --port 设备路径 erase_flash
  4. 烧写结束后将io0置为高电平(运行模式),然后将rst置为低电平(低电平有效),1秒后再置为高电平(模式切换后需要重置才有效),然后就可以愉快地跑新的固件了。

补充

  1. 访问gpio口的方法是通过修改/sys/class/gpio实现的,例如要访问gpio30高电平并设为,首先输入echo 30 > export,然后echo out > gpio30/direction设置模式,然后通过echo 1 > gpio30/value就可以设置为高电平了。

猜你喜欢

转载自blog.csdn.net/mgsweet/article/details/79893401