mirror of
https://github.com/espressif/esp-idf.git
synced 2025-10-04 02:50:58 +02:00
Spiram: Add option to reserve MMU banks; add himem API to make use of those banks
This commit is contained in:
@@ -67,15 +67,24 @@ endchoice
|
||||
|
||||
choice SPIRAM_TYPE
|
||||
prompt "Type of SPI RAM chip in use"
|
||||
default SPIRAM_TYPE_ESPPSRAM32
|
||||
default SPIRAM_TYPE_AUTO
|
||||
|
||||
config SPIRAM_TYPE_AUTO
|
||||
bool "Auto-detect"
|
||||
|
||||
config SPIRAM_TYPE_ESPPSRAM32
|
||||
bool "ESP-PSRAM32 or IS25WP032"
|
||||
|
||||
config SPIRAM_TYPE_ESPPSRAM64
|
||||
bool "ESP-PSRAM64 or LY68L6400"
|
||||
|
||||
endchoice
|
||||
|
||||
config SPIRAM_SIZE
|
||||
int
|
||||
default -1 if SPIRAM_TYPE_AUTO
|
||||
default 4194304 if SPIRAM_TYPE_ESPPSRAM32
|
||||
default 8388608 if SPIRAM_TYPE_ESPPSRAM64
|
||||
default 0
|
||||
|
||||
choice SPIRAM_SPEED
|
||||
@@ -120,6 +129,29 @@ config SPIRAM_CACHE_WORKAROUND
|
||||
This will also not use any bits of newlib that are located in ROM, opting for a version that is compiled
|
||||
with the workaround and located in flash instead.
|
||||
|
||||
config SPIRAM_BANKSWITCH_ENABLE
|
||||
bool "Enable bank switching for >4MiB external RAM"
|
||||
default y
|
||||
depends on SPIRAM_USE_MEMMAP || SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC
|
||||
help
|
||||
The ESP32 only supports 4MiB of external RAM in its address space. The hardware does support larger
|
||||
memories, but these have to be bank-switched in and out of this address space. Enabling this allows you
|
||||
to reserve some MMU pages for this, which allows the use of the esp_himem api to manage these banks.
|
||||
|
||||
#Note that this is limited to 62 banks, as esp_spiram_writeback_cache needs some kind of mapping of some banks
|
||||
#below that mark to work. We cannot at this moment guarantee this to exist when himem is enabled.
|
||||
config SPIRAM_BANKSWITCH_RESERVE
|
||||
int "Amount of 32K pages to reserve for bank switching"
|
||||
depends on SPIRAM_BANKSWITCH_ENABLE
|
||||
default 8
|
||||
range 1 62
|
||||
help
|
||||
Select the amount of banks reserved for bank switching. Note that the amount of RAM allocatable with
|
||||
malloc/esp_heap_alloc_caps will decrease by 32K for each page reserved here.
|
||||
|
||||
Note that this reservation is only actually done if your program actually uses the himem API. Without
|
||||
any himem calls, the reservation is not done and the original amount of memory will be available
|
||||
to malloc/esp_heap_alloc_caps.
|
||||
|
||||
config SPIRAM_MALLOC_ALWAYSINTERNAL
|
||||
int "Maximum malloc() size, in bytes, to always put in internal memory"
|
||||
|
Reference in New Issue
Block a user