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

Reply via email to