diff --git a/CMakePresets.json b/CMakePresets.json index 94922e20f3..53a793c84c 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", @@ -574,7 +576,7 @@ "API_System.IO.FileSystem": "ON", "API_nanoFramework.Device.OneWire": "ON" } - }, + }, { "name": "LilygoTWatch2020_preset", "inherits": [ @@ -637,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": [ @@ -658,13 +660,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": [ @@ -674,19 +676,20 @@ "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", "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": [ @@ -696,6 +699,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", diff --git a/targets/ESP32/CMakeLists.txt b/targets/ESP32/CMakeLists.txt index dda45dc36f..26ca3467e8 100644 --- a/targets/ESP32/CMakeLists.txt +++ b/targets/ESP32/CMakeLists.txt @@ -9,6 +9,13 @@ include(binutils.ESP32) # 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) 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