1. 程式人生 > >和ESP8266 Arduino談場戀愛 02 這神奇的程式燒寫

和ESP8266 Arduino談場戀愛 02 這神奇的程式燒寫

前言

開發環境搭起來了,接著這篇筆記就要實現程式的燒寫。

非著名情感博主 IoT小能手 twowinter,耗費數月心血,編著長篇言情小說《和ESP8266 Arduino談場戀愛》,為廣大技術宅男傳授深度撩妹技巧。是時候了,關掉螢幕上的波多野結衣,跟著小能手的腳步,去找尋愛的真諦。

一、燒寫方式

ESP8266是通過串列埠 boot 來燒寫,兩年前玩 ESP8266 時就接觸過,ESP8266學習筆記1:如何在安信可全功能測試板上實現ESP-01的編譯下載和除錯

燒寫前必須要將GPIO0拉低,復位模組才行。

可奇怪的是,我手頭玩的是WEMOS D1 開發板,沒想到直接在 Arduino IDE上點選 “Upload” 就把程式燒錄進去了,甚至都不用復位模組。

都說 Arduino 開發方式很傻瓜化,可沒想居然傻到這程度,哦,不傻,方便到本能手都要哭出來了。

二、為什麼某些開發板可以直接用IDE Upload

2.1 esptool的解釋

Esp8266 for Arduino 的燒寫工具是集成了 esptool,esptool 的 github 有詳細的解釋。

## Entering the Bootloader

Both ESP8266 and ESP32 have to be reset in a certain way in order to launch the serial bootloader.

On some development boards (including NodeMCU, WeMOS, HUZZAH Feather, Core Board, ESP32-WROVER-KIT), esptool.py can automatically trigger a reset into the serial bootloader - in which case you don't need to read this section.

For everyone else, three things must happen to enter the serial bootloader - a reset, required pins set correctly, and GPIO0 pulled low:

### Boot Mode

Both ESP8266 and ESP32 chooses the boot mode each time it resets. A reset event can happen in one of several ways:

* Power applied to chip.
* The nRESET pin was low and is pulled high (on ESP8266 only).
* The CH_PD/EN pin ("enable") pin was low and is pulled high.

On ESP8266, both the nRESET and CH_PD pins must be pulled high for the chip to start operating.

For more details on selecting the boot mode, see the following Wiki pages:

* [ESP8266 Boot Mode Selection](https://github.com/espressif/esptool/wiki/ESP8266-Boot-Mode-Selection)
* [ESP32 Boot Mode Selection](https://github.com/espressif/esptool/wiki/ESP32-Boot-Mode-Selection)

2.2 twowinter的解釋

原來不是所有的板子都能這樣神奇地燒寫,NodeMCU, WeMOS, HUZZAH Feather, Core Board, ESP32-WROVER-KIT,這幾款是可以。其他的板子還是得老老實實地去手動對GPIO0拉低且復位模組。

找出 WeMOS 的原理圖確認了下,原來是 復位腳 和 GPIO0 其實都有串列埠晶片的流控腳連線著。

這樣就解釋通了,esptool在燒寫時通過流控腳對ESP8266做了復位和拉低IO0的操作,這樣就可以直接燒寫了。

三、其他無流控板子的升級

再找出了原來的舊板子,它是用撥碼開關將GPIO0給拉低的。

IDE上點選“Upload”後,會在串列埠等幾秒鐘,這期間對舊板子上電,就可以順利地進行燒寫了。

四、總結

現在想起來,本尊其實之前也接觸過相同的操作,JN516X系列的開發板就是這樣設計的。NXP的IDE工具在燒寫JN516X時直接操作了流控腳控制了某些IO。

利用底板USB轉串列埠晶片的流控腳去控制一些燒寫時必要的IO,這種實現方式讓燒寫過程變得特別特別暢快。

人們是這樣,一旦你用過這Upload,如同感受到秋褲的溫暖,也就回不去了。