From d0cc364ab9153d20665ff004a6ff653c2a8e9456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Nov 2022 12:44:46 +0000 Subject: [PATCH 1/5] Add build option to reserve internal RAM for IDF allocation --- CMakePresets.json | 7 +++++++ targets/ESP32/CMakeLists.txt | 2 ++ targets/ESP32/_nanoCLR/Memory.cpp | 3 +-- targets/ESP32/_nanoCLR/target_platform.h.in | 11 ++++++----- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 94922e20f3..b50516de27 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -431,6 +431,7 @@ "cacheVariables": { "SDK_CONFIG_FILE": "sdkconfig.default_pico", "TARGET_SERIAL_BAUDRATE": "115200", + "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "NF_FEATURE_RTC": "ON", @@ -564,6 +565,7 @@ "hidden": true, "cacheVariables": { "SDK_CONFIG_FILE": "", + "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "NF_FEATURE_RTC": "ON", @@ -630,6 +632,7 @@ "hidden": true, "cacheVariables": { "SDK_CONFIG_FILE": "sdkconfig.default_ble_rev3.esp32", + "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "NF_FEATURE_RTC": "ON", @@ -653,6 +656,7 @@ "hidden": true, "cacheVariables": { "SDK_CONFIG_FILE": "sdkconfig.default_nopsram.esp32", + "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "NF_FEATURE_RTC": "ON", @@ -674,6 +678,7 @@ "hidden": true, "cacheVariables": { "SDK_CONFIG_FILE": "", + "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "NF_FEATURE_RTC": "ON", @@ -696,6 +701,7 @@ "hidden": true, "cacheVariables": { "SDK_CONFIG_FILE": "sdkconfig.default_pico", + "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "TARGET_SERIAL_BAUDRATE": "115200", @@ -721,6 +727,7 @@ "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "TARGET_SERIAL_BAUDRATE": "115200", + "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_FEATURE_RTC": "ON", "API_System.IO.FileSystem": "ON", "API_nanoFramework.Device.OneWire": "ON", diff --git a/targets/ESP32/CMakeLists.txt b/targets/ESP32/CMakeLists.txt index dda45dc36f..209fa93b12 100644 --- a/targets/ESP32/CMakeLists.txt +++ b/targets/ESP32/CMakeLists.txt @@ -6,6 +6,8 @@ include(FetchContent) include(binutils.ESP32) +option(ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION "Reserved RAM for IDF allocation (in kBytes)" 0) + # Set target series in lower case nf_set_esp32_target_series() diff --git a/targets/ESP32/_nanoCLR/Memory.cpp b/targets/ESP32/_nanoCLR/Memory.cpp index 9444208117..967fe14746 100644 --- a/targets/ESP32/_nanoCLR/Memory.cpp +++ b/targets/ESP32/_nanoCLR/Memory.cpp @@ -25,8 +25,7 @@ static const char *TAG = "Memory"; #define INTERNAL_RAM_LEAVE_FREE_FOR_ALLOCATION (30 * 1024) #else // Space to leave free in internal RAM for allocation by IDF malloc -// We leave 10K free to allow room for Wifi initialisation -#define INTERNAL_RAM_LEAVE_FREE_FOR_ALLOCATION (10 * 1024) +#define INTERNAL_RAM_LEAVE_FREE_FOR_ALLOCATION (ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION * 1024) #endif // Saved memory allocation for when heap is reset so we can return same value. diff --git a/targets/ESP32/_nanoCLR/target_platform.h.in b/targets/ESP32/_nanoCLR/target_platform.h.in index 7eab55c53c..5d63884561 100644 --- a/targets/ESP32/_nanoCLR/target_platform.h.in +++ b/targets/ESP32/_nanoCLR/target_platform.h.in @@ -8,11 +8,12 @@ #include "esp32_ethernet_options.h" -#define NANOCLR_GRAPHICS @NANOCLR_GRAPHICS@ -#define ESP32_SPIRAM_FOR_IDF_ALLOCATION @ESP32_SPIRAM_FOR_IDF_ALLOCATION@ -#define HAL_USE_SPI @HAL_USE_SPI_OPTION@ -#define HAL_USE_SDC @HAL_USE_SDC_OPTION@ -#define HAL_USE_BLE @HAL_USE_BLE_OPTION@ +#define NANOCLR_GRAPHICS @NANOCLR_GRAPHICS@ +#define ESP32_SPIRAM_FOR_IDF_ALLOCATION @ESP32_SPIRAM_FOR_IDF_ALLOCATION@ +#define ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION @ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION@ +#define HAL_USE_SPI @HAL_USE_SPI_OPTION@ +#define HAL_USE_SDC @HAL_USE_SDC_OPTION@ +#define HAL_USE_BLE @HAL_USE_BLE_OPTION@ #if (HAL_USE_SDC == TRUE) #define SDC_MAX_OPEN_FILES 5 From 5a645ae6989cba94bba3653428e96ae4a18c7766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 2 Nov 2022 10:06:43 +0000 Subject: [PATCH 2/5] Remove not required reservation --- CMakePresets.json | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakePresets.json b/CMakePresets.json index b50516de27..1a95abc271 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -632,7 +632,6 @@ "hidden": true, "cacheVariables": { "SDK_CONFIG_FILE": "sdkconfig.default_ble_rev3.esp32", - "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "NF_FEATURE_RTC": "ON", From 923833fee3b13e22cac3ab152bd9928667a316cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 2 Nov 2022 10:33:21 +0000 Subject: [PATCH 3/5] Fix setting default value for ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION --- targets/ESP32/CMakeLists.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/targets/ESP32/CMakeLists.txt b/targets/ESP32/CMakeLists.txt index 209fa93b12..26ca3467e8 100644 --- a/targets/ESP32/CMakeLists.txt +++ b/targets/ESP32/CMakeLists.txt @@ -6,11 +6,16 @@ include(FetchContent) include(binutils.ESP32) -option(ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION "Reserved RAM for IDF allocation (in kBytes)" 0) - # Set target series in lower case nf_set_esp32_target_series() +# option to reserve RAM for IDF allocator +option(ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION "Reserved RAM for IDF allocation (in kBytes)") +if(NOT (ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION EQUAL OFF)) + unset(ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION CACHE) + set(ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION "0" CACHE STRING "Setting default value for ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION") +endif() + # Define PLATFORM base path set(BASE_PATH_FOR_PLATFORM ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE) From f98df5a10d4e5383874cba618b3e608e58e29317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 3 Nov 2022 10:28:42 +0000 Subject: [PATCH 4/5] Fix json formatting --- CMakePresets.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 1a95abc271..c26f131c37 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -576,7 +576,7 @@ "API_System.IO.FileSystem": "ON", "API_nanoFramework.Device.OneWire": "ON" } - }, + }, { "name": "LilygoTWatch2020_preset", "inherits": [ @@ -639,13 +639,13 @@ "ESP32_ETHERNET_SUPPORT": "ON", "ESP32_ETHERNET_INTERFACE": "IP101", "ETH_PHY_RST_GPIO": "5", - "ETH_RMII_CLK_IN_GPIO" : "0", + "ETH_RMII_CLK_IN_GPIO": "0", "ETH_PHY_ADDR": "1", "API_System.IO.FileSystem": "ON", "API_nanoFramework.Device.OneWire": "ON", "API_nanoFramework.Device.Bluetooth": "ON" } - }, + }, { "name": "ESP32_WT32_ETH01_preset", "inherits": [ @@ -661,13 +661,13 @@ "NF_FEATURE_RTC": "ON", "NF_FEATURE_HAS_SDCARD": "ON", "ESP32_ETHERNET_SUPPORT": "ON", - "ETH_RMII_CLK_IN_GPIO" : "0", - "ETH_PHY_ADDR":"1", + "ETH_RMII_CLK_IN_GPIO": "0", + "ETH_PHY_ADDR": "1", "ETH_PHY_RST_GPIO": "16", "API_System.IO.FileSystem": "ON", "API_nanoFramework.Device.OneWire": "ON" } - }, + }, { "name": "ESP32_WESP32_preset", "inherits": [ @@ -684,13 +684,13 @@ "NF_FEATURE_HAS_SDCARD": "ON", "ESP32_ETHERNET_SUPPORT": "ON", "ESP32_ETHERNET_INTERFACE": "RTL8201", - "ETH_RMII_CLK_IN_GPIO" : "0", - "ETH_MDIO_GPIO":"17", + "ETH_RMII_CLK_IN_GPIO": "0", + "ETH_MDIO_GPIO": "17", "ETH_MDC_GPIO": "16", "API_System.IO.FileSystem": "ON", "API_nanoFramework.Device.OneWire": "ON" } - }, + }, { "name": "M5StickC_preset", "inherits": [ From 9b7f8b3eecd8f63419c4022cc662079525542b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Fagundes?= Date: Mon, 7 Nov 2022 10:33:21 +0000 Subject: [PATCH 5/5] Adjust cmake presets following review --- CMakePresets.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index c26f131c37..53a793c84c 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -655,7 +655,6 @@ "hidden": true, "cacheVariables": { "SDK_CONFIG_FILE": "sdkconfig.default_nopsram.esp32", - "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "NF_FEATURE_RTC": "ON", @@ -726,7 +725,6 @@ "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", "TARGET_SERIAL_BAUDRATE": "115200", - "ESP32_RESERVED_RAM_FOR_IDF_ALLOCATION": "10", "NF_FEATURE_RTC": "ON", "API_System.IO.FileSystem": "ON", "API_nanoFramework.Device.OneWire": "ON",