ESP8266 更新韧体
对于ESP8266的韧体类型有所了解后,接下来就是要利用工具将韧体上传至ESP8266,首先必需先将更新韧体的电路完成后,就能使用工具将韧体上传至ESP8266。
更新韧体必需要将ESP8266切换至UART0启动
,之后利用命令去读、写ESP8266上的外置FLASH,因命令是公开的,所以有官方及开发者提供的更新工具,这里会大略说明一下常用的更新工具。
官方
ESP8266 DOWNLOAD TOOL
下载
官方网站下载:
下按完后后为ZIP
档案自行解压缩后进到flash_download_tools_v3.4.4'目录中执行
ESPFlashDownloadTool_v3.4.4.exe`:
选择ESP8266 DownloadTool
后会进入程式的画面:
进入画面后依照下面步骤检查:
选择依序选择档案并且输入写入的位址(Ex:boot.bin 0x0)
选择Serial埠,COMx,如果你执行程式之前已经连接好ESP8266,那程式会自动选择,如果没有就到装置管理员查看
设定BAUD 可依照你的状态选择,一般选择230400
勾选
SpiAutoSet
让程式自动补齐设定(SPI SPEED/MODE/SIZE)勾选
DoNotChgBin
不让程式改变韧体中针整Flash相关设定,如UI上的FLASH SIZE
,因为你已经选择SpiAutoSet
按下
START
进行上传
上传之间会有一个Console视窗显示进度:
完成后会看到下图中的Console视窗已经显示到100%
并且有出现提示Wrote 41943xxxxxxx....
:
基本上SpiAutoSet
勾选后,设定值程式会自动侦测,除非你有特定需求,如:32Mbit flash,但要烧录的韧体是给8Mbit的Flash,那就要手动选择(SPI SPEED/MODE/SIZE),并且将DoNotChgBin
、SpiAutoSet
勾选取消再进行更新即完成,另外烧录细节也可以参考安信可官方提供的:如何为 ESP 系列模组烧录固件
esptool.py
[esptool](esptool原先由Fredrik Ahlberg利用Python所开发的工具,它具有跨平台的特性,只要有安装Python 及 pySerial函数库都能运作的很正常,丹尼已在Windows、Linux、macOS都使用过,Windows使用必需要注意先安装python for windows版本,因普遍率及功能性,目前已经纳入乐鑫官方专案,esptool新版1.3已支援python 2.7与python 3。。
esptool.py v1.3 - ESP8266 ROM Bootloader Utility positional arguments: {load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash,verify_flash,erase_flash,version} Run esptool {command} -h for additional help load_ram 将映像档载入RAM中并行执行 dump_mem 转存记忆体资料至档案(转存ESP资料) read_mem 读取记忆体指定位址并存至档案 write_mem 读取档案内容并写入至记忆体指定位址 write_flash 将档案内容写入至SPI Flash run 执行Flash里的应用程式码 image_info 转存可执行应用映像档的标头 make_image 从二进位档建立可执行的应用 elf2image 从ELF档建立可执行的应用 read_mac 从OTP ROM读取MAC位址 chip_id 从OTP ROM读取晶片资讯 flash_id 读取Flash出厂资讯(可透过此ID得知容量大小) read_flash 取读SPI Flash内容 verify_flash 验证bin与Flash erase_flash 抹除SPI Flash version 列印出esptool版本 optional arguments: -h, --help show this help message and exit --port PORT, -p PORT Serial埠名称(Linux ttyxxx,macOS cu.xxx,Windows COMx) --baud BAUD, -b BAUD Serial埠速度
韧体上传命令示范:
./esptool.py -p /dev/ttyUSB0 write_flash 0x00000 Ai-Thinker_ESP8266_DOUT_32Mbit_AiCloud_0.0.0.6_20170517.bin
其中-p
后所接的是你的通讯埠名称(macOS以cu.命名规则,Linux以ttyXXX,Windows以COMx),韧体写入位址从0x00000开始,来源档为Ai-Thinker_ESP8266_DOUT_32Mbit_AiCloud_0.0.0.6_20170517.bin
,一切顺利后就会更新完成:
./esptool.py -p /dev/cu.usbmodem5d11 write_flash 0x00000 Ai-Thinker_ESP8266_DOUT_32Mbit_AiCloud_0.0.0.6_20170517.bin Connecting... Erasing flash... Writing at 0x0007ef00... (100 %)
非官方
NodeMCU Flasher
ESP8266一开始会受欢迎也是因为有名为NodeMcu所制作的开发板,它内建支援Lua语法,可以利用Serial console进行程式的线上编写,该官方也提供一款专为NodeMcu使用的上传程式,不过它也可以使用在其他的ESP8266开发板。,主程式分为:
开启后选择你连接的Serial埠名称。
到Config
页面,每个firmware更新方式不同,依照官方SDK所产生出来的是多个档案并且指定位址的,要记得依照位扯选定档案后后再输入写入的位址,不过有的像安信可提供的韧体大小是符合整个flash大小,不需要分段更新,所以只要设定写入从0x00000
,并且选择好档案:
选择好档案后再回到Operation
页面按下Flash
开始升级韧体,要记得进入UART0
启动(升级模式)。
上传过程中切换至Log
能看到更新韧体所进行的过程
更新一切正常后就能看到左下方图示为绿色打勾,代表已经将韧体更新成功。
注意事项
官方提供的程式已经非常久没更新,据丹尼实测结果,韧体档案超过512KBytes
就会无法上传。丹尼推测更新程式应该只是针对当时SDK编译出来的程式码大小(通常都<512KBytes)进行规范,再加上一些系统设定(esp_init_data_default.bin、eagle.irom0text.bin…)是分开烧录,所以限制在512KBytes
,所以,要记住,如果你的档案超过512KBytes
就可能无法使用。