diff --git a/boards/xtensa/esp32/Makefile.board b/boards/xtensa/esp32/Makefile.board index 8fb989ebec7..1cc4f839bd1 100644 --- a/boards/xtensa/esp32/Makefile.board +++ b/boards/xtensa/esp32/Makefile.board @@ -1,2 +1,3 @@ EMU_PLATFORM ?= DEBUG_SCRIPT := +FLASH_SCRIPT := esp32.sh diff --git a/scripts/support/esp32.sh b/scripts/support/esp32.sh new file mode 100755 index 00000000000..f6b37e1fb78 --- /dev/null +++ b/scripts/support/esp32.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +ESP_DEVICE=${ESP_DEVICE:-/dev/ttyUSB0} +ESP_BAUD_RATE=${ESP_BAUD_RATE:-921600} +ESP_FLASH_SIZE=${ESP_FLASH_SIZE:-detect} +ESP_FLASH_FREQ=${ESP_FLASH_FREQ:-40m} +ESP_FLASH_MODE=${ESP_FLASH_MODE:-dio} +ESP_TOOL=${ESP_TOOL:-espidf} + +cmd_flash() { + local esptool + local elf_name=${O}/${KERNEL_ELF_NAME} + + if [ "x${ESP_TOOL}" = "xespidf" ]; then + esptool=${ESP_IDF_PATH}/components/esptool_py/esptool/esptool.py + else + esptool=${ESP_TOOL} + fi + if [ ! -x ${esptool} ]; then + echo "esptool could not be found at ${esptool}" + exit 1 + fi + + echo "Converting ELF to BIN" + ${esptool} --chip esp32 elf2image ${elf_name} + + echo "Flashing ESP32 on ${ESP_DEVICE} (${ESP_BAUD_RATE}bps)" + ${esptool} --chip esp32 \ + --port ${ESP_DEVICE} \ + --baud ${ESP_BAUD_RATE} \ + --before default_reset \ + --after hard_reset \ + write_flash \ + -u \ + --flash_mode ${ESP_FLASH_MODE} \ + --flash_freq ${ESP_FLASH_FREQ} \ + --flash_size ${ESP_FLASH_SIZE} \ + 0x1000 ${elf_name/.elf/.bin} +} + +CMD="$1"; shift +case "${CMD}" in + flash) + cmd_flash "$@" + ;; + *) + echo "${CMD} not supported" + exit 1 + ;; +esac