From d6547595d70f8da8923418153bdf834b508dd26e Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 13 Aug 2018 17:38:37 +0300 Subject: [PATCH 1/6] bt: build unit tests only when CONFIG_BT_ENABLED=1 --- components/bt/test/component.mk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/bt/test/component.mk b/components/bt/test/component.mk index 5dd172bdb..55e05e423 100644 --- a/components/bt/test/component.mk +++ b/components/bt/test/component.mk @@ -1,5 +1,5 @@ -# -#Component Makefile -# - +ifdef CONFIG_BT_ENABLED COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive +else +COMPONENT_CONFIG_ONLY := 1 +endif From b7fde00aed9238e04113b3d43b45967143985edc Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 6 Sep 2018 18:31:17 +0800 Subject: [PATCH 2/6] sleep: keep RTC_SLOW_MEM powered on if RTC_NOINIT is used MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes a bug that if application uses RTC_NOINIT variables but doesn’t use RTC_DATA variables, then RTC_NOINIT variables loose their values after deep sleep. Reported in https://esp32.com/viewtopic.php?f=2&t=7045&p=30301#p30299 --- components/esp32/sleep_modes.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/components/esp32/sleep_modes.c b/components/esp32/sleep_modes.c index f4cefb98b..aa1d1658a 100644 --- a/components/esp32/sleep_modes.c +++ b/components/esp32/sleep_modes.c @@ -607,11 +607,15 @@ static uint32_t get_power_down_flags() // RTC_SLOW_MEM is Auto, keep it powered up as well. // These labels are defined in the linker script: - extern int _rtc_data_start, _rtc_data_end, _rtc_bss_start, _rtc_bss_end; + extern int _rtc_data_start, _rtc_data_end, + _rtc_bss_start, _rtc_bss_end, + _rtc_noinit_start, _rtc_noinit_end; if ((s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] == ESP_PD_OPTION_AUTO) && - (&_rtc_data_end > &_rtc_data_start || &_rtc_bss_end > &_rtc_bss_start || - (s_config.wakeup_triggers & RTC_ULP_TRIG_EN))) { + (&_rtc_data_end > &_rtc_data_start || + &_rtc_bss_end > &_rtc_bss_start || + &_rtc_noinit_end > &_rtc_noinit_start || + (s_config.wakeup_triggers & RTC_ULP_TRIG_EN))) { s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] = ESP_PD_OPTION_ON; } From 75fcd062e8bfea7e97317a4b31dc51af796ff135 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 19 Sep 2018 11:34:34 +0800 Subject: [PATCH 3/6] esp32: abort when running on single core chip in dual core mode Ref. https://esp32.com/viewtopic.php?f=2&t=7307 --- components/esp32/cpu_start.c | 6 ++++++ docs/en/get-started-cmake/index.rst | 5 +++++ docs/en/get-started/index.rst | 5 +++++ docs/zh_CN/get-started/index.rst | 4 ++++ 4 files changed, 20 insertions(+) diff --git a/components/esp32/cpu_start.c b/components/esp32/cpu_start.c index 4d907f333..abe142a4f 100644 --- a/components/esp32/cpu_start.c +++ b/components/esp32/cpu_start.c @@ -29,6 +29,7 @@ #include "soc/io_mux_reg.h" #include "soc/rtc_cntl_reg.h" #include "soc/timer_group_reg.h" +#include "soc/efuse_reg.h" #include "driver/rtc_io.h" @@ -163,6 +164,11 @@ void IRAM_ATTR call_start_cpu0() ESP_EARLY_LOGI(TAG, "Pro cpu up."); #if !CONFIG_FREERTOS_UNICORE + if (REG_GET_BIT(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_DIS_APP_CPU)) { + ESP_EARLY_LOGE(TAG, "Running on single core chip, but application is built with dual core support."); + ESP_EARLY_LOGE(TAG, "Please enable CONFIG_FREERTOS_UNICORE option in menuconfig."); + abort(); + } ESP_EARLY_LOGI(TAG, "Starting app cpu, entry point is %p", call_start_cpu1); //Flush and enable icache for APP CPU Cache_Flush(1); diff --git a/docs/en/get-started-cmake/index.rst b/docs/en/get-started-cmake/index.rst index 8b3318a40..ab4557f54 100644 --- a/docs/en/get-started-cmake/index.rst +++ b/docs/en/get-started-cmake/index.rst @@ -248,6 +248,11 @@ Here are couple of tips on navigation and use of ``menuconfig``: * Pressing ``?`` while highlighting a configuration item displays help about that item. * Type ``/`` to search the configuration items. +.. attention:: + + When using ESP32-DevKitC board with ESP32-SOLO-1 module, enable single core mode (:envvar:`CONFIG_FREERTOS_UNICORE`) in menuconfig before flashing example applications. + + .. _get-started-build-cmake: Build The Project diff --git a/docs/en/get-started/index.rst b/docs/en/get-started/index.rst index 188b6938d..9d5dddad4 100644 --- a/docs/en/get-started/index.rst +++ b/docs/en/get-started/index.rst @@ -204,6 +204,11 @@ Here are couple of tips on navigation and use of ``menuconfig``: If you are **Arch Linux** user, navigate to ``SDK tool configuration`` and change the name of ``Python 2 interpreter`` from ``python`` to ``python2``. +.. attention:: + + When using ESP32-DevKitC board with ESP32-SOLO-1 module, enable single core mode (:envvar:`CONFIG_FREERTOS_UNICORE`) in menuconfig before flashing example applications. + + .. _get-started-build-flash: Build and Flash diff --git a/docs/zh_CN/get-started/index.rst b/docs/zh_CN/get-started/index.rst index 043569da5..e585f74c2 100644 --- a/docs/zh_CN/get-started/index.rst +++ b/docs/zh_CN/get-started/index.rst @@ -200,6 +200,10 @@ ESP-IDF 的 :idf:`examples` 目录下有一系列示例工程,都可以按照 如果你是 **Arch Linux** 用户,需要进入 ``SDK tool configuration`` 将 ``Python 2 interpreter`` 从 ``python`` 修改为 ``python2``。 +.. attention:: + + 如果 ESP32-DevKitC 板载的是 ESP32-SOLO-1 模组,请务必在烧写示例程序之前在 menuconfig 中使能单核模式(:envvar:`CONFIG_FREERTOS_UNICORE`)。 + .. _get-started-build-flash: From 9ad19e8122930034da97b8e15d32d3a3124d23c0 Mon Sep 17 00:00:00 2001 From: negativekelvin Date: Fri, 7 Sep 2018 02:30:10 -0700 Subject: [PATCH 4/6] wpa_supplicant: more wpa2_enterprise fixes Merges https://github.com/espressif/esp-idf/pull/2386 Closes https://github.com/espressif/esp-idf/issues/2383 Closes https://github.com/espressif/esp-idf/issues/2381 --- .../src/fast_crypto/fast_crypto_internal-cipher.c | 4 ++-- .../wpa_supplicant/src/wpa2/tls/tlsv1_client.c | 14 ++++++++++++++ .../wpa_supplicant/src/wpa2/tls/tlsv1_common.c | 12 ++++++++++++ .../wpa_supplicant/src/wpa2/tls/tlsv1_server.c | 6 ++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/components/wpa_supplicant/src/fast_crypto/fast_crypto_internal-cipher.c b/components/wpa_supplicant/src/fast_crypto/fast_crypto_internal-cipher.c index 472e17326..826d365e8 100644 --- a/components/wpa_supplicant/src/fast_crypto/fast_crypto_internal-cipher.c +++ b/components/wpa_supplicant/src/fast_crypto/fast_crypto_internal-cipher.c @@ -77,9 +77,9 @@ struct crypto_cipher * fast_crypto_cipher_init(enum crypto_cipher_alg alg, break; case CRYPTO_CIPHER_ALG_AES: mbedtls_aes_init(&(ctx->u.aes.ctx_enc)); - mbedtls_aes_setkey_enc(&(ctx->u.aes.ctx_enc), key, 256); + mbedtls_aes_setkey_enc(&(ctx->u.aes.ctx_enc), key, key_len * 8); mbedtls_aes_init(&(ctx->u.aes.ctx_dec)); - mbedtls_aes_setkey_dec(&(ctx->u.aes.ctx_dec), key, 256); + mbedtls_aes_setkey_dec(&(ctx->u.aes.ctx_dec), key, key_len * 8); os_memcpy(ctx->u.aes.cbc, iv, AES_BLOCK_SIZE); break; #ifdef CONFIG_DES3 diff --git a/components/wpa_supplicant/src/wpa2/tls/tlsv1_client.c b/components/wpa_supplicant/src/wpa2/tls/tlsv1_client.c index 5283af2c4..62753b3b5 100644 --- a/components/wpa_supplicant/src/wpa2/tls/tlsv1_client.c +++ b/components/wpa_supplicant/src/wpa2/tls/tlsv1_client.c @@ -463,7 +463,9 @@ struct tlsv1_client * tlsv1_client_init(void) suites[count++] = TLS_RSA_WITH_AES_256_CBC_SHA; suites[count++] = TLS_RSA_WITH_AES_128_CBC_SHA256; suites[count++] = TLS_RSA_WITH_AES_128_CBC_SHA; +#ifdef CONFIG_DES3 suites[count++] = TLS_RSA_WITH_3DES_EDE_CBC_SHA; +#endif suites[count++] = TLS_RSA_WITH_RC4_128_SHA; suites[count++] = TLS_RSA_WITH_RC4_128_MD5; conn->num_cipher_suites = count; @@ -560,12 +562,16 @@ int tlsv1_client_get_cipher(struct tlsv1_client *conn, char *buf, case TLS_RSA_WITH_RC4_128_SHA: cipher = "RC4-SHA"; break; +#ifdef CONFIG_DES case TLS_RSA_WITH_DES_CBC_SHA: cipher = "DES-CBC-SHA"; break; +#endif +#ifdef CONFIG_DES3 case TLS_RSA_WITH_3DES_EDE_CBC_SHA: cipher = "DES-CBC3-SHA"; break; +#endif case TLS_DH_anon_WITH_AES_128_CBC_SHA256: cipher = "ADH-AES-128-SHA256"; break; @@ -601,12 +607,16 @@ int tlsv1_client_get_cipher(struct tlsv1_client *conn, char *buf, case TLS_RSA_WITH_RC4_128_SHA: strcpy(cipher, "RC4-SHA"); break; +#ifdef CONFIG_DES case TLS_RSA_WITH_DES_CBC_SHA: strcpy(cipher, "DES-CBC-SHA"); break; +#endif +#ifdef CONFIG_DES3 case TLS_RSA_WITH_3DES_EDE_CBC_SHA: strcpy(cipher, "DES-CBC3-SHA"); break; +#endif case TLS_DH_anon_WITH_AES_128_CBC_SHA256: strcpy(cipher, "ADH-AES-128-SHA256"); break; @@ -780,9 +790,13 @@ int tlsv1_client_set_cipher_list(struct tlsv1_client *conn, u8 *ciphers) suites[count++] = TLS_DH_anon_WITH_AES_256_CBC_SHA; suites[count++] = TLS_DH_anon_WITH_AES_128_CBC_SHA256; suites[count++] = TLS_DH_anon_WITH_AES_128_CBC_SHA; +#ifdef CONFIG_DES3 suites[count++] = TLS_DH_anon_WITH_3DES_EDE_CBC_SHA; +#endif suites[count++] = TLS_DH_anon_WITH_RC4_128_MD5; +#ifdef CONFIG_DES suites[count++] = TLS_DH_anon_WITH_DES_CBC_SHA; +#endif /* * Cisco AP (at least 350 and 1200 series) local authentication diff --git a/components/wpa_supplicant/src/wpa2/tls/tlsv1_common.c b/components/wpa_supplicant/src/wpa2/tls/tlsv1_common.c index 9d17928db..38d0b694d 100644 --- a/components/wpa_supplicant/src/wpa2/tls/tlsv1_common.c +++ b/components/wpa_supplicant/src/wpa2/tls/tlsv1_common.c @@ -31,16 +31,24 @@ static const struct tls_cipher_suite tls_cipher_suites[] = { TLS_HASH_MD5 }, { TLS_RSA_WITH_RC4_128_SHA, TLS_KEY_X_RSA, TLS_CIPHER_RC4_128, TLS_HASH_SHA }, +#ifdef CONFIG_DES { TLS_RSA_WITH_DES_CBC_SHA, TLS_KEY_X_RSA, TLS_CIPHER_DES_CBC, TLS_HASH_SHA }, +#endif +#ifdef CONFIG_DES3 { TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_KEY_X_RSA, TLS_CIPHER_3DES_EDE_CBC, TLS_HASH_SHA }, +#endif { TLS_DH_anon_WITH_RC4_128_MD5, TLS_KEY_X_DH_anon, TLS_CIPHER_RC4_128, TLS_HASH_MD5 }, +#ifdef CONFIG_DES { TLS_DH_anon_WITH_DES_CBC_SHA, TLS_KEY_X_DH_anon, TLS_CIPHER_DES_CBC, TLS_HASH_SHA }, +#endif +#ifdef CONFIG_DES3 { TLS_DH_anon_WITH_3DES_EDE_CBC_SHA, TLS_KEY_X_DH_anon, TLS_CIPHER_3DES_EDE_CBC, TLS_HASH_SHA }, +#endif { TLS_RSA_WITH_AES_128_CBC_SHA, TLS_KEY_X_RSA, TLS_CIPHER_AES_128_CBC, TLS_HASH_SHA }, { TLS_DH_anon_WITH_AES_128_CBC_SHA, TLS_KEY_X_DH_anon, @@ -74,12 +82,16 @@ static const struct tls_cipher_data tls_ciphers[] = { CRYPTO_CIPHER_ALG_RC4 }, { TLS_CIPHER_RC4_128, TLS_CIPHER_STREAM, 16, 16, 0, CRYPTO_CIPHER_ALG_RC4 }, +#ifdef CONFIG_DES { TLS_CIPHER_DES40_CBC, TLS_CIPHER_BLOCK, 5, 8, 8, CRYPTO_CIPHER_ALG_DES }, { TLS_CIPHER_DES_CBC, TLS_CIPHER_BLOCK, 8, 8, 8, CRYPTO_CIPHER_ALG_DES }, +#endif +#ifdef CONFIG_DES3 { TLS_CIPHER_3DES_EDE_CBC, TLS_CIPHER_BLOCK, 24, 24, 8, CRYPTO_CIPHER_ALG_3DES }, +#endif { TLS_CIPHER_AES_128_CBC, TLS_CIPHER_BLOCK, 16, 16, 16, CRYPTO_CIPHER_ALG_AES }, { TLS_CIPHER_AES_256_CBC, TLS_CIPHER_BLOCK, 32, 32, 16, diff --git a/components/wpa_supplicant/src/wpa2/tls/tlsv1_server.c b/components/wpa_supplicant/src/wpa2/tls/tlsv1_server.c index 642b09c7b..95118aa05 100644 --- a/components/wpa_supplicant/src/wpa2/tls/tlsv1_server.c +++ b/components/wpa_supplicant/src/wpa2/tls/tlsv1_server.c @@ -363,7 +363,9 @@ struct tlsv1_server * tlsv1_server_init(struct tlsv1_credentials *cred) suites = conn->cipher_suites; suites[count++] = TLS_RSA_WITH_AES_256_CBC_SHA; suites[count++] = TLS_RSA_WITH_AES_128_CBC_SHA; +#ifdef CONFIG_DES3 suites[count++] = TLS_RSA_WITH_3DES_EDE_CBC_SHA; +#endif suites[count++] = TLS_RSA_WITH_RC4_128_SHA; suites[count++] = TLS_RSA_WITH_RC4_128_MD5; conn->num_cipher_suites = count; @@ -471,12 +473,16 @@ int tlsv1_server_get_cipher(struct tlsv1_server *conn, char *buf, case TLS_RSA_WITH_RC4_128_SHA: cipher = "RC4-SHA"; break; +#ifdef CONFIG_DES case TLS_RSA_WITH_DES_CBC_SHA: cipher = "DES-CBC-SHA"; break; +#endif +#ifdef CONFIG_DES3 case TLS_RSA_WITH_3DES_EDE_CBC_SHA: cipher = "DES-CBC3-SHA"; break; +#endif case TLS_DH_anon_WITH_AES_128_CBC_SHA: cipher = "ADH-AES-128-SHA"; break; From 315f18766c87c8de46a395da419cfdd9eb67d6bf Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 20 Sep 2018 16:17:35 +0800 Subject: [PATCH 5/6] cmake: pass repository path to git when doing git describe Fixes getting IDF version in out-of-tree builds --- tools/cmake/third_party/GetGitRevisionDescription.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/cmake/third_party/GetGitRevisionDescription.cmake b/tools/cmake/third_party/GetGitRevisionDescription.cmake index 6c711bbd4..70aaedd70 100644 --- a/tools/cmake/third_party/GetGitRevisionDescription.cmake +++ b/tools/cmake/third_party/GetGitRevisionDescription.cmake @@ -109,6 +109,8 @@ function(git_describe _var _repo_dir) execute_process(COMMAND "${GIT_EXECUTABLE}" + "-C" + ${_repo_dir} describe ${hash} ${ARGN} From c4ce84bba50115f94e275f8a31b307109fb447f9 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 21 Sep 2018 14:58:34 +0800 Subject: [PATCH 6/6] cmake: add app_trace as FreeRTOS dependency This is needed because FreeRTOSConfig.h includes header file provided by app_trace when CONFIG_SYSVIEW_ENABLE=y. --- components/freertos/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/components/freertos/CMakeLists.txt b/components/freertos/CMakeLists.txt index bcd9b0c42..ef0b7343f 100644 --- a/components/freertos/CMakeLists.txt +++ b/components/freertos/CMakeLists.txt @@ -17,7 +17,10 @@ set(COMPONENT_SRCS "FreeRTOS-openocd.c" "xtensa_overlay_os_hook.c" "xtensa_vector_defaults.S" "xtensa_vectors.S") -set(COMPONENT_REQUIRES) + +# app_trace is required by FreeRTOS headers only when CONFIG_SYSVIEW_ENABLE=y, +# but requirements can't depend on config options, so always require it. +set(COMPONENT_REQUIRES app_trace) register_component()