diff options
-rw-r--r-- | ports/esp32/Makefile | 244 | ||||
-rw-r--r-- | ports/esp32/README.md | 13 | ||||
-rw-r--r-- | ports/esp32/boards/sdkconfig | 26 | ||||
-rw-r--r-- | ports/esp32/boards/sdkconfig.spiram | 27 | ||||
-rw-r--r-- | ports/esp32/network_ppp.c | 2 | ||||
-rw-r--r-- | ports/esp32/sdkconfig.h | 193 |
6 files changed, 233 insertions, 272 deletions
diff --git a/ports/esp32/Makefile b/ports/esp32/Makefile index 9e465a935..b3b084bf6 100644 --- a/ports/esp32/Makefile +++ b/ports/esp32/Makefile @@ -20,8 +20,14 @@ FLASH_MODE ?= dio FLASH_FREQ ?= 40m FLASH_SIZE ?= 4MB CROSS_COMPILE ?= xtensa-esp32-elf- +OBJDUMP = $(CROSS_COMPILE)objdump -ESPIDF_SUPHASH := 30545f4cccec7460634b656d278782dd7151098e +# SDKCONFIG should be overridden to get a different configuration +SDKCONFIG ?= boards/sdkconfig +SDKCONFIG_H = $(BUILD)/sdkconfig.h + +# the git hash of the currently supported ESP IDF version +ESPIDF_SUPHASH := 5c88c5996dbde6208e3bec05abc21ff6cd822d26 # paths to ESP IDF and its components ifeq ($(ESPIDF),) @@ -36,6 +42,8 @@ endif endif ESPCOMP = $(ESPIDF)/components ESPTOOL ?= $(ESPCOMP)/esptool_py/esptool/esptool.py +ESPCOMP_KCONFIGS = $(shell find $(ESPCOMP) -name Kconfig) +ESPCOMP_KCONFIGS_PROJBUILD = $(shell find $(ESPCOMP) -name Kconfig.projbuild) # verify the ESP IDF version ESPIDF_CURHASH := $(shell git -C $(ESPIDF) show -s --pretty=format:'%H') @@ -51,6 +59,12 @@ endif # pretty format of ESP IDF version, used internally by the IDF IDF_VER := $(shell git -C $(ESPIDF) describe) +# include sdkconfig to get needed configuration values +include $(SDKCONFIG) + +################################################################################ +# Compiler and linker flags + INC += -I. INC += -I$(TOP) INC += -I$(TOP)/lib/mp-readline @@ -78,10 +92,12 @@ INC_ESPCOMP += -I$(ESPCOMP)/newlib/platform_include INC_ESPCOMP += -I$(ESPCOMP)/newlib/include INC_ESPCOMP += -I$(ESPCOMP)/nvs_flash/include INC_ESPCOMP += -I$(ESPCOMP)/freertos/include +INC_ESPCOMP += -I$(ESPCOMP)/esp_ringbuf/include +INC_ESPCOMP += -I$(ESPCOMP)/esp_event/include INC_ESPCOMP += -I$(ESPCOMP)/tcpip_adapter/include -INC_ESPCOMP += -I$(ESPCOMP)/lwip/include/lwip -INC_ESPCOMP += -I$(ESPCOMP)/lwip/include/lwip/port -INC_ESPCOMP += -I$(ESPCOMP)/lwip/include/lwip/posix +INC_ESPCOMP += -I$(ESPCOMP)/lwip/lwip/src/include +INC_ESPCOMP += -I$(ESPCOMP)/lwip/port/esp32/include +INC_ESPCOMP += -I$(ESPCOMP)/lwip/include/apps INC_ESPCOMP += -I$(ESPCOMP)/mbedtls/mbedtls/include INC_ESPCOMP += -I$(ESPCOMP)/mbedtls/port/include INC_ESPCOMP += -I$(ESPCOMP)/spi_flash/include @@ -117,7 +133,7 @@ LDFLAGS += -u call_user_start_cpu0 -u uxTopUsedPriority -u ld_include_panic_high LDFLAGS += -u __cxa_guard_dummy # so that implementation of static guards is taken from cxx_guards.o instead of libstdc++.a LDFLAGS += -L$(ESPCOMP)/esp32/ld LDFLAGS += -T $(BUILD)/esp32_out.ld -LDFLAGS += -T esp32.common.ld +LDFLAGS += -T $(BUILD)/esp32.common.ld LDFLAGS += -T esp32.rom.ld LDFLAGS += -T esp32.peripherals.ld @@ -134,9 +150,9 @@ COPT += -Os -DNDEBUG #LDFLAGS += --gc-sections endif -# Enable SPIRAM support if CONFIG_SPIRAM_SUPPORT=1 -ifeq ($(CONFIG_SPIRAM_SUPPORT),1) -CFLAGS_COMMON += -mfix-esp32-psram-cache-issue -DCONFIG_SPIRAM_SUPPORT=1 +# Enable SPIRAM support if CONFIG_SPIRAM_SUPPORT=y in sdkconfig +ifeq ($(CONFIG_SPIRAM_SUPPORT),y) +CFLAGS_COMMON += -mfix-esp32-psram-cache-issue LIBC_LIBM = $(ESPCOMP)/newlib/lib/libc-psram-workaround.a $(ESPCOMP)/newlib/lib/libm-psram-workaround.a else LDFLAGS += -T esp32.rom.spiram_incompatible_fns.ld @@ -214,6 +230,23 @@ SRC_QSTR += $(SRC_C) $(EXTMOD_SRC_C) $(LIB_SRC_C) $(DRIVERS_SRC_C) SRC_QSTR_AUTO_DEPS += ################################################################################ +# Generate sdkconfig.h from sdkconfig + +$(SDKCONFIG_H): $(SDKCONFIG) + $(ECHO) "GEN $@" + $(Q)$(PYTHON) $(ESPIDF)/tools/kconfig_new/confgen.py \ + --output header $@ \ + --config $< \ + --kconfig $(ESPIDF)/Kconfig \ + --env "IDF_TARGET=esp32" \ + --env "IDF_CMAKE=n" \ + --env "COMPONENT_KCONFIGS=$(ESPCOMP_KCONFIGS)" \ + --env "COMPONENT_KCONFIGS_PROJBUILD=$(ESPCOMP_KCONFIGS_PROJBUILD)" + $(Q)touch $@ + +$(HEADER_BUILD)/qstrdefs.generated.h: $(SDKCONFIG_H) + +################################################################################ # List of object files from the ESP32 IDF components ESPIDF_DRIVER_O = $(addprefix $(ESPCOMP)/driver/,\ @@ -230,7 +263,11 @@ ESPIDF_DRIVER_O = $(addprefix $(ESPCOMP)/driver/,\ $(BUILD)/$(ESPCOMP)/esp32/dport_access.o: CFLAGS += -Wno-array-bounds ESPIDF_ESP32_O = $(addprefix $(ESPCOMP)/esp32/,\ brownout.o \ + cache_sram_mmu.o \ + dbg_stubs.o \ + esp_err_to_name.o \ panic.o \ + reset_reason.o \ esp_timer.o \ esp_timer_esp32.o \ ets_timer_legacy.o \ @@ -253,6 +290,7 @@ ESPIDF_ESP32_O = $(addprefix $(ESPCOMP)/esp32/,\ system_api.o \ hw_random.o \ phy_init.o \ + pm_esp32.o \ intr_alloc.o \ dport_access.o \ wifi_init.o \ @@ -262,6 +300,10 @@ ESPIDF_ESP32_O = $(addprefix $(ESPCOMP)/esp32/,\ spiram_psram.o \ ) +ESPIDF_ESP_RINGBUF_O = $(addprefix $(ESPCOMP)/esp_ringbuf/,\ + ringbuf.o \ + ) + ESPIDF_HEAP_O = $(addprefix $(ESPCOMP)/heap/,\ heap_caps.o \ heap_caps_init.o \ @@ -277,6 +319,7 @@ ESPIDF_SOC_O = $(addprefix $(ESPCOMP)/soc/,\ esp32/rtc_pm.o \ esp32/rtc_sleep.o \ esp32/rtc_time.o \ + esp32/rtc_wdt.o \ esp32/soc_memory_layout.o \ esp32/spi_periph.o \ src/memory_layout_utils.o \ @@ -312,12 +355,12 @@ ESPIDF_PTHREAD_O = $(addprefix $(ESPCOMP)/pthread/,\ # -Os because that generates subtly different code. # We also need custom CFLAGS for .c files because FreeRTOS has headers with # generic names (eg queue.h) which can clash with other files in the port. -CFLAGS_ASM = -I$(ESPCOMP)/esp32/include -I$(ESPCOMP)/soc/esp32/include -I$(ESPCOMP)/freertos/include/freertos -I. +CFLAGS_ASM = -I$(BUILD) -I$(ESPCOMP)/esp32/include -I$(ESPCOMP)/soc/esp32/include -I$(ESPCOMP)/freertos/include/freertos -I. $(BUILD)/$(ESPCOMP)/freertos/portasm.o: CFLAGS = $(CFLAGS_ASM) $(BUILD)/$(ESPCOMP)/freertos/xtensa_context.o: CFLAGS = $(CFLAGS_ASM) $(BUILD)/$(ESPCOMP)/freertos/xtensa_intr_asm.o: CFLAGS = $(CFLAGS_ASM) $(BUILD)/$(ESPCOMP)/freertos/xtensa_vectors.o: CFLAGS = $(CFLAGS_ASM) -$(BUILD)/$(ESPCOMP)/freertos/%.o: CFLAGS = $(CFLAGS_BASE) -I. $(INC_ESPCOMP) -I$(ESPCOMP)/freertos/include/freertos -D_ESP_FREERTOS_INTERNAL +$(BUILD)/$(ESPCOMP)/freertos/%.o: CFLAGS = $(CFLAGS_BASE) -I. -I$(BUILD) $(INC_ESPCOMP) -I$(ESPCOMP)/freertos/include/freertos -D_ESP_FREERTOS_INTERNAL ESPIDF_FREERTOS_O = $(addprefix $(ESPCOMP)/freertos/,\ croutine.o \ event_groups.o \ @@ -326,7 +369,6 @@ ESPIDF_FREERTOS_O = $(addprefix $(ESPCOMP)/freertos/,\ portasm.o \ port.o \ queue.o \ - ringbuf.o \ tasks.o \ timers.o \ xtensa_context.o \ @@ -366,6 +408,7 @@ ESPIDF_APP_TRACE_O = $(addprefix $(ESPCOMP)/app_trace/,\ ) ESPIDF_APP_UPDATE_O = $(addprefix $(ESPCOMP)/app_update/,\ + esp_app_desc.o \ esp_ota_ops.o \ ) @@ -404,6 +447,7 @@ ESPIDF_NGHTTP_O = $(addprefix $(ESPCOMP)/nghttp/,\ ) ESPIDF_NVS_FLASH_O = $(addprefix $(ESPCOMP)/nvs_flash/,\ + src/nvs_ops.o \ src/nvs_types.o \ src/nvs_page.o \ src/nvs_item_hash_list.o \ @@ -433,69 +477,72 @@ ESPIDF_ULP_O = $(addprefix $(ESPCOMP)/ulp/,\ $(BUILD)/$(ESPCOMP)/lwip/%.o: CFLAGS += -Wno-address -Wno-unused-variable -Wno-unused-but-set-variable ESPIDF_LWIP_O = $(addprefix $(ESPCOMP)/lwip/,\ - api/pppapi.o \ - api/netbuf.o \ - api/api_lib.o \ - api/netifapi.o \ - api/tcpip.o \ - api/netdb.o \ - api/err.o \ - api/api_msg.o \ - api/sockets.o \ - apps/sntp/sntp.o \ - apps/dhcpserver.o \ - core/ipv4/ip_frag.o \ - core/ipv4/dhcp.o \ - core/ipv4/ip4_addr.o \ - core/ipv4/igmp.o \ - core/ipv4/ip4.o \ - core/ipv4/autoip.o \ - core/ipv4/icmp.o \ - core/ipv6/ip6_frag.o \ - core/ipv6/dhcp6.o \ - core/ipv6/inet6.o \ - core/ipv6/ip6_addr.o \ - core/ipv6/ip6.o \ - core/ipv6/nd6.o \ - core/ipv6/mld6.o \ - core/ipv6/ethip6.o \ - core/ipv6/icmp6.o \ - core/mem.o \ - core/init.o \ - core/memp.o \ - core/sys.o \ - core/tcp_in.o \ - core/dns.o \ - core/ip.o \ - core/pbuf.o \ - core/raw.o \ - core/tcp.o \ - core/def.o \ - core/netif.o \ - core/stats.o \ - core/timers.o \ - core/inet_chksum.o \ - core/udp.o \ - core/tcp_out.o \ - netif/slipif.o \ - netif/etharp.o \ - netif/ethernet.o \ - netif/lowpan6.o \ - netif/ethernetif.o \ - netif/ppp/ppp.o \ - netif/ppp/magic.o \ - netif/ppp/lcp.o \ - netif/ppp/ipcp.o \ - netif/ppp/auth.o \ - netif/ppp/fsm.o \ - netif/ppp/ipv6cp.o \ - netif/ppp/utils.o \ - netif/ppp/vj.o \ - netif/ppp/pppos.o \ - port/freertos/sys_arch.o \ - port/netif/wlanif.o \ - port/netif/ethernetif.o \ - port/vfs_lwip.o \ + apps/dhcpserver/dhcpserver.o \ + lwip/src/api/netbuf.o \ + lwip/src/api/api_lib.o \ + lwip/src/api/netifapi.o \ + lwip/src/api/tcpip.o \ + lwip/src/api/netdb.o \ + lwip/src/api/err.o \ + lwip/src/api/api_msg.o \ + lwip/src/api/sockets.o \ + lwip/src/apps/sntp/sntp.o \ + lwip/src/core/ipv4/dhcp.o \ + lwip/src/core/ipv4/etharp.o \ + lwip/src/core/ipv4/ip4_addr.o \ + lwip/src/core/ipv4/igmp.o \ + lwip/src/core/ipv4/ip4.o \ + lwip/src/core/ipv4/autoip.o \ + lwip/src/core/ipv4/icmp.o \ + lwip/src/core/ipv6/ip6_frag.o \ + lwip/src/core/ipv6/dhcp6.o \ + lwip/src/core/ipv6/inet6.o \ + lwip/src/core/ipv6/ip6_addr.o \ + lwip/src/core/ipv6/ip6.o \ + lwip/src/core/ipv6/nd6.o \ + lwip/src/core/ipv6/mld6.o \ + lwip/src/core/ipv6/ethip6.o \ + lwip/src/core/ipv6/icmp6.o \ + lwip/src/core/mem.o \ + lwip/src/core/init.o \ + lwip/src/core/memp.o \ + lwip/src/core/sys.o \ + lwip/src/core/tcp_in.o \ + lwip/src/core/timeouts.o \ + lwip/src/core/dns.o \ + lwip/src/core/ip.o \ + lwip/src/core/pbuf.o \ + lwip/src/core/raw.o \ + lwip/src/core/tcp.o \ + lwip/src/core/def.o \ + lwip/src/core/netif.o \ + lwip/src/core/stats.o \ + lwip/src/core/inet_chksum.o \ + lwip/src/core/udp.o \ + lwip/src/core/tcp_out.o \ + lwip/src/netif/slipif.o \ + lwip/src/netif/ethernet.o \ + lwip/src/netif/lowpan6.o \ + lwip/src/netif/ethernetif.o \ + lwip/src/netif/ppp/auth.o \ + lwip/src/netif/ppp/chap-md5.o \ + lwip/src/netif/ppp/chap-new.o \ + lwip/src/netif/ppp/fsm.o \ + lwip/src/netif/ppp/ipcp.o \ + lwip/src/netif/ppp/ipv6cp.o \ + lwip/src/netif/ppp/lcp.o \ + lwip/src/netif/ppp/magic.o \ + lwip/src/netif/ppp/polarssl/md5.o \ + lwip/src/netif/ppp/ppp.o \ + lwip/src/netif/ppp/pppapi.o \ + lwip/src/netif/ppp/pppos.o \ + lwip/src/netif/ppp/upap.o \ + lwip/src/netif/ppp/utils.o \ + lwip/src/netif/ppp/vj.o \ + port/esp32/freertos/sys_arch.o \ + port/esp32/netif/ethernetif.o \ + port/esp32/netif/wlanif.o \ + port/esp32/vfs_lwip.o \ ) ESPIDF_MBEDTLS_O = $(addprefix $(ESPCOMP)/mbedtls/,\ @@ -572,6 +619,7 @@ ESPIDF_MBEDTLS_O = $(addprefix $(ESPCOMP)/mbedtls/,\ mbedtls/library/pk_wrap.o \ port/esp_bignum.o \ port/esp_hardware.o \ + port/esp_mem.o \ port/esp_sha1.o \ port/esp_sha256.o \ port/esp_sha512.o \ @@ -611,6 +659,7 @@ OBJ_ESPIDF = OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_NEWLIB_O)) OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_DRIVER_O)) OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_ESP32_O)) +OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_ESP_RINGBUF_O)) OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_HEAP_O)) OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_SOC_O)) OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_CXX_O)) @@ -635,9 +684,12 @@ OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_SPI_FLASH_O)) OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_ULP_O)) OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_WPA_SUPPLICANT_O)) +$(OBJ_ESPIDF): $(SDKCONFIG_H) + LIB_ESPIDF = LIB_ESPIDF += driver LIB_ESPIDF += esp32 +LIB_ESPIDF += esp_ringbuf LIB_ESPIDF += heap LIB_ESPIDF += soc LIB_ESPIDF += cxx @@ -677,6 +729,7 @@ endef $(eval $(call gen_espidf_lib_rule,driver,$(ESPIDF_DRIVER_O))) $(eval $(call gen_espidf_lib_rule,esp32,$(ESPIDF_ESP32_O))) +$(eval $(call gen_espidf_lib_rule,esp_ringbuf,$(ESPIDF_ESP_RINGBUF_O))) $(eval $(call gen_espidf_lib_rule,heap,$(ESPIDF_HEAP_O))) $(eval $(call gen_espidf_lib_rule,soc,$(ESPIDF_SOC_O))) $(eval $(call gen_espidf_lib_rule,cxx,$(ESPIDF_CXX_O))) @@ -704,6 +757,38 @@ $(eval $(call gen_espidf_lib_rule,wpa_supplicant,$(ESPIDF_WPA_SUPPLICANT_O))) LIB = $(foreach lib,$(LIB_ESPIDF),$(BUILD_ESPIDF_LIB)/$(lib)/lib$(lib).a) ################################################################################ +# ESP IDF ldgen + +LDGEN_FRAGMENTS = $(shell find $(ESPCOMP) -name "*.lf") +LDGEN_SECTIONS_INFO = $(foreach lib,$(LIB_ESPIDF),$(BUILD_ESPIDF_LIB)/$(lib)/lib$(lib).a.sections_info) +LDGEN_SECTION_INFOS = $(BUILD_ESPIDF_LIB)/ldgen.section_infos + +define gen_sections_info_rule +$(1).sections_info: $(1) + $(ECHO) "GEN $(1).sections_info" + $(Q)$(OBJDUMP) -h $(1) > $(1).sections_info +endef + +$(eval $(foreach lib,$(LIB_ESPIDF),$(eval $(call gen_sections_info_rule,$(BUILD_ESPIDF_LIB)/$(lib)/lib$(lib).a)))) + +$(LDGEN_SECTION_INFOS): $(LDGEN_SECTIONS_INFO) $(ESPIDF)/make/ldgen.mk + $(Q)printf "$(foreach info,$(LDGEN_SECTIONS_INFO),$(info)\n)" > $@ + +$(BUILD)/esp32.common.ld: $(ESPCOMP)/esp32/ld/esp32.common.ld.in $(LDGEN_FRAGMENTS) $(SDKCONFIG) $(LDGEN_SECTION_INFOS) + $(ECHO) "GEN $@" + $(Q)$(PYTHON) $(ESPIDF)/tools/ldgen/ldgen.py \ + --input $< \ + --output $@ \ + --config $(SDKCONFIG) \ + --kconfig $(ESPIDF)/Kconfig \ + --fragments $(LDGEN_FRAGMENTS) \ + --sections $(LDGEN_SECTION_INFOS) \ + --env "IDF_TARGET=esp32" \ + --env "IDF_CMAKE=n" \ + --env "COMPONENT_KCONFIGS=$(ESPCOMP_KCONFIGS)" \ + --env "COMPONENT_KCONFIGS_PROJBUILD=$(ESPCOMP_KCONFIGS_PROJBUILD)" + +################################################################################ # Main targets all: $(BUILD)/firmware.bin @@ -742,14 +827,14 @@ APP_LD_ARGS += $(OBJ) APP_LD_ARGS += $(LIB) APP_LD_ARGS += --end-group -$(BUILD)/esp32_out.ld: sdkconfig.h - $(Q)$(CC) -I. -C -P -x c -E $(ESPCOMP)/esp32/ld/esp32.ld -o $@ +$(BUILD)/esp32_out.ld: $(SDKCONFIG_H) + $(Q)$(CC) -I$(BUILD) -C -P -x c -E $(ESPCOMP)/esp32/ld/esp32.ld -o $@ $(BUILD)/application.bin: $(BUILD)/application.elf $(ECHO) "Create $@" $(Q)$(ESPTOOL) --chip esp32 elf2image --flash_mode $(FLASH_MODE) --flash_freq $(FLASH_FREQ) --flash_size $(FLASH_SIZE) $< -$(BUILD)/application.elf: $(OBJ) $(LIB) $(BUILD)/esp32_out.ld +$(BUILD)/application.elf: $(OBJ) $(LIB) $(BUILD)/esp32_out.ld $(BUILD)/esp32.common.ld $(ECHO) "LINK $@" $(Q)$(LD) $(LDFLAGS) -o $@ $(APP_LD_ARGS) $(Q)$(SIZE) $@ @@ -830,7 +915,10 @@ $(BOOTLOADER_LIB_DIR)/libmicro-ecc.a: $(BOOTLOADER_LIB_MICRO_ECC_OBJ) # remaining object files BOOTLOADER_OBJ = $(addprefix $(BUILD)/bootloader/$(ESPCOMP)/,\ soc/esp32/rtc_clk.o \ + soc/esp32/rtc_clk_init.o \ + soc/esp32/rtc_init.o \ soc/esp32/rtc_time.o \ + soc/esp32/rtc_wdt.o \ soc/esp32/cpu_util.o \ bootloader/subproject/main/bootloader_start.o \ ) @@ -843,6 +931,8 @@ BOOTLOADER_OBJ_ALL = \ $(BOOTLOADER_LIB_MICRO_ECC_OBJ) \ $(BOOTLOADER_OBJ) +$(BOOTLOADER_OBJ_ALL): $(SDKCONFIG_H) + BOOTLOADER_LIBS = BOOTLOADER_LIBS += -Wl,--start-group BOOTLOADER_LIBS += $(BOOTLOADER_OBJ) diff --git a/ports/esp32/README.md b/ports/esp32/README.md index 85df001e3..0e6531db8 100644 --- a/ports/esp32/README.md +++ b/ports/esp32/README.md @@ -78,7 +78,7 @@ ESPIDF = <path to root of esp-idf repository> #FLASH_MODE = qio #FLASH_SIZE = 4MB #CROSS_COMPILE = xtensa-esp32-elf- -#CONFIG_SPIRAM_SUPPORT = 1 +#SDKCONFIG = boards/sdkconfig.spiram include Makefile ``` @@ -92,6 +92,17 @@ are `PORT` for the serial port of your esp32 module, and `FLASH_MODE` (which may need to be `dio` for some modules) and `FLASH_SIZE`. See the Makefile for further information. +The default ESP IDF configuration settings are provided in the file +`boards/sdkconfig`, and this file is specified in the build by the make +variable `SDKCONFIG`. To use a custom configuration either set `SDKCONFIG` +in your custom `makefile` (or `GNUmakefile`) or set this variable on the +command line: +```bash +$ make SDKCONFIG=sdkconfig.myboard +``` +The file `boards/sdkconfig.spiram` is provided for ESP32 modules that have +external SPIRAM. + Building the firmware --------------------- diff --git a/ports/esp32/boards/sdkconfig b/ports/esp32/boards/sdkconfig new file mode 100644 index 000000000..f68102bee --- /dev/null +++ b/ports/esp32/boards/sdkconfig @@ -0,0 +1,26 @@ +# MicroPython on ESP32, ESP IDF configuration +# The following options override the defaults + +CONFIG_IDF_TARGET="esp32" + +# Application manager +CONFIG_APP_EXCLUDE_PROJECT_VER_VAR=y +CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y + +# Bootloader config +CONFIG_LOG_BOOTLOADER_LEVEL_WARN=y + +# ESP32-specific +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=n + +# FreeRTOS +CONFIG_FREERTOS_UNICORE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2 +CONFIG_SUPPORT_STATIC_ALLOCATION=y +CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK=y + +# UDP +CONFIG_PPP_SUPPORT=y +CONFIG_PPP_PAP_SUPPORT=y +CONFIG_PPP_CHAP_SUPPORT=y diff --git a/ports/esp32/boards/sdkconfig.spiram b/ports/esp32/boards/sdkconfig.spiram new file mode 100644 index 000000000..63908f4b0 --- /dev/null +++ b/ports/esp32/boards/sdkconfig.spiram @@ -0,0 +1,27 @@ +# MicroPython on ESP32, ESP IDF configuration with SPIRAM support +# The following options override the defaults + +CONFIG_IDF_TARGET="esp32" + +# Application manager +CONFIG_APP_EXCLUDE_PROJECT_VER_VAR=y +CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y + +# Bootloader config +CONFIG_LOG_BOOTLOADER_LEVEL_WARN=y + +# ESP32-specific +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_SPIRAM_SUPPORT=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=n + +# FreeRTOS +CONFIG_FREERTOS_UNICORE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2 +CONFIG_SUPPORT_STATIC_ALLOCATION=y +CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK=y + +# UDP +CONFIG_PPP_SUPPORT=y +CONFIG_PPP_PAP_SUPPORT=y +CONFIG_PPP_CHAP_SUPPORT=y diff --git a/ports/esp32/network_ppp.c b/ports/esp32/network_ppp.c index 27dd5e043..da821478b 100644 --- a/ports/esp32/network_ppp.c +++ b/ports/esp32/network_ppp.c @@ -40,7 +40,7 @@ #include "lwip/sys.h" #include "lwip/netdb.h" #include "lwip/dns.h" -#include "lwip/pppapi.h" +#include "netif/ppp/pppapi.h" typedef struct _ppp_if_obj_t { mp_obj_base_t base; diff --git a/ports/esp32/sdkconfig.h b/ports/esp32/sdkconfig.h deleted file mode 100644 index ba2930bca..000000000 --- a/ports/esp32/sdkconfig.h +++ /dev/null @@ -1,193 +0,0 @@ -/* Start bootloader config */ -#define CONFIG_FLASHMODE_DIO 1 -#define CONFIG_ESPTOOLPY_FLASHFREQ_40M 1 -/* End bootloader config */ - -#define CONFIG_TRACEMEM_RESERVE_DRAM 0x0 -#define CONFIG_BT_RESERVE_DRAM 0x0 -#define CONFIG_ULP_COPROC_RESERVE_MEM 2040 -#define CONFIG_PHY_DATA_OFFSET 0xf000 -#define CONFIG_APP_OFFSET 0x10000 - -#define CONFIG_SPI_FLASH_ROM_DRIVER_PATCH 1 -#define CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS 1 -#define CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS 4 - -#define CONFIG_BROWNOUT_DET 1 -#define CONFIG_BROWNOUT_DET_LVL 0 -#define CONFIG_BROWNOUT_DET_LVL_SEL_0 1 - -#define CONFIG_TCPIP_TASK_STACK_SIZE 2560 -#define CONFIG_TCPIP_RECVMBOX_SIZE 32 - -#define CONFIG_ESP32_APPTRACE_DEST_NONE 1 -#define CONFIG_ESP32_PHY_MAX_TX_POWER 20 -#define CONFIG_ESP32_PANIC_PRINT_REBOOT 1 -#define CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC 1 -#define CONFIG_ESP32_RTC_XTAL_BOOTSTRAP_CYCLES 100 -#define CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1 1 -#define CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ 240 -#define CONFIG_ESP32_DEFAULT_CPU_FREQ_240 1 -#define CONFIG_ESP32_DEBUG_OCDAWARE 1 -#define CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY 2000 -#define CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE 1 -#define CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE 1 -#define CONFIG_ESP32_WIFI_AMPDU_ENABLED 1 -#define CONFIG_ESP32_WIFI_NVS_ENABLED 1 -#define CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM 10 -#define CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM 0 -#define CONFIG_ESP32_WIFI_TX_BUFFER_TYPE 1 -#define CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER 1 -#define CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM 32 -#define CONFIG_ESP32_WIFI_RX_BA_WIN 6 -#define CONFIG_ESP32_WIFI_TX_BA_WIN 6 -#define CONFIG_ESP32_XTAL_FREQ_AUTO 1 -#define CONFIG_ESP32_XTAL_FREQ 0 -#define CONFIG_ESP32_RTC_CLK_CAL_CYCLES 1024 -#define CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT 5 -#define CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT 2048 - -#if CONFIG_SPIRAM_SUPPORT -#define CONFIG_SPIRAM_TYPE_ESPPSRAM32 1 -#define CONFIG_SPIRAM_SIZE 4194304 -#define CONFIG_SPIRAM_SPEED_40M 1 -#define CONFIG_SPIRAM_CACHE_WORKAROUND 1 -#define CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL 16384 -#define CONFIG_SPIRAM_BOOT_INIT 1 -#define CONFIG_SPIRAM_MEMTEST 1 -#define CONFIG_SPIRAM_USE_MALLOC 1 -#define CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL 32768 -#define CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY 0 -#endif - -#define CONFIG_FOUR_MAC_ADDRESS_FROM_EFUSE 1 -#define CONFIG_DMA_RX_BUF_NUM 10 -#define CONFIG_DMA_TX_BUF_NUM 10 -#define CONFIG_EMAC_TASK_PRIORITY 20 - -#define CONFIG_INT_WDT 1 -#define CONFIG_INT_WDT_TIMEOUT_MS 300 -#define CONFIG_INT_WDT_CHECK_CPU1 0 -#define CONFIG_TASK_WDT 1 -#define CONFIG_TASK_WDT_PANIC 1 -#define CONFIG_TASK_WDT_TIMEOUT_S 5 -#define CONFIG_TASK_WDT_CHECK_IDLE_TASK 0 -#define CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1 0 - -#define CONFIG_FREERTOS_UNICORE 1 -#define CONFIG_FREERTOS_CORETIMER_0 1 -#define CONFIG_FREERTOS_HZ 100 -#define CONFIG_FREERTOS_ASSERT_FAIL_ABORT 1 -#define CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION 1 -#define CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE 1 -#define CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS 2 -#define CONFIG_FREERTOS_IDLE_TASK_STACKSIZE 1024 -#define CONFIG_FREERTOS_ISR_STACKSIZE 1536 -#define CONFIG_FREERTOS_BREAK_ON_SCHEDULER_START_JTAG 1 -#define CONFIG_FREERTOS_MAX_TASK_NAME_LEN 16 -#define CONFIG_SUPPORT_STATIC_ALLOCATION 1 -#define CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK 1 - -#define CONFIG_MAIN_TASK_STACK_SIZE 4096 -#define CONFIG_IPC_TASK_STACK_SIZE 1024 -#define CONFIG_BTC_TASK_STACK_SIZE 3072 -#define CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE 4096 -#define CONFIG_SYSTEM_EVENT_QUEUE_SIZE 32 -#define CONFIG_TIMER_TASK_STACK_SIZE 4096 -#define CONFIG_TIMER_TASK_PRIORITY 1 -#define CONFIG_TIMER_TASK_STACK_DEPTH 2048 -#define CONFIG_TIMER_QUEUE_LENGTH 10 - -#define CONFIG_NEWLIB_STDIN_LINE_ENDING_CR 1 -#define CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF 1 -#define CONFIG_PHY_ENABLED 1 -#define CONFIG_WIFI_ENABLED 1 -#define CONFIG_OPTIMIZATION_LEVEL_DEBUG 1 -#define CONFIG_MEMMAP_SMP 1 - -#define CONFIG_PARTITION_TABLE_OFFSET 0x8000 -#define CONFIG_PARTITION_TABLE_SINGLE_APP 1 -#define CONFIG_PARTITION_TABLE_FILENAME "partitions_singleapp.csv" -#define CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET 0x10000 -#define CONFIG_PARTITION_TABLE_CUSTOM_FILENAME "partitions.csv" - -#define CONFIG_CONSOLE_UART_BAUDRATE 115200 -#define CONFIG_CONSOLE_UART_NUM 0 -#define CONFIG_CONSOLE_UART_DEFAULT 1 - -#define CONFIG_LOG_DEFAULT_LEVEL_INFO 1 -#define CONFIG_LOG_BOOTLOADER_LEVEL_WARN 1 -#define CONFIG_LOG_DEFAULT_LEVEL 3 -#define CONFIG_LOG_COLORS 1 -#define CONFIG_LOG_BOOTLOADER_LEVEL 2 - -#define CONFIG_LWIP_THREAD_LOCAL_STORAGE_INDEX 0 -#define CONFIG_LWIP_DHCP_DOES_ARP_CHECK 1 -#define CONFIG_LWIP_DHCP_MAX_NTP_SERVERS 1 -#define CONFIG_LWIP_DHCPS_LEASE_UNIT 60 -#define CONFIG_LWIP_DHCPS_MAX_STATION_NUM 8 -#define CONFIG_LWIP_MAX_ACTIVE_TCP 16 -#define CONFIG_LWIP_MAX_SOCKETS 8 -#define CONFIG_LWIP_SO_REUSE 1 -#define CONFIG_LWIP_ETHARP_TRUST_IP_MAC 1 -#define CONFIG_PPP_SUPPORT 1 -#define CONFIG_IP_LOST_TIMER_INTERVAL 120 -#define CONFIG_UDP_RECVMBOX_SIZE 6 -#define CONFIG_TCP_MAXRTX 12 -#define CONFIG_TCP_SYNMAXRTX 6 -#define CONFIG_TCP_MSL 60000 -#define CONFIG_TCP_MSS 1436 -#define CONFIG_TCP_SND_BUF_DEFAULT 5744 -#define CONFIG_TCP_WND_DEFAULT 5744 -#define CONFIG_TCP_QUEUE_OOSEQ 1 -#define CONFIG_TCP_OVERSIZE_MSS 1 -#define CONFIG_TCP_RECVMBOX_SIZE 6 - -#define CONFIG_MBEDTLS_AES_C 1 -#define CONFIG_MBEDTLS_CCM_C 1 -#define CONFIG_MBEDTLS_ECDH_C 1 -#define CONFIG_MBEDTLS_ECDSA_C 1 -#define CONFIG_MBEDTLS_ECP_C 1 -#define CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED 1 -#define CONFIG_MBEDTLS_ECP_NIST_OPTIM 1 -#define CONFIG_MBEDTLS_GCM_C 1 -#define CONFIG_MBEDTLS_HARDWARE_AES 1 -#define CONFIG_MBEDTLS_HAVE_TIME 1 -#define CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA 1 -#define CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA 1 -#define CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA 1 -#define CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA 1 -#define CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA 1 -#define CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE 1 -#define CONFIG_MBEDTLS_KEY_EXCHANGE_RSA 1 -#define CONFIG_MBEDTLS_PEM_PARSE_C 1 -#define CONFIG_MBEDTLS_PEM_WRITE_C 1 -#define CONFIG_MBEDTLS_RC4_DISABLED 1 -#define CONFIG_MBEDTLS_SSL_ALPN 1 -#define CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN 16384 -#define CONFIG_MBEDTLS_SSL_PROTO_TLS1 1 -#define CONFIG_MBEDTLS_SSL_PROTO_TLS1_1 1 -#define CONFIG_MBEDTLS_SSL_PROTO_TLS1_2 1 -#define CONFIG_MBEDTLS_SSL_RENEGOTIATION 1 -#define CONFIG_MBEDTLS_SSL_SESSION_TICKETS 1 -#define CONFIG_MBEDTLS_TLS_CLIENT 1 -#define CONFIG_MBEDTLS_TLS_ENABLED 1 -#define CONFIG_MBEDTLS_TLS_SERVER 1 -#define CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT 1 -#define CONFIG_MBEDTLS_X509_CRL_PARSE_C 1 -#define CONFIG_MBEDTLS_X509_CSR_PARSE_C 1 - -#define CONFIG_MAKE_WARN_UNDEFINED_VARIABLES 1 -#define CONFIG_TOOLPREFIX "xtensa-esp32-elf-" -#define CONFIG_PYTHON "python2" |