You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/06/26 14:52:57 UTC
[incubator-nuttx] 04/05: arch/xtensa/esp32: Remove up_textheap_init
function since it's not needed anymore.
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 <ab...@espressif.com>
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 <ab...@espressif.com>
---
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