INTRO

  • esptool은 python으로 만든 esp 펌웨어 툴이다.
  • 펌웨어 읽기, 쓰기, 지우기가 가능하다.
  • 기본 사용법을 숙지하고 필요에 따라 메뉴얼을 참고한다.

INSTALL

  • 다운로드 - https://github.com/espressif/esptool/releases

  • windows - esptool.exe

    • esptool-v4.x.x-win64.zip 압축을 풀고 esptool.exe를 사용
    • esptool.exe 단일 파일로 파이썬 설치를 필요로 하지 않는다.
  • Windows - esptool.py

    • python3를 설치한다.
    • powershell 또는 터미널창에서 pip로 설치한다.
    pip install esptool
    esptool.py -h
    
  • Linux - esptool.py

    • python3가 없다면 설치한다.
    sudo apt install python3 python3-pip
    sudo pip install esptool
    esptool.py -h
    

Flash Upload

  • PORT - windows:COM#, Linux: /dev/ttyUSB#
  • BAUDRATE - 460800 recommended
# nodemcu build image
esptool.py -p PORT  -b BAUDRATE \
    --before default_reset \
    --after hard_reset \
    --chip esp32  write_flash \
    --flash_mode dio \
    --flash_size detect \
    --flash_freq 40m \
     0x1000 bootloader.bin \
     0x8000 partition-table.bin \
     0x10000 nodemcu.bin

# other built-in image
esptool.py -p PORT  -b 460800 \
    --before default_reset \
    --after hard_reset \
    --chip esp32  write_flash \
    --flash_mode dio \
    --flash_size detect \
    --flash_freq 40m \
     0x0 single-app.bin \

Firmware Check

  • PORT - windows:COM#, Linux: /dev/ttyUSB#
# check flash id info
esptool.py -p PORT flash_id

# check built-in mac address
esptool.py -p PORT read_mac

# check image info
esptool.py -p PORT image_info --version 2 my_esp_app.bin

Firmware Erase

  • 연결된 esp32의 펌웨어 제거
  • PORT - windows:COM#, Linux: /dev/ttyUSB#
  • BAUDRATE - 460800 Recommended
esptool.py -p $PORT -b $SPEED erase_flash

Firmware Read

  • esp32에 들어있는 펌웨어를 복제하는 방법
  • flash_id로 flash_size를 확인 후 적용
  • 아래 예제는 0 부터 0x400000(4MB)까지 읽어서 out.bin 으로 복사하는 예.
  • PORT - windows: COM#, Linux: /dev/ttyUSB#
  • BAUDRATE - 460800 Recommended
# esp32의 펌웨어를 읽어 out.bin으로 저장: from 0 to 0x400000
esptool.py -p PORT -b BAUDRATE read_flash 0 0x400000 out.bin

# esp32의 펌웨어를 읽어 out.bin으로 저장: from 0 to ALL (auto detect)
esptool.py -p PORT -b BAUDRATE read_flash 0 ALL out.bin

# 저장해 놓은 out.bin을 다른 esp32에 업로드
esptool.py -p PORT  -b BAUDRATE \
    --before default_reset \
    --after hard_reset \
    --chip esp32  write_flash \
    --flash_mode dio \
    --flash_freq 40m \
    --flash_size 4MB \
     0x0 out.bin \

REFERENCE