FLASHER and FFLAGS are evaluated by the main Makefile.include or by file included by it. Their value does not need to be exported. This will also prevent evaluating 'PORT' for FFLAGS when not needed. Testing ------- `git diff --word-diff` only reports `export` being removed. `git show --stat` reports `84 insertions(+), 84 deletions(-)` Which is the same amount as lines that where matching `export[[:blank::]]\+VARIABLE`.
185 lines
6.2 KiB
Makefile
185 lines
6.2 KiB
Makefile
# check some environment variables first
|
|
ifndef ESP32_SDK_DIR
|
|
$(info ESP32_SDK_DIR should be defined as /path/to/esp-idf directory)
|
|
$(info ESP32_SDK_DIR is set by default to /opt/esp/esp-idf)
|
|
export ESP32_SDK_DIR=/opt/esp/esp-idf
|
|
endif
|
|
|
|
# DEFAULT compile configuration
|
|
|
|
# FLASH_MODE=[ dout | dio | qout | qio ]
|
|
# use flash mode dout by default to keep GPIO9 and GPIO10 free for use
|
|
export FLASH_MODE ?= dout
|
|
|
|
# enable GDBSTUP for debugging on exceptions
|
|
ifeq ($(ENABLE_GDBSTUB), 1)
|
|
USEMODULE += esp_gdbstub
|
|
endif
|
|
|
|
# enable GDB for compilation with debug info
|
|
ifeq ($(ENABLE_GDB), 1)
|
|
USEMODULE += esp_gdb
|
|
endif
|
|
|
|
# enable modules at command line for testing
|
|
ifneq ($(USE_MODULES), )
|
|
USEMODULE += $(USE_MODULES)
|
|
endif
|
|
|
|
# SPECIAL module dependencies
|
|
# cannot be done in Makefile.dep since Makefile.dep is included too late
|
|
|
|
ifneq (,$(findstring core_thread_flags,$(USEMODULE)))
|
|
USEMODULE += pthread
|
|
endif
|
|
|
|
ifneq (,$(filter esp_gdbstub,$(USEMODULE)))
|
|
USEMODULE += esp_gdb
|
|
endif
|
|
|
|
ifneq (,$(filter esp_now,$(USEMODULE)))
|
|
USEMODULE += esp_wifi_any
|
|
endif
|
|
|
|
ifneq (,$(filter esp_wifi,$(USEMODULE)))
|
|
USEMODULE += esp_wifi_any
|
|
endif
|
|
|
|
# ESP32 pseudomodules
|
|
PSEUDOMODULES += esp_eth_hw
|
|
PSEUDOMODULES += esp_gdb
|
|
PSEUDOMODULES += esp_gdbstub
|
|
PSEUDOMODULES += esp_hw_counter
|
|
PSEUDOMODULES += esp_i2c_sw
|
|
PSEUDOMODULES += esp_i2c_hw
|
|
PSEUDOMODULES += esp_idf_newlib
|
|
PSEUDOMODULES += esp_spi_ram
|
|
PSEUDOMODULES += esp_spiffs
|
|
PSEUDOMODULES += esp_wifi_any
|
|
|
|
export CPU ?= esp32
|
|
export TARGET_ARCH ?= xtensa-esp32-elf
|
|
export ESPTOOL ?= $(ESP32_SDK_DIR)/components/esptool_py/esptool/esptool.py
|
|
|
|
USEMODULE += esp_idf
|
|
USEMODULE += esp_idf_driver
|
|
USEMODULE += esp_idf_esp32
|
|
USEMODULE += esp_idf_soc
|
|
USEMODULE += log
|
|
USEMODULE += newlib_syscalls_default
|
|
USEMODULE += periph
|
|
USEMODULE += periph_adc_ctrl
|
|
USEMODULE += periph_common
|
|
USEMODULE += periph_hwrng
|
|
USEMODULE += periph_flash
|
|
USEMODULE += periph_rtc
|
|
USEMODULE += periph_uart
|
|
USEMODULE += random
|
|
USEMODULE += stdio_uart
|
|
USEMODULE += xtensa
|
|
|
|
INCLUDES += -I$(RIOTCPU)/esp_common/vendor/
|
|
INCLUDES += -I$(RIOTCPU)/$(CPU)/vendor/
|
|
INCLUDES += -I$(RIOTCPU)/$(CPU)/vendor/esp-idf/include
|
|
INCLUDES += -I$(RIOTCPU)/$(CPU)/vendor/esp-idf/include/esp32
|
|
INCLUDES += -I$(RIOTCPU)/$(CPU)/vendor/esp-idf/include/heap
|
|
INCLUDES += -I$(RIOTCPU)/$(CPU)/vendor/esp-idf/include/spi_flash
|
|
INCLUDES += -I$(RIOTCPU)/$(CPU)/vendor/esp-idf/include/tcpip_adapter
|
|
INCLUDES += -I$(ESP32_SDK_DIR)/components/
|
|
INCLUDES += -I$(ESP32_SDK_DIR)/components/driver/include
|
|
INCLUDES += -I$(ESP32_SDK_DIR)/components/esp32/include
|
|
INCLUDES += -I$(ESP32_SDK_DIR)/components/heap/include
|
|
INCLUDES += -I$(ESP32_SDK_DIR)/components/soc/esp32/include
|
|
INCLUDES += -I$(ESP32_SDK_DIR)/components/soc/include
|
|
INCLUDES += -I$(RIOTBOARD)/common/$(CPU)/include
|
|
INCLUDES += -I$(RIOTCPU)/$(CPU)
|
|
|
|
CFLAGS += -DSCHED_PRIO_LEVELS=32
|
|
CFLAGS += -DSDK_NOT_USED -DCONFIG_FREERTOS_UNICORE=1 -DESP_PLATFORM
|
|
CFLAGS += -DLOG_TAG_IN_BRACKETS
|
|
CFLAGS += -Wno-unused-parameter -Wformat=0
|
|
CFLAGS += -mlongcalls -mtext-section-literals -fstrict-volatile-bitfields
|
|
CFLAGS += -fdata-sections -fzero-initialized-in-bss
|
|
ASFLAGS += --longcalls --text-section-literals
|
|
|
|
ifneq ($(CONFIGS),)
|
|
CFLAGS += $(CONFIGS)
|
|
endif
|
|
|
|
# if any WiFi interface is used, the number of priority levels has to be 32
|
|
ifneq (,$(filter esp_wifi_any,$(USEMODULE)))
|
|
CFLAGS += -DSCHED_PRIO_LEVELS=32
|
|
endif
|
|
|
|
ifneq (,$(filter esp_gdb,$(USEMODULE)))
|
|
CFLAGS += -Og -ggdb -g3
|
|
else
|
|
CFLAGS += -Os
|
|
endif
|
|
|
|
ifeq ($(QEMU), 1)
|
|
CFLAGS += -DQEMU
|
|
endif
|
|
|
|
# LINKFLAGS += -Wl,--verbose
|
|
|
|
LINKFLAGS += -L$(ESP32_SDK_DIR)/components/esp32
|
|
LINKFLAGS += -L$(ESP32_SDK_DIR)/components/esp32/lib
|
|
|
|
ifneq (,$(filter esp_wifi_any,$(USEMODULE)))
|
|
BASELIBS += -lcore -lrtc -lnet80211 -lpp -lsmartconfig -lcoexist
|
|
BASELIBS += -lwps -lwpa -lwpa2 -lespnow -lmesh -lphy -lstdc++
|
|
endif
|
|
|
|
LINKFLAGS += -lhal -lg -lc
|
|
LINKFLAGS += -L$(RIOTCPU)/$(CPU)/ld/
|
|
LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ld/esp32.ld
|
|
LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ld/esp32.common.ld
|
|
LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ld/esp32.peripherals.ld
|
|
LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ld/esp32.rom.ld
|
|
LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ld/esp32.rom.nanofmt.ld
|
|
LINKFLAGS += -nostdlib -lgcc -u putchar -Wl,-gc-sections
|
|
LINKFLAGS += -Wl,--warn-unresolved-symbols
|
|
|
|
# configure preflasher to convert .elf to .bin before flashing
|
|
FLASH_MODE ?= dout # FIX configuration, DO NOT CHANGE
|
|
FLASH_FREQ = 40m # FIX configuration, DO NOT CHANGE
|
|
FLASH_SIZE ?= 2MB
|
|
export PREFLASHER = $(ESPTOOL)
|
|
export PREFFLAGS = --chip esp32 elf2image
|
|
export PREFFLAGS += -fm $(FLASH_MODE) -fs $(FLASH_SIZE) -ff $(FLASH_FREQ)
|
|
export PREFFLAGS += -o $(ELFFILE).bin $(ELFFILE);
|
|
export PREFFLAGS += echo "" > $(BINDIR)/partitions.csv;
|
|
export PREFFLAGS += echo "nvs, data, nvs, 0x9000, 0x6000" >> $(BINDIR)/partitions.csv;
|
|
export PREFFLAGS += echo "phy_init, data, phy, 0xf000, 0x1000" >> $(BINDIR)/partitions.csv;
|
|
export PREFFLAGS += echo -n "factory, app, factory, 0x10000, " >> $(BINDIR)/partitions.csv;
|
|
export PREFFLAGS += ls -l $(ELFFILE).bin | awk '{ print $$5 }' >> $(BINDIR)/partitions.csv;
|
|
|
|
export PREFFLAGS += python $(RIOTCPU)/$(CPU)/gen_esp32part.py --disable-sha256sum
|
|
export PREFFLAGS += --verify $(BINDIR)/partitions.csv $(BINDIR)/partitions.bin
|
|
export FLASHDEPS = preflash
|
|
|
|
# flasher configuration
|
|
ifeq ($(QEMU), 1)
|
|
FLASHER = dd
|
|
FFLAGS += if=/dev/zero bs=1M count=4 | tr "\\000" "\\377" > tmp.bin && cat tmp.bin |
|
|
FFLAGS += head -c $$((0x1000)) |
|
|
FFLAGS += cat - $(RIOTCPU)/$(CPU)/bin/bootloader.bin tmp.bin |
|
|
FFLAGS += head -c $$((0x8000)) |
|
|
FFLAGS += cat - $(BINDIR)/partitions.bin tmp.bin |
|
|
FFLAGS += head -c $$((0x10000)) |
|
|
FFLAGS += cat - $(ELFFILE).bin tmp.bin |
|
|
FFLAGS += head -c $$((0x400000)) > $(BINDIR)/esp32flash.bin && rm tmp.bin &&
|
|
FFLAGS += cp $(RIOTCPU)/$(CPU)/bin/rom_0x3ff90000_0x00010000.bin $(BINDIR)/rom1.bin &&
|
|
FFLAGS += cp $(RIOTCPU)/$(CPU)/bin/rom_0x40000000_0x000c2000.bin $(BINDIR)/rom.bin
|
|
else
|
|
export PROGRAMMER_SPEED ?= 460800
|
|
FLASHER = $(ESPTOOL)
|
|
FFLAGS += --chip esp32 -p $(PORT) -b $(PROGRAMMER_SPEED)
|
|
FFLAGS += --before default_reset --after hard_reset write_flash
|
|
FFLAGS += -z -fm $(FLASH_MODE) -fs detect -ff $(FLASH_FREQ)
|
|
FFLAGS += 0x1000 $(RIOTCPU)/$(CPU)/bin/bootloader.bin
|
|
FFLAGS += 0x8000 $(BINDIR)/partitions.bin
|
|
FFLAGS += 0x10000 $(ELFFILE).bin
|
|
endif
|