esp32: Use esptool.py to flash with 'make flash'
This flashes Zephyr at 0x1000: that's where the first stage bootloader, part of the ESP32 ROM, expects to find an "image header". The second-stage bootloader, part of ESP-IDF, isn't used by the Zephyr port. However, the bootloader can be used if desired; please refer to the ESP-IDF documentation on how to set up partitions tables and use the bootloader. The following environment variables will affect the ESP32 flashing process: Variable Default value ESP_DEVICE /dev/ttyUSB0 ESP_BAUD_RATE 921600 ESP_FLASH_SIZE detect ESP_FLASH_FREQ 40m ESP_FLASH_MODE dio ESP_TOOL espidf It's impossible to determine which serial port the ESP32 board is connected to, as it uses a generic RS232-USB converter. The default of /dev/ttyUSB0 is provided as that's often the assigned name on a Linux machine without any other such converters. The baud rate of 921600bps is recommended. If experiencing issues when flashing, try halving the value a few times (460800, 230400, 115200, etc). It might be necessary to change the flash frequency or the flash mode; please refer to the esptool documentation for guidance on these settings. If ${ESP_TOOL} is set to "espidf", the esptool.py script found within ESP-IDF will be used. Otherwise, this variable is handled as a path to the tool. Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
This commit is contained in:
parent
0e08b946de
commit
f0b4e174d7
2 changed files with 51 additions and 0 deletions
|
@ -1,2 +1,3 @@
|
|||
EMU_PLATFORM ?=
|
||||
DEBUG_SCRIPT :=
|
||||
FLASH_SCRIPT := esp32.sh
|
||||
|
|
50
scripts/support/esp32.sh
Executable file
50
scripts/support/esp32.sh
Executable file
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue