Skip to content
This repository was archived by the owner on Sep 6, 2023. It is now read-only.

Commit f0561ab

Browse files
committed
esp32: Update to latest ESP IDF.
Seems to be a lot of internal changes and bug fixes in the IDF. The mbedtls configuration is updated to reflect default settings from the IDF. The biggest noticeable change is that the firmware size has decreased by about 184000 bytes.
1 parent 14fb53e commit f0561ab

File tree

4 files changed

+109
-33
lines changed

4 files changed

+109
-33
lines changed

ports/esp32/Makefile

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ ESPCOMP = $(ESPIDF)/components
2929
ESPTOOL ?= $(ESPCOMP)/esptool_py/esptool/esptool.py
3030

3131
# verify the ESP IDF version
32-
ESPIDF_SUPHASH := 4ec2abbf23084ac060679e4136fa222a2d0ab0e8
32+
ESPIDF_SUPHASH := 9a26296a0e88a4c3ae27e9c848be970946fff87e
3333
ESPIDF_CURHASH := $(shell git -C $(ESPIDF) show -s --pretty=format:'%H')
3434
ifneq ($(ESPIDF_CURHASH),$(ESPIDF_SUPHASH))
3535
$(info ** WARNING **)
@@ -93,9 +93,14 @@ CXXFLAGS = -std=gnu++11 -fno-exceptions -fno-rtti -ffunction-sections -fdata-sec
9393

9494
LDFLAGS = -nostdlib -Map=$(@:.elf=.map) --cref
9595
LDFLAGS += --gc-sections -static -EL
96-
LDFLAGS += -u call_user_start_cpu0 -u uxTopUsedPriority
96+
LDFLAGS += -u call_user_start_cpu0 -u uxTopUsedPriority -u ld_include_panic_highint_hdl
9797
LDFLAGS += -u __cxa_guard_dummy # so that implementation of static guards is taken from cxx_guards.o instead of libstdc++.a
98-
LDFLAGS += -L$(ESPCOMP)/esp32/ld -T $(BUILD)/esp32_out.ld -T ./esp32.custom_common.ld -T esp32.rom.ld -T esp32.rom.spiflash.ld -T esp32.peripherals.ld
98+
LDFLAGS += -L$(ESPCOMP)/esp32/ld
99+
LDFLAGS += -T $(BUILD)/esp32_out.ld
100+
LDFLAGS += -T ./esp32.custom_common.ld
101+
LDFLAGS += -T esp32.rom.ld
102+
LDFLAGS += -T esp32.rom.spiram_incompatible_fns.ld
103+
LDFLAGS += -T esp32.peripherals.ld
99104

100105
LIBGCC_FILE_NAME = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
101106
LIBSTDCXX_FILE_NAME = $(shell $(CXX) $(CXXFLAGS) -print-file-name=libstdc++.a)
@@ -209,15 +214,18 @@ ESPIDF_DRIVER_O = $(addprefix $(ESPCOMP)/driver/,\
209214
$(BUILD)/$(ESPCOMP)/esp32/dport_access.o: CFLAGS += -Wno-array-bounds
210215
ESPIDF_ESP32_O = $(addprefix $(ESPCOMP)/esp32/,\
211216
panic.o \
217+
esp_timer.o \
218+
esp_timer_esp32.o \
219+
ets_timer_legacy.o \
212220
event_default_handlers.o \
221+
fast_crypto_ops.o \
213222
task_wdt.o \
214223
cache_err_int.o \
215224
clk.o \
216225
core_dump.o \
217226
cpu_start.o \
218227
gdbstub.o \
219228
crosscore_int.o \
220-
deep_sleep.o \
221229
ipc.o \
222230
int_wdt.o \
223231
event_loop.o \
@@ -230,6 +238,7 @@ ESPIDF_ESP32_O = $(addprefix $(ESPCOMP)/esp32/,\
230238
phy_init.o \
231239
intr_alloc.o \
232240
dport_access.o \
241+
wifi_init.o \
233242
)
234243

235244
ESPIDF_HEAP_O = $(addprefix $(ESPCOMP)/heap/,\
@@ -269,6 +278,10 @@ ESPIDF_EXPAT_O = $(addprefix $(ESPCOMP)/expat/,\
269278
port/chardata.o \
270279
)
271280

281+
ESPIDF_PTHREAD_O = $(addprefix $(ESPCOMP)/pthread/,\
282+
pthread.o \
283+
)
284+
272285
# Assembler .S files need only basic flags, and in particular should not have
273286
# -Os because that generates subtly different code.
274287
# We also need custom CFLAGS for .c files because FreeRTOS has headers with
@@ -295,6 +308,7 @@ ESPIDF_FREERTOS_O = $(addprefix $(ESPCOMP)/freertos/,\
295308
xtensa_intr_asm.o \
296309
xtensa_intr.o \
297310
xtensa_overlay_os_hook.o \
311+
xtensa_vector_defaults.o \
298312
xtensa_vectors.o \
299313
)
300314

@@ -436,7 +450,6 @@ ESPIDF_LWIP_O = $(addprefix $(ESPCOMP)/lwip/,\
436450

437451
ESPIDF_MBEDTLS_O = $(addprefix $(ESPCOMP)/mbedtls/,\
438452
library/entropy.o \
439-
library/net.o \
440453
library/pkcs12.o \
441454
library/ccm.o \
442455
library/pk.o \
@@ -505,7 +518,6 @@ ESPIDF_MBEDTLS_O = $(addprefix $(ESPCOMP)/mbedtls/,\
505518
library/ctr_drbg.o \
506519
library/x509write_crt.o \
507520
library/pk_wrap.o \
508-
port/net.o \
509521
port/esp_bignum.o \
510522
port/esp_hardware.o \
511523
port/esp_sha1.o \
@@ -536,6 +548,10 @@ ESPIDF_WPA_SUPPLICANT_O = $(addprefix $(ESPCOMP)/wpa_supplicant/,\
536548
src/crypto/bignum.o \
537549
src/crypto/crypto_internal-modexp.o \
538550
src/crypto/crypto_internal-cipher.o \
551+
src/fast_crypto/fast_aes-unwrap.o \
552+
src/fast_crypto/fast_aes-wrap.o \
553+
src/fast_crypto/fast_sha256.o \
554+
src/fast_crypto/fast_sha256-internal.o \
539555
port/os_xtensa.o \
540556
)
541557

@@ -548,6 +564,7 @@ OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_SOC_O))
548564
OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_CXX_O))
549565
OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_ETHERNET_O))
550566
OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_EXPAT_O))
567+
OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_PTHREAD_O))
551568
OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_FREERTOS_O))
552569
OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_VFS_O))
553570
OBJ_ESPIDF += $(addprefix $(BUILD)/, $(ESPIDF_JSON_O))
@@ -636,6 +653,7 @@ $(BUILD)/bootloader/$(ESPCOMP)/%.o: CFLAGS += -DBOOTLOADER_BUILD=1 -I$(ESPCOMP)/
636653
BOOTLOADER_OBJ = $(addprefix $(BUILD)/bootloader/$(ESPCOMP)/,\
637654
bootloader_support/src/bootloader_flash.o \
638655
bootloader_support/src/bootloader_random.o \
656+
bootloader_support/src/bootloader_sha.o \
639657
bootloader_support/src/secure_boot_signatures.o \
640658
bootloader_support/src/secure_boot.o \
641659
bootloader_support/src/esp_image_format.o \
@@ -646,7 +664,7 @@ BOOTLOADER_OBJ = $(addprefix $(BUILD)/bootloader/$(ESPCOMP)/,\
646664
soc/esp32/rtc_clk.o \
647665
soc/esp32/rtc_time.o \
648666
micro-ecc/micro-ecc/uECC.o \
649-
bootloader/src/main/bootloader_start.o \
667+
bootloader/subproject/main/bootloader_start.o \
650668
)
651669

652670
BOOTLOADER_LIBS =
@@ -665,10 +683,10 @@ BOOTLOADER_LDFLAGS += -Wl,--gc-sections
665683
BOOTLOADER_LDFLAGS += -static
666684
BOOTLOADER_LDFLAGS += -Wl,-EL
667685
BOOTLOADER_LDFLAGS += -Wl,-Map=$(@:.elf=.map) -Wl,--cref
668-
BOOTLOADER_LDFLAGS += -T $(ESPCOMP)/bootloader/src/main/esp32.bootloader.ld
669-
BOOTLOADER_LDFLAGS += -T $(ESPCOMP)/bootloader/src/main/esp32.bootloader.rom.ld
686+
BOOTLOADER_LDFLAGS += -T $(ESPCOMP)/bootloader/subproject/main/esp32.bootloader.ld
687+
BOOTLOADER_LDFLAGS += -T $(ESPCOMP)/bootloader/subproject/main/esp32.bootloader.rom.ld
670688
BOOTLOADER_LDFLAGS += -T $(ESPCOMP)/esp32/ld/esp32.rom.ld
671-
BOOTLOADER_LDFLAGS += -T $(ESPCOMP)/esp32/ld/esp32.rom.spiflash.ld
689+
BOOTLOADER_LDFLAGS += -T $(ESPCOMP)/esp32/ld/esp32.rom.spiram_incompatible_fns.ld
672690

673691
BOOTLOADER_OBJ_DIRS = $(sort $(dir $(BOOTLOADER_OBJ)))
674692
$(BOOTLOADER_OBJ): | $(BOOTLOADER_OBJ_DIRS)

ports/esp32/esp32.custom_common.ld

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,18 @@ SECTIONS
8383
_iram_text_start = ABSOLUTE(.);
8484
*(.iram1 .iram1.*)
8585
*freertos/*(.literal .text .literal.* .text.*)
86+
*heap/multi_heap.o(.literal .text .literal.* .text.*)
87+
*heap/multi_heap_poisoning.o(.literal .text .literal.* .text.*)
8688
*esp32/panic.o(.literal .text .literal.* .text.*)
8789
*esp32/core_dump.o(.literal .text .literal.* .text.*)
88-
*esp32/heap_alloc_caps.o(.literal .text .literal.* .text.*)
90+
*app_trace/*(.literal .text .literal.* .text.*)
91+
*xtensa-debug-module/eri.o(.literal .text .literal.* .text.*)
8992
*esp32/app_trace.o(.literal .text .literal.* .text.*)
9093
*libphy.a:(.literal .text .literal.* .text.*)
9194
*librtc.a:(.literal .text .literal.* .text.*)
9295
*libsoc.a:(.literal .text .literal.* .text.*)
9396
*libhal.a:(.literal .text .literal.* .text.*)
97+
*libgcc.a:lib2funcs.o(.literal .text .literal.* .text.*)
9498
*spi_flash/spi_flash_rom_patch.o(.literal .text .literal.* .text.*)
9599
*py/scheduler.o*(.literal .text .literal.* .text.*)
96100
_iram_text_end = ABSOLUTE(.);
@@ -99,21 +103,23 @@ SECTIONS
99103
.dram0.data :
100104
{
101105
_data_start = ABSOLUTE(.);
102-
KEEP(*(.data))
103-
KEEP(*(.data.*))
104-
KEEP(*(.gnu.linkonce.d.*))
105-
KEEP(*(.data1))
106-
KEEP(*(.sdata))
107-
KEEP(*(.sdata.*))
108-
KEEP(*(.gnu.linkonce.s.*))
109-
KEEP(*(.sdata2))
110-
KEEP(*(.sdata2.*))
111-
KEEP(*(.gnu.linkonce.s2.*))
112-
KEEP(*(.jcr))
106+
*(.data)
107+
*(.data.*)
108+
*(.gnu.linkonce.d.*)
109+
*(.data1)
110+
*(.sdata)
111+
*(.sdata.*)
112+
*(.gnu.linkonce.s.*)
113+
*(.sdata2)
114+
*(.sdata2.*)
115+
*(.gnu.linkonce.s2.*)
116+
*(.jcr)
113117
*(.dram1 .dram1.*)
114118
*esp32/panic.o(.rodata .rodata.*)
115-
*esp32/app_trace.o(.rodata .rodata.*)
116119
*libphy.a:(.rodata .rodata.*)
120+
*app_trace/app_trace.o:(.rodata .rodata.*)
121+
*heap/multi_heap.o(.rodata .rodata.*)
122+
*heap/multi_heap_poisoning.o(.rodata .rodata.*)
117123
_data_end = ABSOLUTE(.);
118124
. = ALIGN(4);
119125
} >dram0_0_seg
@@ -152,11 +158,13 @@ SECTIONS
152158
*(.rodata1)
153159
__XT_EXCEPTION_TABLE_ = ABSOLUTE(.);
154160
*(.xt_except_table)
155-
*(.gcc_except_table)
161+
*(.gcc_except_table .gcc_except_table.*)
156162
*(.gnu.linkonce.e.*)
157163
*(.gnu.version_r)
158-
*(.eh_frame)
159164
. = (. + 3) & ~ 3;
165+
__eh_frame = ABSOLUTE(.);
166+
KEEP(*(.eh_frame))
167+
. = (. + 7) & ~ 3;
160168
/* C++ constructor and destructor tables, properly ordered: */
161169
__init_array_start = ABSOLUTE(.);
162170
KEEP (*crtbegin.o(.ctors))

ports/esp32/machine_adc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ STATIC void madc_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_
8181

8282
STATIC mp_obj_t madc_read(mp_obj_t self_in) {
8383
madc_obj_t *self = self_in;
84-
int val = adc1_get_voltage(self->adc1_id);
84+
int val = adc1_get_raw(self->adc1_id);
8585
if (val == -1) mp_raise_ValueError("Parameter Error");
8686
return MP_OBJ_NEW_SMALL_INT(val);
8787
}

ports/esp32/sdkconfig.h

Lines changed: 57 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#define CONFIG_TCPIP_TASK_STACK_SIZE 2560
1212

1313
#define CONFIG_ESP32_APPTRACE_DEST_NONE 1
14-
#define CONFIG_ESP32_PHY_AUTO_INIT 1
1514
#define CONFIG_ESP32_PHY_MAX_TX_POWER 20
1615
#define CONFIG_ESP32_PANIC_PRINT_REBOOT 1
1716
#define CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC 1
@@ -29,12 +28,18 @@
2928
#define CONFIG_ESP32_WIFI_TX_BUFFER_TYPE 1
3029
#define CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER 1
3130
#define CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM 32
31+
#define CONFIG_ESP32_WIFI_RX_BA_WIN 6
32+
#define CONFIG_ESP32_WIFI_TX_BA_WIN 6
3233
#define CONFIG_ESP32_XTAL_FREQ_AUTO 1
3334
#define CONFIG_ESP32_XTAL_FREQ 0
3435
#define CONFIG_ESP32_RTC_CLK_CAL_CYCLES 1024
36+
#define CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT 5
37+
#define CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT 2048
3538

3639
#define CONFIG_FOUR_MAC_ADDRESS_FROM_EFUSE 1
37-
#define CONFIG_NUMBER_OF_MAC_ADDRESS_GENERATED_FROM_EFUSE 4
40+
#define CONFIG_DMA_RX_BUF_NUM 10
41+
#define CONFIG_DMA_TX_BUF_NUM 10
42+
#define CONFIG_EMAC_TASK_PRIORITY 20
3843

3944
#define CONFIG_INT_WDT 1
4045
#define CONFIG_INT_WDT_TIMEOUT_MS 300
@@ -63,11 +68,13 @@
6368
#define CONFIG_BTC_TASK_STACK_SIZE 3072
6469
#define CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE 4096
6570
#define CONFIG_SYSTEM_EVENT_QUEUE_SIZE 32
71+
#define CONFIG_TIMER_TASK_STACK_SIZE 4096
6672
#define CONFIG_TIMER_TASK_PRIORITY 1
6773
#define CONFIG_TIMER_TASK_STACK_DEPTH 2048
6874
#define CONFIG_TIMER_QUEUE_LENGTH 10
6975

70-
#define CONFIG_NEWLIB_STDOUT_ADDCR 1
76+
#define CONFIG_NEWLIB_STDIN_LINE_ENDING_CR 1
77+
#define CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF 1
7178
#define CONFIG_PHY_ENABLED 1
7279
#define CONFIG_WIFI_ENABLED 1
7380
#define CONFIG_OPTIMIZATION_LEVEL_DEBUG 1
@@ -93,20 +100,63 @@
93100
#define CONFIG_LWIP_DHCP_MAX_NTP_SERVERS 1
94101
#define CONFIG_LWIP_MAX_SOCKETS 8
95102
#define CONFIG_LWIP_SO_REUSE 1
103+
#define CONFIG_IP_LOST_TIMER_INTERVAL 120
104+
#define CONFIG_UDP_RECVMBOX_SIZE 6
96105
#define CONFIG_TCP_MAXRTX 12
97106
#define CONFIG_TCP_SYNMAXRTX 6
107+
#define CONFIG_TCP_MSL 60000
98108
#define CONFIG_TCP_MSS 1436
99109
#define CONFIG_TCP_SND_BUF_DEFAULT 5744
100110
#define CONFIG_TCP_WND_DEFAULT 5744
101111
#define CONFIG_TCP_QUEUE_OOSEQ 1
102112
#define CONFIG_TCP_OVERSIZE_MSS 1
113+
#define CONFIG_TCP_RECVMBOX_SIZE 6
103114

115+
#define CONFIG_MBEDTLS_AES_C 1
116+
#define CONFIG_MBEDTLS_CCM_C 1
117+
#define CONFIG_MBEDTLS_ECDH_C 1
118+
#define CONFIG_MBEDTLS_ECDSA_C 1
119+
#define CONFIG_MBEDTLS_ECP_C 1
120+
#define CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED 1
121+
#define CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED 1
122+
#define CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED 1
123+
#define CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED 1
124+
#define CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED 1
125+
#define CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED 1
126+
#define CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED 1
127+
#define CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED 1
128+
#define CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED 1
129+
#define CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED 1
130+
#define CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED 1
131+
#define CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED 1
132+
#define CONFIG_MBEDTLS_ECP_NIST_OPTIM 1
133+
#define CONFIG_MBEDTLS_GCM_C 1
104134
#define CONFIG_MBEDTLS_HARDWARE_AES 1
105-
#define CONFIG_MBEDTLS_HARDWARE_MPI 1
106-
#define CONFIG_MBEDTLS_HARDWARE_SHA 1
107-
#define CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN 16384
108-
#define CONFIG_MBEDTLS_MPI_USE_INTERRUPT 1
109135
#define CONFIG_MBEDTLS_HAVE_TIME 1
136+
#define CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA 1
137+
#define CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA 1
138+
#define CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA 1
139+
#define CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA 1
140+
#define CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA 1
141+
#define CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE 1
142+
#define CONFIG_MBEDTLS_KEY_EXCHANGE_RSA 1
143+
#define CONFIG_MBEDTLS_PEM_PARSE_C 1
144+
#define CONFIG_MBEDTLS_PEM_WRITE_C 1
145+
#define CONFIG_MBEDTLS_RC4_DISABLED 1
146+
#define CONFIG_MBEDTLS_SSL_ALPN 1
147+
#define CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN 16384
148+
#define CONFIG_MBEDTLS_SSL_PROTO_TLS1 1
149+
#define CONFIG_MBEDTLS_SSL_PROTO_TLS1_1 1
150+
#define CONFIG_MBEDTLS_SSL_PROTO_TLS1_2 1
151+
#define CONFIG_MBEDTLS_SSL_RENEGOTIATION 1
152+
#define CONFIG_MBEDTLS_SSL_SESSION_TICKETS 1
153+
#define CONFIG_MBEDTLS_TLS_CLIENT 1
154+
#define CONFIG_MBEDTLS_TLS_ENABLED 1
155+
#define CONFIG_MBEDTLS_TLS_SERVER 1
156+
#define CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT 1
157+
#define CONFIG_MBEDTLS_X509_CRL_PARSE_C 1
158+
#define CONFIG_MBEDTLS_X509_CSR_PARSE_C 1
110159

160+
#define CONFIG_MAKE_WARN_UNDEFINED_VARIABLES 1
111161
#define CONFIG_TOOLPREFIX "xtensa-esp32-elf-"
112162
#define CONFIG_PYTHON "python2"

0 commit comments

Comments
 (0)