This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 1a061d9b4ecffbb3b885343fab941d240a76ff64
Author: Marco Casaroli <[email protected]>
AuthorDate: Mon Aug 10 21:12:55 2026 +0200

    boards/esp32s3-devkit: Add kernel_n8r2, a kernel build for 2 MB PSRAM.
    
    kernel_oct targets a WROOM-2 N32R8V:  octal flash, and 8 MB of PSRAM for the
    page pool.  The defaults size the pool for that part, with 8 pages of 64 KiB
    for each of the text, data and heap regions, so 1.5 MB per process.  fork()
    duplicates the address environment, so a parent and a child need 3 MB at 
once
    and a module with 2 MB of PSRAM cannot do it.
    
    kernel_n8r2 sizes the same build for such a module.  Each region is 2 pages,
    so a process takes 384 KiB and a fork() peaks at 768 KiB, inside a 1.5 MB 
pool
    placed at 0x80000 to leave the start of the PSRAM alone.
    
    The flash is quad and runs in DIO mode, so this configuration also exercises
    the CONFIG_ESP32S3_FLASH_MODE_OCT guard in kernel-space.ld from the quad 
side,
    which kernel_oct cannot.
    
    This is tight by construction.  ostest has 115 KiB of text against a 128 KiB
    text region.  A larger program needs a module with more PSRAM, not a larger
    pool.
    
    Verified on an ESP32-S3-DevKitC with an N8R2 module, 8 MB flash in DIO mode
    and 2 MB of embedded quad PSRAM.  ostest reports "Parent and child had
    independent memory" and exits with status 0.
    
    Assisted-by: Claude Opus 5 (1M context) <[email protected]>
    Signed-off-by: Marco Casaroli <[email protected]>
---
 .../esp32s3-devkit/configs/kernel_n8r2/defconfig   | 100 +++++++++++++++++++++
 1 file changed, 100 insertions(+)

diff --git a/boards/xtensa/esp32s3/esp32s3-devkit/configs/kernel_n8r2/defconfig 
b/boards/xtensa/esp32s3/esp32s3-devkit/configs/kernel_n8r2/defconfig
new file mode 100644
index 00000000000..6c53f22dd16
--- /dev/null
+++ b/boards/xtensa/esp32s3/esp32s3-devkit/configs/kernel_n8r2/defconfig
@@ -0,0 +1,100 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed 
.config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that 
includes your
+# modifications.
+#
+# CONFIG_ARCH_LEDS is not set
+# CONFIG_NSH_ARGCAT is not set
+# CONFIG_NSH_CMDOPT_HEXDUMP is not set
+CONFIG_ARCH="xtensa"
+CONFIG_ARCH_ADDRENV=y
+CONFIG_ARCH_BOARD="esp32s3-devkit"
+CONFIG_ARCH_BOARD_COMMON=y
+CONFIG_ARCH_BOARD_ESP32S3_DEVKIT=y
+CONFIG_ARCH_CHIP="esp32s3"
+CONFIG_ARCH_CHIP_ESP32S3=y
+CONFIG_ARCH_CHIP_ESP32S3WROOM1N8R2=y
+CONFIG_ARCH_DATA_NPAGES=2
+CONFIG_ARCH_DATA_VBASE=0x3d000000
+CONFIG_ARCH_HEAP_NPAGES=2
+CONFIG_ARCH_HEAP_VBASE=0x3d200000
+CONFIG_ARCH_INTERRUPTSTACK=2048
+CONFIG_ARCH_IRQ_TO_NDX=y
+CONFIG_ARCH_KERNEL_STACKSIZE=8192
+CONFIG_ARCH_KMAP_NPAGES=2
+CONFIG_ARCH_KMAP_VBASE=0x3d400000
+CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
+CONFIG_ARCH_NUSER_INTERRUPTS=2
+CONFIG_ARCH_PGPOOL_PBASE=0x80000
+CONFIG_ARCH_PGPOOL_SIZE=1572864
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARCH_TEXT_NPAGES=2
+CONFIG_ARCH_TEXT_VBASE=0x42c00000
+CONFIG_ARCH_USE_MMU=y
+CONFIG_ARCH_XTENSA=y
+CONFIG_BINFMT_ELF_EXECUTABLE=y
+CONFIG_BOARD_INITTHREAD_STACKSIZE=2048
+CONFIG_BOARD_LOOPSPERMSEC=16717
+CONFIG_BUILD_KERNEL=y
+CONFIG_DEBUG_BINFMT=y
+CONFIG_DEBUG_BINFMT_ERROR=y
+CONFIG_DEBUG_BINFMT_INFO=y
+CONFIG_DEBUG_BINFMT_WARN=y
+CONFIG_DEBUG_FEATURES=y
+CONFIG_DEBUG_FULLOPT=y
+CONFIG_DEBUG_SCHED=y
+CONFIG_DEBUG_SCHED_ERROR=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_DEFAULT_TASK_STACKSIZE=8192
+CONFIG_ELF=y
+CONFIG_ESP32S3_PAGEFAULT=y
+CONFIG_ESP32S3_PSRAM_8M=y
+CONFIG_ESP32S3_SPIFLASH=y
+CONFIG_ESP32S3_SPIRAM=y
+CONFIG_ESP32S3_UART0=y
+CONFIG_ESP32S3_WCL=y
+CONFIG_FS_PROCFS=y
+CONFIG_FS_ROMFS=y
+CONFIG_HAVE_CXX=y
+CONFIG_HAVE_CXXINITIALIZE=y
+CONFIG_HOST_MACOS=y
+CONFIG_IDLETHREAD_STACKSIZE=3072
+CONFIG_INIT_FILEPATH="/system/bin/init"
+CONFIG_INIT_MOUNT=y
+CONFIG_INIT_MOUNT_FLAGS=0x1
+CONFIG_INIT_MOUNT_TARGET="/system/bin"
+CONFIG_INTELHEX_BINARY=y
+CONFIG_IRQ_WORK_STACKSIZE=2048
+CONFIG_LIBC_ENVPATH=y
+CONFIG_LIBC_EXECFUNCS=y
+CONFIG_LINE_MAX=64
+CONFIG_MM_PGALLOC=y
+CONFIG_MM_PGSIZE=65536
+CONFIG_NSH_DISABLE_LOSMART=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_FILE_APPS=y
+CONFIG_NSH_READLINE=y
+CONFIG_PATH_INITIAL="/system/bin"
+CONFIG_PREALLOC_TIMERS=4
+CONFIG_PTHREAD_STACK_DEFAULT=2048
+CONFIG_RAM_SIZE=114688
+CONFIG_RAM_START=0x20000000
+CONFIG_RAW_BINARY=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_HAVE_PARENT=y
+CONFIG_SCHED_LPWORK=y
+CONFIG_SCHED_LPWORKSTACKSIZE=2048
+CONFIG_SCHED_WAITPID=y
+CONFIG_STACK_COLORATION=y
+CONFIG_START_DAY=6
+CONFIG_START_MONTH=12
+CONFIG_START_YEAR=2011
+CONFIG_SYSLOG_BUFFER=y
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NSH_PROGNAME="init"
+CONFIG_TESTING_GETPRIME=y
+CONFIG_TESTING_OSTEST=y
+CONFIG_TESTING_OSTEST_FPUTESTDISABLE=y
+CONFIG_UART0_SERIAL_CONSOLE=y

Reply via email to