This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 553f070357bbd1ffd393d978dd34ef6d56782605 Author: Abdelatif Guettouche <[email protected]> AuthorDate: Fri Jun 25 15:13:48 2021 +0100 arch/xtensa/esp32: Remove up_textheap_init function since it's not needed anymore. Decouple the IRAM heap from the text allocator since that heap can still be used as a generic pool of memory. Implement the up_extraheaps_init function to initialize all of the additional heaps. Signed-off-by: Abdelatif Guettouche <[email protected]> --- arch/xtensa/src/esp32/Kconfig | 6 ++ arch/xtensa/src/esp32/Make.defs | 17 ++++-- .../esp32/{esp32_textheap.c => esp32_extraheaps.c} | 65 +++------------------- arch/xtensa/src/esp32/esp32_textheap.c | 24 +++----- 4 files changed, 36 insertions(+), 76 deletions(-) diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index ddcb46d..29e0f98 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -233,6 +233,12 @@ config ESP32_RUN_IRAM config ESP32_RTC_HEAP bool "Use the RTC memory as a separate heap" + select ARCH_HAVE_EXTRA_HEAPS + default n + +config ESP32_IRAM_HEAP + bool "Use the rest of IRAM as a separate heap" + select ARCH_HAVE_EXTRA_HEAPS default n menu "ESP32 Peripheral Selection" diff --git a/arch/xtensa/src/esp32/Make.defs b/arch/xtensa/src/esp32/Make.defs index 7c31b94..89ac4fa 100644 --- a/arch/xtensa/src/esp32/Make.defs +++ b/arch/xtensa/src/esp32/Make.defs @@ -97,10 +97,6 @@ ifeq ($(CONFIG_XTENSA_IMEM_USE_SEPARATE_HEAP),y) CHIP_CSRCS += esp32_imm.c endif -ifeq ($(CONFIG_ESP32_RTC_HEAP),y) -CHIP_CSRCS += esp32_rtcheap.c -endif - ifeq ($(CONFIG_ESP32_I2C),y) CHIP_CSRCS += esp32_i2c.c endif @@ -184,8 +180,19 @@ CHIP_CSRCS += esp32_wdt_lowerhalf.c endif endif -ifeq ($(CONFIG_ARCH_USE_TEXT_HEAP),y) +ifeq ($(CONFIG_ARCH_HAVE_EXTRA_HEAPS),y) +CHIP_CSRCS += esp32_extraheaps.c +endif + +ifeq ($(CONFIG_ESP32_RTC_HEAP),y) +CHIP_CSRCS += esp32_rtcheap.c +endif + +ifeq ($(CONFIG_ESP32_IRAM_HEAP),y) CHIP_CSRCS += esp32_iramheap.c +endif + +ifeq ($(CONFIG_ARCH_USE_TEXT_HEAP),y) CHIP_CSRCS += esp32_textheap.c CMN_ASRCS += xtensa_loadstore.S endif diff --git a/arch/xtensa/src/esp32/esp32_textheap.c b/arch/xtensa/src/esp32/esp32_extraheaps.c similarity index 59% copy from arch/xtensa/src/esp32/esp32_textheap.c copy to arch/xtensa/src/esp32/esp32_extraheaps.c index 8f7a497..9b0caac 100644 --- a/arch/xtensa/src/esp32/esp32_textheap.c +++ b/arch/xtensa/src/esp32/esp32_extraheaps.c @@ -1,5 +1,5 @@ /**************************************************************************** - * arch/xtensa/src/esp32/esp32_textheap.c + * arch/xtensa/src/esp32/esp32_extraheaps.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -23,8 +23,8 @@ ****************************************************************************/ #include <nuttx/config.h> + #include <nuttx/arch.h> -#include <nuttx/fs/procfs.h> #include <nuttx/mm/mm.h> #include <sys/types.h> @@ -32,7 +32,10 @@ #include "hardware/esp32_soc.h" +#ifdef CONFIG_ESP32_IRAM_HEAP #include "esp32_iramheap.h" +#endif + #ifdef CONFIG_ESP32_RTC_HEAP #include "esp32_rtcheap.h" #endif @@ -42,71 +45,21 @@ ****************************************************************************/ /**************************************************************************** - * Name: up_textheap_init + * Name: up_extraheaps_init * * Description: - * Initialize the text heap. + * Initialize any extra heap. * ****************************************************************************/ -void up_textheap_init() +void up_extraheaps_init(void) { #ifdef CONFIG_ESP32_RTC_HEAP esp32_rtcheap_initialize(); #endif +#ifdef CONFIG_ESP32_IRAM_HEAP esp32_iramheap_initialize(); -} - -/**************************************************************************** - * Name: up_textheap_memalign - * - * Description: - * Allocate memory from the text heap with the specified alignment. - * - ****************************************************************************/ - -FAR void *up_textheap_memalign(size_t align, size_t size) -{ - FAR void *ret = NULL; - - /* Prioritise allocating from RTC. If that fails, allocate from the - * main heap. - */ - -#ifdef CONFIG_ESP32_RTC_HEAP - ret = esp32_rtcheap_memalign(align, size); #endif - - if (ret == NULL) - { - ret = esp32_iramheap_memalign(align, size); - } - - return ret; } -/**************************************************************************** - * Name: up_textheap_free - * - * Description: - * Free memory from the text heap. - * - ****************************************************************************/ - -void up_textheap_free(FAR void *p) -{ - if (p) - { -#ifdef CONFIG_ESP32_RTC_HEAP - if (esp32_ptr_rtcslow(p)) - { - esp32_rtcheap_free(p); - } - else -#endif - { - esp32_iramheap_free(p); - } - } -} diff --git a/arch/xtensa/src/esp32/esp32_textheap.c b/arch/xtensa/src/esp32/esp32_textheap.c index 8f7a497..7e29c2f 100644 --- a/arch/xtensa/src/esp32/esp32_textheap.c +++ b/arch/xtensa/src/esp32/esp32_textheap.c @@ -32,31 +32,25 @@ #include "hardware/esp32_soc.h" +#ifdef CONFIG_ESP32_IRAM_HEAP #include "esp32_iramheap.h" +#endif + #ifdef CONFIG_ESP32_RTC_HEAP #include "esp32_rtcheap.h" #endif /**************************************************************************** - * Public Functions + * Pre-processor Definitions ****************************************************************************/ -/**************************************************************************** - * Name: up_textheap_init - * - * Description: - * Initialize the text heap. - * - ****************************************************************************/ - -void up_textheap_init() -{ -#ifdef CONFIG_ESP32_RTC_HEAP - esp32_rtcheap_initialize(); +#if !defined(CONFIG_ESP32_IRAM_HEAP) && !defined(CONFIG_ESP32_RTC_HEAP) +#error "No suitable heap available. Enable ESP32_IRAM_HEAP or ESP32_RTC_HEAP" #endif - esp32_iramheap_initialize(); -} +/**************************************************************************** + * Public Functions + ****************************************************************************/ /**************************************************************************** * Name: up_textheap_memalign
