Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

#!/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