2016-10-12 21:11:05 +02:00
|
|
|
#
|
|
|
|
# For a description of the syntax of this configuration file,
|
|
|
|
# see the file kconfig-language.txt in the NuttX tools repository.
|
|
|
|
#
|
|
|
|
|
|
|
|
if ARCH_XTENSA
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "XTENSA architecture selection"
|
2016-10-13 22:37:28 +02:00
|
|
|
default ARCH_CHIP_ESP32
|
2016-10-12 21:11:05 +02:00
|
|
|
|
2016-10-13 22:37:28 +02:00
|
|
|
config ARCH_CHIP_ESP32
|
2020-04-08 14:45:35 +02:00
|
|
|
bool "Espressif ESP32"
|
2016-10-13 22:37:28 +02:00
|
|
|
select ARCH_FAMILY_LX6
|
2016-10-15 18:11:35 +02:00
|
|
|
select XTENSA_HAVE_INTERRUPTS
|
2022-05-05 10:49:59 +02:00
|
|
|
select ARCH_HAVE_FPU
|
2022-05-11 23:59:27 +02:00
|
|
|
select ARCH_HAVE_MPU
|
2016-10-17 16:15:36 +02:00
|
|
|
select ARCH_HAVE_MULTICPU
|
2021-06-18 01:47:45 +02:00
|
|
|
select ARCH_HAVE_TEXT_HEAP
|
2020-10-07 17:42:48 +02:00
|
|
|
select ARCH_HAVE_SDRAM
|
2020-09-29 15:38:32 +02:00
|
|
|
select ARCH_HAVE_RESET
|
2021-09-24 12:26:33 +02:00
|
|
|
select ARCH_HAVE_BOOTLOADER
|
2022-02-09 11:09:51 +01:00
|
|
|
select ARCH_HAVE_TESTSET
|
2021-01-11 13:13:16 +01:00
|
|
|
select ARCH_VECNOTIRQ
|
2022-06-10 23:28:05 +02:00
|
|
|
select LIBC_ARCH_MEMCPY if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_MEMCHR if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_MEMCMP if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_MEMMOVE if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_MEMSET if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_STRCHR if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_STRCMP if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_STRCPY if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_STRLCPY if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_STRNCPY if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_STRLEN if BUILD_FLAT
|
|
|
|
select LIBC_ARCH_STRNLEN if BUILD_FLAT
|
2016-10-12 21:11:05 +02:00
|
|
|
---help---
|
2020-04-08 14:45:35 +02:00
|
|
|
The ESP32 is a dual-core system from Espressif with two Harvard
|
2016-10-13 22:37:28 +02:00
|
|
|
architecture Xtensa LX6 CPUs. All embedded memory, external memory
|
|
|
|
and peripherals are located on the data bus and/or the instruction
|
|
|
|
bus of these CPUs. With some minor exceptions, the address mapping
|
|
|
|
of two CPUs is symmetric, meaning they use the same addresses to
|
|
|
|
access the same memory.
|
2016-10-12 21:11:05 +02:00
|
|
|
|
2016-12-17 14:07:33 +01:00
|
|
|
The two CPUs are named "PRO_CPU" and "APP_CPU" (for "protocol" and
|
|
|
|
"application"), however for most purposes the two CPUs are
|
|
|
|
interchangeable.
|
|
|
|
|
2021-05-20 22:07:54 +02:00
|
|
|
config ARCH_CHIP_ESP32S2
|
|
|
|
bool "Espressif ESP32-S2"
|
|
|
|
select ARCH_FAMILY_LX7
|
|
|
|
select XTENSA_HAVE_INTERRUPTS
|
2021-06-18 01:47:45 +02:00
|
|
|
select ARCH_HAVE_TEXT_HEAP
|
2021-05-20 22:07:54 +02:00
|
|
|
select ARCH_HAVE_SDRAM
|
|
|
|
select ARCH_HAVE_RESET
|
2021-09-24 14:28:34 +02:00
|
|
|
select ARCH_HAVE_BOOTLOADER
|
2021-05-20 22:07:54 +02:00
|
|
|
select ARCH_VECNOTIRQ
|
2022-03-25 19:53:38 +01:00
|
|
|
select LIBC_ARCH_ATOMIC
|
2021-05-20 22:07:54 +02:00
|
|
|
select LIBC_ARCH_MEMCPY
|
|
|
|
select LIBC_ARCH_MEMCHR
|
|
|
|
select LIBC_ARCH_MEMCMP
|
|
|
|
select LIBC_ARCH_MEMMOVE
|
|
|
|
select LIBC_ARCH_MEMSET
|
|
|
|
select LIBC_ARCH_STRCHR
|
|
|
|
select LIBC_ARCH_STRCMP
|
|
|
|
select LIBC_ARCH_STRCPY
|
|
|
|
select LIBC_ARCH_STRLCPY
|
|
|
|
select LIBC_ARCH_STRNCPY
|
|
|
|
select LIBC_ARCH_STRLEN
|
|
|
|
select LIBC_ARCH_STRNLEN
|
|
|
|
---help---
|
2022-01-06 15:31:36 +01:00
|
|
|
ESP32-S2 is a truly secure, highly integrated, low-power, 2.4 GHz Wi-Fi
|
|
|
|
Microcontroller SoC supporting Wi-Fi HT40 and having 43 GPIOs.
|
|
|
|
Based on an Xtensa single-core 32-bit LX7 processor, it can be clocked
|
|
|
|
at up to 240 MHz.
|
2021-05-20 22:07:54 +02:00
|
|
|
|
2022-01-07 18:44:06 +01:00
|
|
|
config ARCH_CHIP_ESP32S3
|
|
|
|
bool "Espressif ESP32-S3"
|
|
|
|
select ARCH_FAMILY_LX7
|
|
|
|
select XTENSA_HAVE_INTERRUPTS
|
2022-05-05 10:49:59 +02:00
|
|
|
select ARCH_HAVE_FPU
|
2022-10-31 15:47:33 +01:00
|
|
|
select ARCH_HAVE_MPU
|
2022-01-07 18:44:06 +01:00
|
|
|
select ARCH_HAVE_MULTICPU
|
|
|
|
select ARCH_HAVE_TEXT_HEAP
|
|
|
|
select ARCH_HAVE_SDRAM
|
|
|
|
select ARCH_HAVE_RESET
|
|
|
|
select ARCH_HAVE_BOOTLOADER
|
2022-02-09 11:09:51 +01:00
|
|
|
select ARCH_HAVE_TESTSET
|
2022-01-07 18:44:06 +01:00
|
|
|
select ARCH_VECNOTIRQ
|
|
|
|
select LIBC_ARCH_MEMCPY
|
|
|
|
select LIBC_ARCH_MEMCHR
|
|
|
|
select LIBC_ARCH_MEMCMP
|
|
|
|
select LIBC_ARCH_MEMMOVE
|
|
|
|
select LIBC_ARCH_MEMSET
|
|
|
|
select LIBC_ARCH_STRCHR
|
|
|
|
select LIBC_ARCH_STRCMP
|
|
|
|
select LIBC_ARCH_STRCPY
|
|
|
|
select LIBC_ARCH_STRLCPY
|
|
|
|
select LIBC_ARCH_STRNCPY
|
|
|
|
select LIBC_ARCH_STRLEN
|
|
|
|
select LIBC_ARCH_STRNLEN
|
|
|
|
---help---
|
|
|
|
ESP32-S3 is a dual-core Xtensa LX7 MCU, capable of running at 240 MHz.
|
|
|
|
Apart from its 512 KB of internal SRAM, it also comes with integrated 2.4 GHz,
|
|
|
|
802.11 b/g/n Wi-Fi and Bluetooth 5 (LE) connectivity that provides long-range
|
|
|
|
support.
|
|
|
|
|
2020-10-15 05:29:59 +02:00
|
|
|
config ARCH_CHIP_XTENSA_CUSTOM
|
|
|
|
bool "Custom XTENSA chip"
|
|
|
|
select ARCH_CHIP_CUSTOM
|
|
|
|
---help---
|
|
|
|
Select this option if there is no directory for the chip under arch/xtensa/src/.
|
|
|
|
|
2016-10-12 21:11:05 +02:00
|
|
|
endchoice # XTENSA chip selection
|
|
|
|
|
2021-09-06 05:18:47 +02:00
|
|
|
config XTENSA_HAVE_ICACHE
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
|
|
|
|
config XTENSA_HAVE_DCACHE
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
|
2021-10-19 06:16:26 +02:00
|
|
|
config XTENSA_HAVE_ICACHE_LOCK
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
|
|
|
|
config XTENSA_HAVE_DCACHE_LOCK
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
|
2022-05-20 17:40:04 +02:00
|
|
|
config XTENSA_HAVE_EXCEPTION_HOOKS
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
|
2021-09-06 05:18:47 +02:00
|
|
|
config XTENSA_ICACHE
|
|
|
|
bool "Use I-Cache"
|
|
|
|
default n
|
|
|
|
depends on XTENSA_HAVE_ICACHE
|
|
|
|
select ARCH_ICACHE
|
|
|
|
---help---
|
|
|
|
Enable Xtensa I-Cache
|
|
|
|
|
|
|
|
config XTENSA_DCACHE
|
|
|
|
bool "Use D-Cache"
|
|
|
|
default n
|
|
|
|
depends on XTENSA_HAVE_DCACHE
|
|
|
|
select ARCH_DCACHE
|
|
|
|
---help---
|
|
|
|
Enable Xtensa D-Cache
|
|
|
|
|
2021-10-19 06:16:26 +02:00
|
|
|
config XTENSA_ICACHE_LOCK
|
|
|
|
bool "Use I-Cache lock & unlock feature"
|
|
|
|
default n
|
|
|
|
depends on XTENSA_HAVE_ICACHE
|
|
|
|
depends on XTENSA_HAVE_ICACHE_LOCK
|
|
|
|
select ARCH_ICACHE_LOCK
|
|
|
|
---help---
|
|
|
|
Enable Xtensa I-Cache lock & unlock feature
|
|
|
|
|
|
|
|
config XTENSA_DCACHE_LOCK
|
|
|
|
bool "Use D-Cache lock & unlock feature"
|
|
|
|
default n
|
|
|
|
depends on XTENSA_HAVE_DCACHE
|
|
|
|
depends on XTENSA_HAVE_DCACHE_LOCK
|
|
|
|
select ARCH_DCACHE_LOCK
|
|
|
|
---help---
|
|
|
|
Enable Xtensa D-Cache lock & unlock feature
|
|
|
|
|
2022-01-27 08:56:19 +01:00
|
|
|
config XTENSA_ONESHOT
|
|
|
|
bool "Xtensa oneshot lower half driver"
|
|
|
|
default n
|
|
|
|
depends on ONESHOT
|
|
|
|
---help---
|
|
|
|
Enable Xtensa oneshot driver.
|
|
|
|
|
2016-10-13 22:37:28 +02:00
|
|
|
config ARCH_FAMILY_LX6
|
2016-10-12 21:11:05 +02:00
|
|
|
bool
|
|
|
|
default n
|
2016-10-13 22:37:28 +02:00
|
|
|
---help---
|
|
|
|
Cadence® Tensilica® Xtensa® LX6 data plane processing unit (DPU).
|
|
|
|
The LX6 is a configurable and extensible processor core.
|
2016-10-12 21:11:05 +02:00
|
|
|
|
2021-05-20 22:07:54 +02:00
|
|
|
config ARCH_FAMILY_LX7
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
---help---
|
|
|
|
Cadence® Tensilica® Xtensa® LX7 data plane processing unit (DPU).
|
|
|
|
The LX7 is a configurable and extensible processor core.
|
|
|
|
|
2016-11-16 13:48:13 +01:00
|
|
|
config ARCH_CHIP
|
|
|
|
string
|
2022-01-07 18:44:06 +01:00
|
|
|
default "esp32" if ARCH_CHIP_ESP32
|
|
|
|
default "esp32s2" if ARCH_CHIP_ESP32S2
|
|
|
|
default "esp32s3" if ARCH_CHIP_ESP32S3
|
2016-11-16 13:48:13 +01:00
|
|
|
|
|
|
|
config XTENSA_CP_LAZY
|
|
|
|
bool "Lazy co-processor state restoration"
|
|
|
|
default n
|
|
|
|
depends on EXPERIMENTAL
|
|
|
|
---help---
|
|
|
|
NuttX logic saves and restores the co-processor enabled (CPENABLE)
|
|
|
|
register on each context switch. This has disadvantages in that (1)
|
|
|
|
co-processor context will be saved and restored even if the co-
|
|
|
|
processor was never used, and (2) tasks must explicitly enable and
|
|
|
|
disable co-processors.
|
|
|
|
|
2017-06-28 21:16:48 +02:00
|
|
|
An alternative, "lazy" co-processor state restore is enabled with
|
2016-11-16 13:48:13 +01:00
|
|
|
this option. That logic works like as follows:
|
|
|
|
|
|
|
|
a. CPENABLE is set to zero on each context switch, disabling all co-
|
|
|
|
processors.
|
|
|
|
b. If/when the task attempts to use the disabled co-processor, an
|
|
|
|
exception occurs
|
|
|
|
c. The co-processor exception handler re-enables the co-processor.
|
|
|
|
|
2016-10-14 21:17:48 +02:00
|
|
|
config XTENSA_USE_OVLY
|
2016-10-22 20:25:56 +02:00
|
|
|
bool
|
2016-10-14 21:17:48 +02:00
|
|
|
default n
|
2016-10-22 20:25:56 +02:00
|
|
|
---help---
|
|
|
|
Enable code overlay support. This option is currently unsupported.
|
2016-10-14 21:17:48 +02:00
|
|
|
|
2016-10-29 17:36:33 +02:00
|
|
|
config XTENSA_CP_INITSET
|
2016-10-29 18:27:46 +02:00
|
|
|
hex "Default co-processor enables"
|
|
|
|
default 0x0001
|
|
|
|
range 0 0xffff
|
2016-11-16 13:48:13 +01:00
|
|
|
depends on !XTENSA_CP_LAZY
|
2016-10-29 17:36:33 +02:00
|
|
|
---help---
|
|
|
|
Co-processors may be enabled on a thread by calling xtensa_coproc_enable()
|
|
|
|
and disabled by calling xtensa_coproc_disable(). Some co-processors
|
|
|
|
should be enabled on all threads by default. That set of co-processors
|
|
|
|
is provided by CONFIG_XTENSA_CP_INITSET. Each bit corresponds to one
|
|
|
|
coprocessor with the same bit layout as for the CPENABLE register.
|
|
|
|
|
2020-11-12 10:45:00 +01:00
|
|
|
config XTENSA_DUMPBT_ON_ASSERT
|
|
|
|
bool "Dump backtrace on assertions"
|
|
|
|
default y
|
|
|
|
depends on DEBUG_ALERT
|
|
|
|
---help---
|
|
|
|
Enable a backtrace dump on assertions.
|
|
|
|
|
|
|
|
config XTENSA_BTDEPTH
|
|
|
|
int "Backtrace depth"
|
|
|
|
default 50
|
|
|
|
depends on XTENSA_DUMPBT_ON_ASSERT
|
|
|
|
---help---
|
|
|
|
This is the depth of the backtrace.
|
|
|
|
|
2020-12-01 17:53:57 +01:00
|
|
|
config XTENSA_INTBACKTRACE
|
|
|
|
bool "Full backtrace from interrupts"
|
|
|
|
default n
|
|
|
|
depends on XTENSA_DUMPBT_ON_ASSERT
|
|
|
|
---help---
|
|
|
|
Add necessary logic to be able to have a full backtrace from an interrupt context.
|
|
|
|
|
2021-02-08 10:16:04 +01:00
|
|
|
config XTENSA_IMEM_USE_SEPARATE_HEAP
|
2020-10-13 17:50:52 +02:00
|
|
|
bool "Use a separate heap for internal memory"
|
2022-06-06 16:39:40 +02:00
|
|
|
select ARCH_HAVE_EXTRA_HEAPS
|
2020-09-17 22:35:09 +02:00
|
|
|
default n
|
2021-12-14 08:52:49 +01:00
|
|
|
---help---
|
2020-10-13 17:50:52 +02:00
|
|
|
This is a separate internal heap that's used by drivers when certain operations
|
2020-10-13 11:46:41 +02:00
|
|
|
are not possible with the provided buffer(s).
|
2020-11-28 04:48:10 +01:00
|
|
|
Mainly, when the provided buffer comes from external RAM and a DMA or flash
|
2020-10-13 11:46:41 +02:00
|
|
|
operation is going to be performed.
|
2021-03-08 09:58:09 +01:00
|
|
|
This separate heap will be part of the internal DRAM.
|
2021-02-08 10:16:04 +01:00
|
|
|
|
2020-09-17 15:22:30 +02:00
|
|
|
config XTENSA_IMEM_REGION_SIZE
|
2020-09-17 22:35:09 +02:00
|
|
|
hex "DRAM region size for internal use"
|
2021-03-08 09:58:09 +01:00
|
|
|
depends on XTENSA_IMEM_USE_SEPARATE_HEAP
|
2021-01-27 14:34:46 +01:00
|
|
|
default 0x18000
|
2020-09-17 15:22:30 +02:00
|
|
|
|
2021-03-05 12:24:23 +01:00
|
|
|
config XTENSA_EXTMEM_BSS
|
|
|
|
bool "Allow BSS section in external memory"
|
|
|
|
default n
|
2021-12-14 08:52:49 +01:00
|
|
|
---help---
|
2021-03-05 12:24:23 +01:00
|
|
|
Adds a section and an attribute that allows to force variables into
|
|
|
|
the external memory.
|
|
|
|
|
2021-11-24 15:23:14 +01:00
|
|
|
config XTENSA_SEMIHOSTING_HOSTFS
|
|
|
|
bool "Semihosting HostFS"
|
|
|
|
depends on FS_HOSTFS
|
|
|
|
---help---
|
|
|
|
Mount HostFS through semihosting.
|
|
|
|
|
|
|
|
This doesn't support some directory operations like readdir because
|
|
|
|
of the limitations of semihosting mechanism.
|
|
|
|
|
|
|
|
if XTENSA_SEMIHOSTING_HOSTFS
|
2021-11-22 12:26:08 +01:00
|
|
|
|
2021-11-24 15:23:14 +01:00
|
|
|
config XTENSA_SEMIHOSTING_HOSTFS_CACHE_COHERENCE
|
2021-11-22 12:26:08 +01:00
|
|
|
bool "Cache coherence in semihosting hostfs"
|
|
|
|
depends on ARCH_DCACHE
|
|
|
|
---help---
|
|
|
|
Flush & Invalidte cache before & after sim call.
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
2021-08-04 11:16:26 +02:00
|
|
|
choice
|
|
|
|
prompt "Toolchain Selection"
|
|
|
|
default XTENSA_TOOLCHAIN_ESP
|
|
|
|
|
|
|
|
config XTENSA_TOOLCHAIN_XCC
|
|
|
|
bool "Xtensa Toolchain use GCC as front end"
|
|
|
|
select ARCH_TOOLCHAIN_GNU
|
|
|
|
|
|
|
|
config XTENSA_TOOLCHAIN_XCLANG
|
|
|
|
bool "Xtensa Toolchain use CLANG as front end"
|
|
|
|
select ARCH_TOOLCHAIN_GNU
|
|
|
|
|
|
|
|
config XTENSA_TOOLCHAIN_ESP
|
|
|
|
bool "ESP toolchain for xtensa"
|
|
|
|
select ARCH_TOOLCHAIN_GNU
|
|
|
|
|
|
|
|
endchoice
|
|
|
|
|
2021-10-18 20:55:09 +02:00
|
|
|
source "arch/xtensa/src/lx6/Kconfig"
|
2022-01-07 18:44:06 +01:00
|
|
|
|
2016-10-18 17:41:16 +02:00
|
|
|
if ARCH_CHIP_ESP32
|
2021-07-20 13:10:10 +02:00
|
|
|
source "arch/xtensa/src/esp32/Kconfig"
|
2016-10-18 17:41:16 +02:00
|
|
|
endif
|
2016-10-12 21:11:05 +02:00
|
|
|
|
2021-07-20 13:10:10 +02:00
|
|
|
source "arch/xtensa/src/lx7/Kconfig"
|
2022-01-07 18:44:06 +01:00
|
|
|
|
2021-05-20 22:07:54 +02:00
|
|
|
if ARCH_CHIP_ESP32S2
|
2021-07-20 13:10:10 +02:00
|
|
|
source "arch/xtensa/src/esp32s2/Kconfig"
|
2021-05-20 22:07:54 +02:00
|
|
|
endif
|
|
|
|
|
2022-01-07 18:44:06 +01:00
|
|
|
if ARCH_CHIP_ESP32S3
|
|
|
|
source "arch/xtensa/src/esp32s3/Kconfig"
|
|
|
|
endif
|
|
|
|
|
2016-10-12 21:11:05 +02:00
|
|
|
endif # ARCH_XTENSA
|