]> granicus.if.org Git - esp-idf/blob - components/esptool_py/Makefile.projbuild
ethernet: add iperf example to test real bandwidth
[esp-idf] / components / esptool_py / Makefile.projbuild
1 # Component support for esptool.py. Doesn't do much by itself,
2 # components have their own flash targets that can use these variables.
3 ESPPORT ?= $(CONFIG_ESPTOOLPY_PORT)
4 ESPBAUD ?= $(CONFIG_ESPTOOLPY_BAUD)
5 ESPFLASHMODE ?= $(CONFIG_ESPTOOLPY_FLASHMODE)
6 ESPFLASHFREQ ?= $(CONFIG_ESPTOOLPY_FLASHFREQ)
7 ESPFLASHSIZE ?= $(CONFIG_ESPTOOLPY_FLASHSIZE)
8
9 CONFIG_ESPTOOLPY_COMPRESSED ?=
10
11 PYTHON ?= $(call dequote,$(CONFIG_PYTHON))
12
13 # two commands that can be used from other components
14 # to invoke esptool.py (with or without serial port args)
15 #
16 ESPTOOLPY_SRC := $(COMPONENT_PATH)/esptool/esptool.py
17 ESPTOOLPY := $(PYTHON) $(ESPTOOLPY_SRC) --chip esp32
18 ESPTOOLPY_SERIAL := $(ESPTOOLPY) --port $(ESPPORT) --baud $(ESPBAUD) --before $(CONFIG_ESPTOOLPY_BEFORE) --after $(CONFIG_ESPTOOLPY_AFTER)
19
20 # Supporting esptool command line tools
21 ESPEFUSEPY := $(PYTHON) $(COMPONENT_PATH)/esptool/espefuse.py
22 ESPSECUREPY := $(PYTHON) $(COMPONENT_PATH)/esptool/espsecure.py
23 export ESPSECUREPY  # is used in bootloader_support component
24
25 ESPTOOL_FLASH_OPTIONS := --flash_mode $(ESPFLASHMODE) --flash_freq $(ESPFLASHFREQ) --flash_size $(ESPFLASHSIZE)
26 ifdef CONFIG_ESPTOOLPY_FLASHSIZE_DETECT
27 ESPTOOL_WRITE_FLASH_OPTIONS := --flash_mode $(ESPFLASHMODE) --flash_freq $(ESPFLASHFREQ) --flash_size detect
28 else
29 ESPTOOL_WRITE_FLASH_OPTIONS := $(ESPTOOL_FLASH_OPTIONS)
30 endif
31
32 ESPTOOL_ELF2IMAGE_OPTIONS :=
33
34 ifdef CONFIG_SECURE_BOOT_ENABLED
35 ifndef CONFIG_SECURE_BOOT_ALLOW_SHORT_APP_PARTITION
36 ifndef IS_BOOTLOADER_BUILD
37 ESPTOOL_ELF2IMAGE_OPTIONS += --secure-pad
38 endif
39 endif
40 endif
41
42 ESPTOOLPY_WRITE_FLASH=$(ESPTOOLPY_SERIAL) write_flash $(if $(CONFIG_ESPTOOLPY_COMPRESSED),-z,-u) $(ESPTOOL_WRITE_FLASH_OPTIONS)
43
44 ESPTOOL_ALL_FLASH_ARGS += $(APP_OFFSET) $(APP_BIN)
45
46 ifdef CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES
47 ifndef IS_BOOTLOADER_BUILD
48 # for locally signed secure boot image, add a signing step to get from unsigned app to signed app
49 APP_BIN_UNSIGNED := $(APP_BIN:.bin=-unsigned.bin)
50
51 $(APP_BIN): $(APP_BIN_UNSIGNED) $(SECURE_BOOT_SIGNING_KEY) $(SDKCONFIG_MAKEFILE)
52         $(ESPSECUREPY) sign_data --keyfile $(SECURE_BOOT_SIGNING_KEY) -o $@ $<
53 endif
54 endif
55 # non-secure boot (or bootloader), both these files are the same
56 APP_BIN_UNSIGNED ?= $(APP_BIN)
57
58 $(APP_BIN_UNSIGNED): $(APP_ELF) $(ESPTOOLPY_SRC) | check_python_dependencies
59         $(ESPTOOLPY) elf2image $(ESPTOOL_FLASH_OPTIONS) $(ESPTOOL_ELF2IMAGE_OPTIONS) -o $@ $<
60
61 flash: all_binaries $(ESPTOOLPY_SRC) $(call prereq_if_explicit,erase_flash) partition_table_get_info | check_python_dependencies
62         @echo "Flashing binaries to serial port $(ESPPORT) (app at offset $(APP_OFFSET))..."
63 ifdef CONFIG_SECURE_BOOT_ENABLED
64         @echo "(Secure boot enabled, so bootloader not flashed automatically. See 'make bootloader' output)"
65 endif
66         $(ESPTOOLPY_WRITE_FLASH) $(ESPTOOL_ALL_FLASH_ARGS)
67
68 app-flash: $(APP_BIN) $(ESPTOOLPY_SRC) $(call prereq_if_explicit,erase_flash) partition_table_get_info | check_python_dependencies
69         @echo "Flashing app to serial port $(ESPPORT), offset $(APP_OFFSET)..."
70         $(ESPTOOLPY_WRITE_FLASH) $(APP_OFFSET) $(APP_BIN)
71
72 # Submodules normally added in component.mk, but can be added
73 # at the project level as long as qualified path
74 COMPONENT_SUBMODULES += $(COMPONENT_PATH)/esptool
75
76 erase_flash: | check_python_dependencies
77         @echo "Erasing entire flash..."
78         $(ESPTOOLPY_SERIAL) erase_flash
79
80 MONITORBAUD ?= $(CONFIG_MONITOR_BAUD)
81
82 MONITOR_PYTHON := $(PYTHON)
83
84 ifeq ("$(OS)","Windows_NT")
85 # miniterm and idf_monitor both need a Windows Console PTY in order
86 # to correctly handle user input
87 MONITOR_PYTHON := winpty $(PYTHON)
88 endif
89
90 # note: if you want to run miniterm from command line, can simply run
91 # miniterm.py on the console. The '$(PYTHON) -m serial.tools.miniterm'
92 # is to allow for the $(PYTHON) variable overriding the python path.
93 simple_monitor: $(call prereq_if_explicit,%flash) | check_python_dependencies
94         $(MONITOR_PYTHON) -m serial.tools.miniterm --rts 0 --dtr 0 --raw $(ESPPORT) $(MONITORBAUD)
95
96 PRINT_FILTER ?=
97
98 MONITOR_OPTS := --baud $(MONITORBAUD) --port $(ESPPORT) --toolchain-prefix $(CONFIG_TOOLPREFIX) --make "$(MAKE)" --print_filter "$(PRINT_FILTER)"
99
100 monitor: $(call prereq_if_explicit,%flash) | check_python_dependencies
101         $(summary) MONITOR
102         [ -f $(APP_ELF) ] || echo "*** 'make monitor' target requires an app to be compiled and flashed first."
103         [ -f $(APP_ELF) ] || echo "*** Run 'make flash monitor' to build, flash and monitor"
104         [ -f $(APP_ELF) ] || echo "*** Or alternatively 'make simple_monitor' to view the serial port as-is."
105         [ -f $(APP_ELF) ] || exit 1
106         $(MONITOR_PYTHON) $(IDF_PATH)/tools/idf_monitor.py $(MONITOR_OPTS) $(APP_ELF)
107
108 .PHONY: erase_flash