mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
91496b3cba
To reduce the information that are printed at the console during the startup, special bootloaders are required that suppress the outputs which are only informational. The according bootloader has to be selected during the make process.
243 lines
7.6 KiB
Makefile
243 lines
7.6 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 cpp,$(FEATURES_USED)))
|
|
USEMODULE += esp_cxx
|
|
endif
|
|
|
|
ifneq (,$(filter esp_gdbstub,$(USEMODULE)))
|
|
USEMODULE += esp_gdb
|
|
endif
|
|
|
|
ifneq (,$(filter netdev_default gnrc_netdev_default,$(USEMODULE)))
|
|
# use esp_now as default netdev if no other netdev module is enabled
|
|
ifeq (,$(filter esp_wifi esp_eth,$(USEMODULE)))
|
|
USEMODULE += esp_now
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(filter esp_now,$(USEMODULE)))
|
|
$(eval GNRC_NETIF_NUMOF=$(shell echo $$(($(GNRC_NETIF_NUMOF)+1))))
|
|
USEMODULE += esp_wifi_any
|
|
endif
|
|
|
|
ifneq (,$(filter esp_wifi,$(USEMODULE)))
|
|
$(eval GNRC_NETIF_NUMOF=$(shell echo $$(($(GNRC_NETIF_NUMOF)+1))))
|
|
USEMODULE += esp_wifi_any
|
|
endif
|
|
|
|
ifneq (,$(filter esp_eth,$(USEMODULE)))
|
|
$(eval GNRC_NETIF_NUMOF=$(shell echo $$(($(GNRC_NETIF_NUMOF)+1))))
|
|
endif
|
|
|
|
ifneq (,$(filter spiffs,$(USEMODULE)))
|
|
export RIOT_TEST_TIMEOUT = 300
|
|
endif
|
|
|
|
ifneq (,$(filter littlefs,$(USEMODULE)))
|
|
export RIOT_TEST_TIMEOUT = 300
|
|
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_log_colored
|
|
PSEUDOMODULES += esp_log_tagged
|
|
PSEUDOMODULES += esp_log_startup
|
|
PSEUDOMODULES += esp_spi_ram
|
|
PSEUDOMODULES += esp_spiffs
|
|
PSEUDOMODULES += esp_wifi_any
|
|
|
|
export TARGET_ARCH ?= xtensa-esp32-elf
|
|
|
|
USEMODULE += esp_idf
|
|
USEMODULE += esp_idf_driver
|
|
USEMODULE += esp_idf_esp32
|
|
USEMODULE += esp_idf_soc
|
|
USEMODULE += log
|
|
USEMODULE += newlib
|
|
USEMODULE += periph
|
|
USEMODULE += periph_adc_ctrl
|
|
USEMODULE += periph_hwrng
|
|
USEMODULE += periph_flash
|
|
USEMODULE += periph_rtc
|
|
USEMODULE += periph_uart
|
|
USEMODULE += riot_freertos
|
|
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)
|
|
|
|
# if any WiFi interface is used, the number of priority levels has to be 32
|
|
ifneq (,$(filter esp_wifi_any esp_eth,$(USEMODULE)))
|
|
CFLAGS += -DSCHED_PRIO_LEVELS=32
|
|
endif
|
|
|
|
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 -ffunction-sections -fzero-initialized-in-bss
|
|
|
|
OPTIONAL_CFLAGS_BLACKLIST += -Wformat-overflow
|
|
OPTIONAL_CFLAGS_BLACKLIST += -Wformat-truncation
|
|
OPTIONAL_CFLAGS_BLACKLIST += -gz
|
|
|
|
ASFLAGS += --longcalls --text-section-literals
|
|
|
|
# thin archives trigger a reboot loop - see #12258, #12035, #12346
|
|
ARFLAGS = rcs
|
|
|
|
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
|
|
|
|
ifneq (,$(filter esp_log_colored,$(USEMODULE)))
|
|
BOOTLOADER_COLOR = _colors
|
|
endif
|
|
|
|
ifneq (,$(filter esp_log_startup,$(USEMODULE)))
|
|
BOOTLOADER_INFO = _info
|
|
endif
|
|
|
|
BOOTLOADER_BIN = bootloader$(BOOTLOADER_COLOR)$(BOOTLOADER_INFO).bin
|
|
|
|
# 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
|
|
|
|
BASELIBS += -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 -Wl,-gc-sections
|
|
|
|
ifneq (,$(filter esp_cxx,$(USEMODULE)))
|
|
UNDEF += $(BINDIR)/esp_cxx/cxa_guard.o
|
|
endif
|
|
|
|
ESPTOOL ?= $(RIOTBASE)/dist/tools/esptool/esptool.py
|
|
|
|
# The ELFFILE is the base one used for flashing
|
|
FLASHFILE ?= $(ELFFILE)
|
|
|
|
# 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
|
|
|
|
PREFLASHER = $(ESPTOOL)
|
|
PREFFLAGS = --chip esp32 elf2image
|
|
PREFFLAGS += -fm $(FLASH_MODE) -fs $(FLASH_SIZE) -ff $(FLASH_FREQ)
|
|
PREFFLAGS += -o $(FLASHFILE).bin $(FLASHFILE);
|
|
PREFFLAGS += printf "\n" > $(BINDIR)/partitions.csv;
|
|
PREFFLAGS += printf "nvs, data, nvs, 0x9000, 0x6000\n" >> $(BINDIR)/partitions.csv;
|
|
PREFFLAGS += printf "phy_init, data, phy, 0xf000, 0x1000\n" >> $(BINDIR)/partitions.csv;
|
|
PREFFLAGS += printf "factory, app, factory, 0x10000, " >> $(BINDIR)/partitions.csv;
|
|
PREFFLAGS += ls -l $(FLASHFILE).bin | awk '{ print $$5 }' >> $(BINDIR)/partitions.csv;
|
|
|
|
PREFFLAGS += python $(RIOTCPU)/$(CPU)/gen_esp32part.py --disable-sha256sum
|
|
PREFFLAGS += --verify $(BINDIR)/partitions.csv $(BINDIR)/partitions.bin
|
|
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 - $(FLASHFILE).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 $(PROG_DEV) -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 $(FLASHFILE).bin
|
|
endif
|