ESP32, ESP8266 펌웨어 자동 다운로드 (Flow control)

ESPRESSIF|2022. 5. 11. 11:03

펌웨어 다운로드 절차

ESP32, ESP8266의 펌웨어를 다운로드 하기 위하여는 펌웨어 다운로드 모드로 진입을 해야 합니다. 

각 칩별로, 부트스트랩(Boot strap)이 있고, Boot strap을 Low로 내리고 리셋을 하여 재부팅을 하면 펌웨어 다운로드 모드로 진입을 합니다. 이때 별도 부트로더는 필요 없고, 칩내부에 내장된 1st stage 부트로더에 의하여 펌웨어 다운로드 모드로 진입이 됩니다. 반대로, Boot strap을 High로 한후 부팅을 하면 일반 동작으로 부팅이 됩니다.

일반적인 펌웨어 다운로드 절차

1) 부트스트랩(Boot strap) 조작 - Low로 연결

2) 모듈/IC 리셋 : EN(Chip_PU)핀을 Low에서 High로 올리면서 리셋 함

3) 펌웨어 다운로드 모드 진입

4) 펌웨어 다운로드 시행

 

Boot strap : 다운로드 모드 진입

 

각 칩별로 Boot strap 핀 번호가 다르니 주의 해야 합니다.

예로, ESP32 계열은 GPIO0, ESP32-C3는 GPIO9, ESP8266EX는 GPIO0입니다. 

Boot strap 핀을 Low로 한 후, 부팅(리셋)을 하면 다운로드 모드에 진입니다. 

 

자동 다운로드 

Boot strap을 Low/High로 수동을 조작하기가 번거로울 경우, 아래 자동 다운로드 회로를 이용하여 자동으로 다운로드모드에 진입을 하여 자동으로 펌웨어 다운로드를 시킬수 있습니다. 물론, 수동으로 조작을 해도 상관 없습니다. 

 

자동 다운로드는 UART flow control을 이용하고, 펌웨어 다운로드 프로그램인 esptool.py 에서 제어를 합니다.

아래 참고 회로는, 일반적인 USB-UART 전환보드에 FET 를 사용하여 자동 다운로드를 구성한 회로 입니다.

 

타이밍이 맞지 않을 경우

EN핀과 부트스트랩핀은 타이밍이 맞아야 합니다.

만약 타이밍이 맞지 않을 경우 다운로드 모드에 진입이 안될 수도 있습니다.

이는 여러가지 원인이 있을수 있으며, 모듈 회로의 EN핀 쪽 R/C delay회로 혹은 GPIO0쪽 Capacitor등 영향이 있을 수 있습니다. 이 부분은 회로적으로 수정을 하여야 하며, Software에서는 제어가 되지 않습니다. 

 

참고 회로

참고 회로 : https://dl.espressif.com/dl/schematics/esp32_devkitc_v4-sch.pdf

 

자동 다운로드 기능이 있는 USB-UART 전환보드

USB-UART전환보드를 직접 제작이 어려울 경우, 시중에 나온 유사 제품을 구매 하셔도 됩니다.

다만, 제품 별로 특성이 있고, 다운로드 속도에 제한이 있는 제품도 있습니다. 

 

자동 다운로드 회로가 있는 예제 제품 : 

 

1) ESP32-DEVKITS

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/user-guide-devkits-r-v1.1.html

 

2) ESP-PROG (com port가 2개 인식 : UART, JTAG) 

https://docs.espressif.com/projects/espressif-esp-iot-solution/en/latest/hw-reference/ESP-Prog_guide.html

 

3) 기타 해외 제품 

https://shop.m5stack.com/collections/m5-accessories/products/esp32-downloader-kit

https://www.analoglamb.com/product/esp32-esp82-programmer-ch340c-breakout/