esp32s2beta: Apply new Kconfig names to esp32s2beta
Still using ESP32_xxx prefix on all chips: CORE_DUMP, APP_TRACE Still using the same config prefix and duplicate names in esp32 & esp32s2beta: SPIRAM, PM
This commit is contained in:
parent
82c27a39f2
commit
8d949c3c9d
13 changed files with 184 additions and 621 deletions
|
@ -48,7 +48,7 @@ void bootloader_clock_configure()
|
||||||
clk_cfg.xtal_freq = CONFIG_ESP32_XTAL_FREQ;
|
clk_cfg.xtal_freq = CONFIG_ESP32_XTAL_FREQ;
|
||||||
clk_cfg.cpu_freq_mhz = cpu_freq_mhz;
|
clk_cfg.cpu_freq_mhz = cpu_freq_mhz;
|
||||||
#elif CONFIG_IDF_TARGET_ESP32S2BETA
|
#elif CONFIG_IDF_TARGET_ESP32S2BETA
|
||||||
clk_cfg.xtal_freq = CONFIG_ESP32_XTAL_FREQ;
|
clk_cfg.xtal_freq = CONFIG_ESP32S2_XTAL_FREQ;
|
||||||
clk_cfg.cpu_freq = RTC_CPU_FREQ_80M;
|
clk_cfg.cpu_freq = RTC_CPU_FREQ_80M;
|
||||||
#endif
|
#endif
|
||||||
clk_cfg.slow_freq = rtc_clk_slow_freq_get();
|
clk_cfg.slow_freq = rtc_clk_slow_freq_get();
|
||||||
|
|
|
@ -172,12 +172,14 @@ static esp_err_t bootloader_main()
|
||||||
}
|
}
|
||||||
flash_gpio_configure(&fhdr);
|
flash_gpio_configure(&fhdr);
|
||||||
|
|
||||||
|
#ifdef CONFIG_IDF_TARGET_ESP32
|
||||||
int rated_freq = bootloader_clock_get_rated_freq_mhz();
|
int rated_freq = bootloader_clock_get_rated_freq_mhz();
|
||||||
if (rated_freq < CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ) {
|
if (rated_freq < CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ) {
|
||||||
ESP_LOGE(TAG, "Chip CPU frequency rated for %dMHz, configured for %dMHz. Modify CPU frequency in menuconfig",
|
ESP_LOGE(TAG, "Chip CPU frequency rated for %dMHz, configured for %dMHz. Modify CPU frequency in menuconfig",
|
||||||
rated_freq, CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ);
|
rated_freq, CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ);
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bootloader_clock_configure();
|
bootloader_clock_configure();
|
||||||
uart_console_configure();
|
uart_console_configure();
|
||||||
|
@ -675,7 +677,7 @@ void __assert_func(const char *file, int line, const char *func, const char *exp
|
||||||
|
|
||||||
void abort()
|
void abort()
|
||||||
{
|
{
|
||||||
#if !CONFIG_ESP32_PANIC_SILENT_REBOOT
|
#if !(CONFIG_ESP32_PANIC_SILENT_REBOOT || CONFIG_ESP32S2_PANIC_SILENT_REBOOT)
|
||||||
ets_printf("abort() was called at PC 0x%08x\r\n", (intptr_t)__builtin_return_address(0) - 3);
|
ets_printf("abort() was called at PC 0x%08x\r\n", (intptr_t)__builtin_return_address(0) - 3);
|
||||||
#endif
|
#endif
|
||||||
if (esp_cpu_in_ocd_debug_mode()) {
|
if (esp_cpu_in_ocd_debug_mode()) {
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
menu "ESP32-specific"
|
menu "ESP32-specific"
|
||||||
|
# TODO: this component simply shouldn't be included
|
||||||
|
# in the build at the CMake level, but this is currently
|
||||||
|
# not working so we just hide all items here
|
||||||
|
visible if CONFIG_IDF_TARGET_ESP32
|
||||||
|
|
||||||
choice ESP32_DEFAULT_CPU_FREQ_MHZ
|
choice ESP32_DEFAULT_CPU_FREQ_MHZ
|
||||||
prompt "CPU frequency"
|
prompt "CPU frequency"
|
||||||
|
@ -446,8 +450,6 @@ menu "ESP32-specific"
|
||||||
e.g. GCOV data dump.
|
e.g. GCOV data dump.
|
||||||
|
|
||||||
config ESP32_BROWNOUT_DET
|
config ESP32_BROWNOUT_DET
|
||||||
#The brownout detector code is disabled (by making it depend on a nonexisting symbol) because the current
|
|
||||||
#revision of ESP32 silicon has a bug in the brown-out detector, rendering it unusable for resetting the CPU.
|
|
||||||
bool "Hardware brownout detect & reset"
|
bool "Hardware brownout detect & reset"
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
|
|
|
@ -1,117 +1,117 @@
|
||||||
menu "ESP32S2-specific"
|
menu "ESP32S2-specific"
|
||||||
|
|
||||||
choice ESP32_DEFAULT_CPU_FREQ_MHZ
|
choice ESP32S2_DEFAULT_CPU_FREQ_MHZ
|
||||||
prompt "CPU frequency"
|
prompt "CPU frequency"
|
||||||
default ESP32_DEFAULT_CPU_FREQ_160
|
default ESP32S2_DEFAULT_CPU_FREQ_160
|
||||||
help
|
help
|
||||||
CPU frequency to be set on application startup.
|
CPU frequency to be set on application startup.
|
||||||
|
|
||||||
config ESP32_DEFAULT_CPU_FREQ_80
|
config ESP32S2_DEFAULT_CPU_FREQ_80
|
||||||
bool "80 MHz"
|
bool "80 MHz"
|
||||||
config ESP32_DEFAULT_CPU_FREQ_160
|
config ESP32S2_DEFAULT_CPU_FREQ_160
|
||||||
bool "160 MHz"
|
bool "160 MHz"
|
||||||
config ESP32_DEFAULT_CPU_FREQ_240
|
config ESP32S2_DEFAULT_CPU_FREQ_240
|
||||||
bool "240 MHz"
|
bool "240 MHz"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config ESP32_DEFAULT_CPU_FREQ_MHZ
|
config ESP32S2_DEFAULT_CPU_FREQ_MHZ
|
||||||
int
|
int
|
||||||
default 80 if ESP32_DEFAULT_CPU_FREQ_80
|
default 80 if ESP32S2_DEFAULT_CPU_FREQ_80
|
||||||
default 160 if ESP32_DEFAULT_CPU_FREQ_160
|
default 160 if ESP32S2_DEFAULT_CPU_FREQ_160
|
||||||
default 240 if ESP32_DEFAULT_CPU_FREQ_240
|
default 240 if ESP32S2_DEFAULT_CPU_FREQ_240
|
||||||
|
|
||||||
menu "Cache config"
|
menu "Cache config"
|
||||||
|
|
||||||
choice INSTRUCTION_CACHE_SIZE
|
choice ESP32S2_INSTRUCTION_CACHE_SIZE
|
||||||
prompt "Instruction cache size"
|
prompt "Instruction cache size"
|
||||||
default INSTRUCTION_CACHE_8KB
|
default ESP32S2_INSTRUCTION_CACHE_8KB
|
||||||
help
|
help
|
||||||
Instruction cache size to be set on application startup.
|
Instruction cache size to be set on application startup.
|
||||||
If you use 8KB instruction cache rather than 16KB instruction cache, the other 8KB will be added to the heap.
|
If you use 8KB instruction cache rather than 16KB instruction cache, the other 8KB will be added to the heap.
|
||||||
|
|
||||||
config INSTRUCTION_CACHE_8KB
|
config ESP32S2_INSTRUCTION_CACHE_8KB
|
||||||
bool "8KB"
|
bool "8KB"
|
||||||
config INSTRUCTION_CACHE_16KB
|
config ESP32S2_INSTRUCTION_CACHE_16KB
|
||||||
bool "16KB"
|
bool "16KB"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
choice INSTRUCTION_CACHE_ASSOCIATED_WAYS
|
choice ESP32S2_INSTRUCTION_CACHE_ASSOCIATED_WAYS
|
||||||
prompt "Instruction cache associated ways"
|
prompt "Instruction cache associated ways"
|
||||||
default INSTRUCTION_CACHE_8WAYS
|
default ESP32S2_INSTRUCTION_CACHE_8WAYS
|
||||||
help
|
help
|
||||||
Instruction cache associated ways to be set on application startup.
|
Instruction cache associated ways to be set on application startup.
|
||||||
|
|
||||||
config INSTRUCTION_CACHE_4WAYS
|
config ESP32S2_INSTRUCTION_CACHE_4WAYS
|
||||||
bool "4 ways"
|
bool "4 ways"
|
||||||
config INSTRUCTION_CACHE_8WAYS
|
config ESP32S2_INSTRUCTION_CACHE_8WAYS
|
||||||
bool "8 ways"
|
bool "8 ways"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
choice INSTRUCTION_CACHE_LINE_SIZE
|
choice ESP32S2_INSTRUCTION_CACHE_LINE_SIZE
|
||||||
prompt "Instruction cache line size"
|
prompt "Instruction cache line size"
|
||||||
default INSTRUCTION_CACHE_LINE_32B
|
default ESP32S2_INSTRUCTION_CACHE_LINE_32B
|
||||||
help
|
help
|
||||||
Instruction cache line size to be set on application startup.
|
Instruction cache line size to be set on application startup.
|
||||||
|
|
||||||
config INSTRUCTION_CACHE_LINE_16B
|
config ESP32S2_INSTRUCTION_CACHE_LINE_16B
|
||||||
bool "16 Bytes"
|
bool "16 Bytes"
|
||||||
config INSTRUCTION_CACHE_LINE_32B
|
config ESP32S2_INSTRUCTION_CACHE_LINE_32B
|
||||||
bool "32 Bytes"
|
bool "32 Bytes"
|
||||||
config INSTRUCTION_CACHE_LINE_64B
|
config ESP32S2_INSTRUCTION_CACHE_LINE_64B
|
||||||
bool "64 Bytes"
|
bool "64 Bytes"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
choice DATA_CACHE_SIZE
|
choice ESP32S2_DATA_CACHE_SIZE
|
||||||
prompt "Data cache size"
|
prompt "Data cache size"
|
||||||
default DATA_CACHE_8KB
|
default ESP32S2_DATA_CACHE_8KB
|
||||||
help
|
help
|
||||||
Data cache size to be set on application startup.
|
Data cache size to be set on application startup.
|
||||||
If you use 8KB data cache rather than 16KB data cache, the other 8KB will be added to the heap.
|
If you use 8KB data cache rather than 16KB data cache, the other 8KB will be added to the heap.
|
||||||
|
|
||||||
config DATA_CACHE_0KB
|
config ESP32S2_DATA_CACHE_0KB
|
||||||
depends on !SPIRAM_SUPPORT
|
depends on !ESP32S2_SPIRAM_SUPPORT
|
||||||
bool "0KB"
|
bool "0KB"
|
||||||
config DATA_CACHE_8KB
|
config ESP32S2_DATA_CACHE_8KB
|
||||||
bool "8KB"
|
bool "8KB"
|
||||||
config DATA_CACHE_16KB
|
config ESP32S2_DATA_CACHE_16KB
|
||||||
bool "16KB"
|
bool "16KB"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
choice DATA_CACHE_ASSOCIATED_WAYS
|
choice ESP32S2_DATA_CACHE_ASSOCIATED_WAYS
|
||||||
prompt "Data cache associated ways"
|
prompt "Data cache associated ways"
|
||||||
default DATA_CACHE_8WAYS
|
default ESP32S2_DATA_CACHE_8WAYS
|
||||||
help
|
help
|
||||||
Data cache associated ways to be set on application startup.
|
Data cache associated ways to be set on application startup.
|
||||||
|
|
||||||
config DATA_CACHE_4WAYS
|
config ESP32S2_DATA_CACHE_4WAYS
|
||||||
bool "4 ways"
|
bool "4 ways"
|
||||||
config DATA_CACHE_8WAYS
|
config ESP32S2_DATA_CACHE_8WAYS
|
||||||
bool "8 ways"
|
bool "8 ways"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
choice DATA_CACHE_LINE_SIZE
|
choice ESP32S2_DATA_CACHE_LINE_SIZE
|
||||||
prompt "Data cache line size"
|
prompt "Data cache line size"
|
||||||
default DATA_CACHE_LINE_32B
|
default ESP32S2_DATA_CACHE_LINE_32B
|
||||||
help
|
help
|
||||||
Data cache line size to be set on application startup.
|
Data cache line size to be set on application startup.
|
||||||
|
|
||||||
config DATA_CACHE_LINE_16B
|
config ESP32S2_DATA_CACHE_LINE_16B
|
||||||
bool "16 Bytes"
|
bool "16 Bytes"
|
||||||
config DATA_CACHE_LINE_32B
|
config ESP32S2_DATA_CACHE_LINE_32B
|
||||||
bool "32 Bytes"
|
bool "32 Bytes"
|
||||||
config DATA_CACHE_LINE_64B
|
config ESP32S2_DATA_CACHE_LINE_64B
|
||||||
bool "64 Bytes"
|
bool "64 Bytes"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config RODATA_USE_DATA_CACHE
|
config ESP32S2_RODATA_USE_DATA_CACHE
|
||||||
depends on DATA_CACHE_8KB || DATA_CACHE_16KB
|
depends on ESP32S2_DATA_CACHE_8KB || ESP32S2_DATA_CACHE_16KB
|
||||||
bool "Use data cache rather than instruction cache to access read only data"
|
bool "Use data cache rather than instruction cache to access read only data"
|
||||||
default "n"
|
default "n"
|
||||||
help
|
help
|
||||||
If enabled, CPU will access rodata through data cache, which will reduce the overload
|
If enabled, CPU will access rodata through data cache, which will reduce the overload
|
||||||
of instruction cache, however will increase the overload of data cache.
|
of instruction cache, however will increase the overload of data cache.
|
||||||
|
|
||||||
config ENABLE_INSTRUCTION_CACHE_WRAP
|
config ESP32S2_INSTRUCTION_CACHE_WRAP
|
||||||
bool "Enable instruction cache wrap"
|
bool "Enable instruction cache wrap"
|
||||||
default "n"
|
default "n"
|
||||||
help
|
help
|
||||||
|
@ -119,7 +119,7 @@ menu "ESP32S2-specific"
|
||||||
The wrap length equals to INSTRUCTION_CACHE_LINE_SIZE.
|
The wrap length equals to INSTRUCTION_CACHE_LINE_SIZE.
|
||||||
However, it depends on complex conditions.
|
However, it depends on complex conditions.
|
||||||
|
|
||||||
config ENABLE_DATA_CACHE_WRAP
|
config ESP32S2_DATA_CACHE_WRAP
|
||||||
bool "Enable data cache wrap"
|
bool "Enable data cache wrap"
|
||||||
default "n"
|
default "n"
|
||||||
help
|
help
|
||||||
|
@ -127,9 +127,9 @@ menu "ESP32S2-specific"
|
||||||
The wrap length equals to DATA_CACHE_LINE_SIZE.
|
The wrap length equals to DATA_CACHE_LINE_SIZE.
|
||||||
However, it depends on complex conditions.
|
However, it depends on complex conditions.
|
||||||
|
|
||||||
endmenu
|
endmenu # Cache config
|
||||||
|
|
||||||
config SPIRAM_SUPPORT
|
config ESP32S2_SPIRAM_SUPPORT
|
||||||
bool "Support for external, SPI-connected RAM"
|
bool "Support for external, SPI-connected RAM"
|
||||||
default "n"
|
default "n"
|
||||||
help
|
help
|
||||||
|
@ -137,7 +137,7 @@ menu "ESP32S2-specific"
|
||||||
main SPI flash chip.
|
main SPI flash chip.
|
||||||
|
|
||||||
menu "SPI RAM config"
|
menu "SPI RAM config"
|
||||||
depends on SPIRAM_SUPPORT
|
depends on ESP32S2_SPIRAM_SUPPORT
|
||||||
|
|
||||||
config SPIRAM_BOOT_INIT
|
config SPIRAM_BOOT_INIT
|
||||||
bool "Initialize SPI RAM when booting the ESP32"
|
bool "Initialize SPI RAM when booting the ESP32"
|
||||||
|
@ -195,21 +195,21 @@ menu "ESP32S2-specific"
|
||||||
default 8388608 if SPIRAM_TYPE_ESPPSRAM64
|
default 8388608 if SPIRAM_TYPE_ESPPSRAM64
|
||||||
default 0
|
default 0
|
||||||
|
|
||||||
config INSTRUCTION_USE_SPIRAM
|
config SPIRAM_FETCH_INSTRUCTIONS
|
||||||
bool "Cache fetch instructions from SPI RAM"
|
bool "Cache fetch instructions from SPI RAM"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
If enabled, instruction in flash will be copied into SPIRAM.
|
If enabled, instruction in flash will be copied into SPIRAM.
|
||||||
If you also enable RODATA_USE_SPIRAM option, you can run the instruction when you are erasing or programming the flash.
|
If you also enable RODATA_USE_SPIRAM option, you can run the instruction when you are erasing or programming the flash.
|
||||||
|
|
||||||
config RODATA_USE_SPIRAM
|
config SPIRAM_RODATA
|
||||||
bool "Cache load read only data from SPI RAM"
|
bool "Cache load read only data from SPI RAM"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
If enabled, radata in flash will be copied into SPIRAM.
|
If enabled, radata in flash will be copied into SPIRAM.
|
||||||
If you also enable INSTRUCTION_USE_SPIRAM option, you can run the instruction when you erasing or programming the flash.
|
If you also enable INSTRUCTION_USE_SPIRAM option, you can run the instruction when you erasing or programming the flash.
|
||||||
|
|
||||||
config USE_AHB_DBUS3_ACCESS_SPIRAM
|
config SPIRAM_USE_AHB_DBUS3
|
||||||
bool "Enable AHB DBUS3 to access SPIRAM"
|
bool "Enable AHB DBUS3 to access SPIRAM"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
|
@ -315,86 +315,30 @@ menu "ESP32S2-specific"
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
config MEMMAP_TRACEMEM
|
config ESP32S2_MEMMAP_TRACEMEM
|
||||||
bool
|
bool
|
||||||
default "n"
|
default "n"
|
||||||
|
|
||||||
config MEMMAP_TRACEMEM_TWOBANKS
|
config ESP32S2_TRAX
|
||||||
bool
|
|
||||||
default "n"
|
|
||||||
|
|
||||||
config ESP32_TRAX
|
|
||||||
bool "Use TRAX tracing feature"
|
bool "Use TRAX tracing feature"
|
||||||
default "n"
|
default "n"
|
||||||
select MEMMAP_TRACEMEM
|
select ESP32S2_MEMMAP_TRACEMEM
|
||||||
help
|
help
|
||||||
The ESP32 contains a feature which allows you to trace the execution path the processor
|
The ESP32S2 contains a feature which allows you to trace the execution path the processor
|
||||||
has taken through the program. This is stored in a chunk of 32K (16K for single-processor)
|
|
||||||
of memory that can't be used for general purposes anymore. Disable this if you do not know
|
|
||||||
what this is.
|
|
||||||
|
|
||||||
config ESP32_TRAX_TWOBANKS
|
|
||||||
bool "Reserve memory for tracing both pro as well as app cpu execution"
|
|
||||||
default "n"
|
|
||||||
depends on ESP32_TRAX && !FREERTOS_UNICORE
|
|
||||||
select MEMMAP_TRACEMEM_TWOBANKS
|
|
||||||
help
|
|
||||||
The ESP32 contains a feature which allows you to trace the execution path the processor
|
|
||||||
has taken through the program. This is stored in a chunk of 32K (16K for single-processor)
|
has taken through the program. This is stored in a chunk of 32K (16K for single-processor)
|
||||||
of memory that can't be used for general purposes anymore. Disable this if you do not know
|
of memory that can't be used for general purposes anymore. Disable this if you do not know
|
||||||
what this is.
|
what this is.
|
||||||
|
|
||||||
# Memory to reverse for trace, used in linker script
|
# Memory to reverse for trace, used in linker script
|
||||||
config TRACEMEM_RESERVE_DRAM
|
config ESP32S2_TRACEMEM_RESERVE_DRAM
|
||||||
hex
|
hex
|
||||||
default 0x8000 if MEMMAP_TRACEMEM && MEMMAP_TRACEMEM_TWOBANKS
|
default 0x4000 if ESP32S2_MEMMAP_TRACEMEM
|
||||||
default 0x4000 if MEMMAP_TRACEMEM && !MEMMAP_TRACEMEM_TWOBANKS
|
|
||||||
default 0x0
|
default 0x0
|
||||||
|
|
||||||
choice ESP32_COREDUMP_TO_FLASH_OR_UART
|
|
||||||
prompt "Core dump destination"
|
|
||||||
default ESP32_ENABLE_COREDUMP_TO_NONE
|
|
||||||
help
|
|
||||||
Select place to store core dump: flash, uart or none (to disable core dumps generation).
|
|
||||||
|
|
||||||
If core dump is configured to be stored in flash and custom partition table is used add
|
choice ESP32S2_UNIVERSAL_MAC_ADDRESSES
|
||||||
corresponding entry to your CSV. For examples, please see predefined partition table CSV descriptions
|
|
||||||
in the components/partition_table directory.
|
|
||||||
|
|
||||||
config ESP32_ENABLE_COREDUMP_TO_FLASH
|
|
||||||
bool "Flash"
|
|
||||||
select ESP32_ENABLE_COREDUMP
|
|
||||||
config ESP32_ENABLE_COREDUMP_TO_UART
|
|
||||||
bool "UART"
|
|
||||||
select ESP32_ENABLE_COREDUMP
|
|
||||||
config ESP32_ENABLE_COREDUMP_TO_NONE
|
|
||||||
bool "None"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config ESP32_ENABLE_COREDUMP
|
|
||||||
bool
|
|
||||||
default F
|
|
||||||
help
|
|
||||||
Enables/disable core dump module.
|
|
||||||
|
|
||||||
config ESP32_CORE_DUMP_UART_DELAY
|
|
||||||
int "Core dump print to UART delay"
|
|
||||||
depends on ESP32_ENABLE_COREDUMP_TO_UART
|
|
||||||
default 0
|
|
||||||
help
|
|
||||||
Config delay (in ms) before printing core dump to UART.
|
|
||||||
Delay can be interrupted by pressing Enter key.
|
|
||||||
|
|
||||||
config ESP32_CORE_DUMP_LOG_LEVEL
|
|
||||||
int "Core dump module logging level"
|
|
||||||
depends on ESP32_ENABLE_COREDUMP
|
|
||||||
default 1
|
|
||||||
help
|
|
||||||
Config core dump module logging level (0-5).
|
|
||||||
|
|
||||||
choice NUMBER_OF_UNIVERSAL_MAC_ADDRESS
|
|
||||||
bool "Number of universally administered (by IEEE) MAC address"
|
bool "Number of universally administered (by IEEE) MAC address"
|
||||||
default FOUR_UNIVERSAL_MAC_ADDRESS
|
default ESP32S2_UNIVERSAL_MAC_ADDRESSES_FOUR
|
||||||
help
|
help
|
||||||
Configure the number of universally administered (by IEEE) MAC addresses.
|
Configure the number of universally administered (by IEEE) MAC addresses.
|
||||||
During initialisation, MAC addresses for each network interface are generated or derived from a
|
During initialisation, MAC addresses for each network interface are generated or derived from a
|
||||||
|
@ -411,338 +355,68 @@ menu "ESP32S2-specific"
|
||||||
a custom universal MAC address range, the correct setting will depend on the allocation of MAC
|
a custom universal MAC address range, the correct setting will depend on the allocation of MAC
|
||||||
addresses in this range (either 2 or 4 per device.)
|
addresses in this range (either 2 or 4 per device.)
|
||||||
|
|
||||||
config TWO_UNIVERSAL_MAC_ADDRESS
|
config ESP32S2_UNIVERSAL_MAC_ADDRESSES_TWO
|
||||||
bool "Two"
|
bool "Two"
|
||||||
config FOUR_UNIVERSAL_MAC_ADDRESS
|
config ESP32S2_UNIVERSAL_MAC_ADDRESSES_FOUR
|
||||||
bool "Four"
|
bool "Four"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config NUMBER_OF_UNIVERSAL_MAC_ADDRESS
|
config ESP32S2_UNIVERSAL_MAC_ADDRESSES
|
||||||
int
|
int
|
||||||
default 2 if TWO_UNIVERSAL_MAC_ADDRESS
|
default 2 if ESP32S2_UNIVERSAL_MAC_ADDRESSES_TWO
|
||||||
default 4 if FOUR_UNIVERSAL_MAC_ADDRESS
|
default 4 if ESP32S2_UNIVERSAL_MAC_ADDRESSES_FOUR
|
||||||
|
|
||||||
config SYSTEM_EVENT_QUEUE_SIZE
|
choice ESP32S2__PANIC
|
||||||
int "System event queue size"
|
|
||||||
default 32
|
|
||||||
help
|
|
||||||
Config system event queue size in different application.
|
|
||||||
|
|
||||||
config SYSTEM_EVENT_TASK_STACK_SIZE
|
|
||||||
int "Event loop task stack size"
|
|
||||||
default 2304
|
|
||||||
help
|
|
||||||
Config system event task stack size in different application.
|
|
||||||
|
|
||||||
config MAIN_TASK_STACK_SIZE
|
|
||||||
int "Main task stack size"
|
|
||||||
default 3584
|
|
||||||
help
|
|
||||||
Configure the "main task" stack size. This is the stack of the task
|
|
||||||
which calls app_main(). If app_main() returns then this task is deleted
|
|
||||||
and its stack memory is freed.
|
|
||||||
|
|
||||||
config IPC_TASK_STACK_SIZE
|
|
||||||
int "Inter-Processor Call (IPC) task stack size"
|
|
||||||
default 1024
|
|
||||||
range 512 65536 if !ESP32_APPTRACE_ENABLE
|
|
||||||
range 2048 65536 if ESP32_APPTRACE_ENABLE
|
|
||||||
help
|
|
||||||
Configure the IPC tasks stack size. One IPC task runs on each core
|
|
||||||
(in dual core mode), and allows for cross-core function calls.
|
|
||||||
|
|
||||||
See IPC documentation for more details.
|
|
||||||
|
|
||||||
The default stack size should be enough for most common use cases.
|
|
||||||
It can be shrunk if you are sure that you do not use any custom
|
|
||||||
IPC functionality.
|
|
||||||
|
|
||||||
config TIMER_TASK_STACK_SIZE
|
|
||||||
int "High-resolution timer task stack size"
|
|
||||||
default 3584
|
|
||||||
range 2048 65536
|
|
||||||
help
|
|
||||||
Configure the stack size of esp_timer/ets_timer task. This task is used
|
|
||||||
to dispatch callbacks of timers created using ets_timer and esp_timer
|
|
||||||
APIs. If you are seing stack overflow errors in timer task, increase
|
|
||||||
this value.
|
|
||||||
|
|
||||||
Note that this is not the same as FreeRTOS timer task. To configure
|
|
||||||
FreeRTOS timer task size, see "FreeRTOS timer task stack size" option
|
|
||||||
in "FreeRTOS" menu.
|
|
||||||
|
|
||||||
choice NEWLIB_STDOUT_LINE_ENDING
|
|
||||||
prompt "Line ending for UART output"
|
|
||||||
default NEWLIB_STDOUT_LINE_ENDING_CRLF
|
|
||||||
help
|
|
||||||
This option allows configuring the desired line endings sent to UART
|
|
||||||
when a newline ('\n', LF) appears on stdout.
|
|
||||||
Three options are possible:
|
|
||||||
|
|
||||||
CRLF: whenever LF is encountered, prepend it with CR
|
|
||||||
|
|
||||||
LF: no modification is applied, stdout is sent as is
|
|
||||||
|
|
||||||
CR: each occurence of LF is replaced with CR
|
|
||||||
|
|
||||||
This option doesn't affect behavior of the UART driver (drivers/uart.h).
|
|
||||||
|
|
||||||
config NEWLIB_STDOUT_LINE_ENDING_CRLF
|
|
||||||
bool "CRLF"
|
|
||||||
config NEWLIB_STDOUT_LINE_ENDING_LF
|
|
||||||
bool "LF"
|
|
||||||
config NEWLIB_STDOUT_LINE_ENDING_CR
|
|
||||||
bool "CR"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
choice NEWLIB_STDIN_LINE_ENDING
|
|
||||||
prompt "Line ending for UART input"
|
|
||||||
default NEWLIB_STDIN_LINE_ENDING_CR
|
|
||||||
help
|
|
||||||
This option allows configuring which input sequence on UART produces
|
|
||||||
a newline ('\n', LF) on stdin.
|
|
||||||
Three options are possible:
|
|
||||||
|
|
||||||
CRLF: CRLF is converted to LF
|
|
||||||
|
|
||||||
LF: no modification is applied, input is sent to stdin as is
|
|
||||||
|
|
||||||
CR: each occurence of CR is replaced with LF
|
|
||||||
|
|
||||||
This option doesn't affect behavior of the UART driver (drivers/uart.h).
|
|
||||||
|
|
||||||
config NEWLIB_STDIN_LINE_ENDING_CRLF
|
|
||||||
bool "CRLF"
|
|
||||||
config NEWLIB_STDIN_LINE_ENDING_LF
|
|
||||||
bool "LF"
|
|
||||||
config NEWLIB_STDIN_LINE_ENDING_CR
|
|
||||||
bool "CR"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config NEWLIB_NANO_FORMAT
|
|
||||||
bool "Enable 'nano' formatting options for printf/scanf family"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
ESP32 ROM contains parts of newlib C library, including printf/scanf family
|
|
||||||
of functions. These functions have been compiled with so-called "nano"
|
|
||||||
formatting option. This option doesn't support 64-bit integer formats and C99
|
|
||||||
features, such as positional arguments.
|
|
||||||
|
|
||||||
For more details about "nano" formatting option, please see newlib readme file,
|
|
||||||
search for '--enable-newlib-nano-formatted-io':
|
|
||||||
https://sourceware.org/newlib/README
|
|
||||||
|
|
||||||
If this option is enabled, build system will use functions available in
|
|
||||||
ROM, reducing the application binary size. Functions available in ROM run
|
|
||||||
faster than functions which run from flash. Functions available in ROM can
|
|
||||||
also run when flash instruction cache is disabled.
|
|
||||||
|
|
||||||
If you need 64-bit integer formatting support or C99 features, keep this
|
|
||||||
option disabled.
|
|
||||||
|
|
||||||
choice CONSOLE_UART
|
|
||||||
prompt "UART for console output"
|
|
||||||
default CONSOLE_UART_DEFAULT
|
|
||||||
help
|
|
||||||
Select whether to use UART for console output (through stdout and stderr).
|
|
||||||
|
|
||||||
- Default is to use UART0 on pins GPIO1(TX) and GPIO3(RX).
|
|
||||||
- If "Custom" is selected, UART0 or UART1 can be chosen,
|
|
||||||
and any pins can be selected.
|
|
||||||
- If "None" is selected, there will be no console output on any UART, except
|
|
||||||
for initial output from ROM bootloader. This output can be further suppressed by
|
|
||||||
bootstrapping GPIO13 pin to low logic level.
|
|
||||||
|
|
||||||
config CONSOLE_UART_DEFAULT
|
|
||||||
bool "Default: UART0, TX=GPIO1, RX=GPIO3"
|
|
||||||
config CONSOLE_UART_CUSTOM
|
|
||||||
bool "Custom"
|
|
||||||
config CONSOLE_UART_NONE
|
|
||||||
bool "None"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
choice CONSOLE_UART_NUM
|
|
||||||
prompt "UART peripheral to use for console output (0-1)"
|
|
||||||
depends on CONSOLE_UART_CUSTOM
|
|
||||||
default CONSOLE_UART_CUSTOM_NUM_0
|
|
||||||
help
|
|
||||||
Due of a ROM bug, UART2 is not supported for console output
|
|
||||||
via ets_printf.
|
|
||||||
|
|
||||||
config CONSOLE_UART_CUSTOM_NUM_0
|
|
||||||
bool "UART0"
|
|
||||||
config CONSOLE_UART_CUSTOM_NUM_1
|
|
||||||
bool "UART1"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config CONSOLE_UART_NUM
|
|
||||||
int
|
|
||||||
default 0 if CONSOLE_UART_DEFAULT || CONSOLE_UART_NONE
|
|
||||||
default 0 if CONSOLE_UART_CUSTOM_NUM_0
|
|
||||||
default 1 if CONSOLE_UART_CUSTOM_NUM_1
|
|
||||||
|
|
||||||
config CONSOLE_UART_TX_GPIO
|
|
||||||
int "UART TX on GPIO#"
|
|
||||||
depends on CONSOLE_UART_CUSTOM
|
|
||||||
range 0 33
|
|
||||||
default 19
|
|
||||||
|
|
||||||
config CONSOLE_UART_RX_GPIO
|
|
||||||
int "UART RX on GPIO#"
|
|
||||||
depends on CONSOLE_UART_CUSTOM
|
|
||||||
range 0 39
|
|
||||||
default 21
|
|
||||||
|
|
||||||
config CONSOLE_UART_BAUDRATE
|
|
||||||
int "UART console baud rate"
|
|
||||||
depends on !CONSOLE_UART_NONE
|
|
||||||
default 115200
|
|
||||||
range 1200 4000000
|
|
||||||
|
|
||||||
config ULP_COPROC_ENABLED
|
|
||||||
bool "Enable Ultra Low Power (ULP) Coprocessor"
|
|
||||||
default "n"
|
|
||||||
help
|
|
||||||
Set to 'y' if you plan to load a firmware for the coprocessor.
|
|
||||||
|
|
||||||
If this option is enabled, further coprocessor configuration will appear in the Components menu.
|
|
||||||
|
|
||||||
config ULP_COPROC_RESERVE_MEM
|
|
||||||
int
|
|
||||||
prompt "RTC slow memory reserved for coprocessor" if ULP_COPROC_ENABLED
|
|
||||||
default 512 if ULP_COPROC_ENABLED
|
|
||||||
range 32 8192 if ULP_COPROC_ENABLED
|
|
||||||
default 0 if !ULP_COPROC_ENABLED
|
|
||||||
range 0 0 if !ULP_COPROC_ENABLED
|
|
||||||
help
|
|
||||||
Bytes of memory to reserve for ULP coprocessor firmware & data.
|
|
||||||
|
|
||||||
Data is reserved at the beginning of RTC slow memory.
|
|
||||||
|
|
||||||
choice ESP32_PANIC
|
|
||||||
prompt "Panic handler behaviour"
|
prompt "Panic handler behaviour"
|
||||||
default ESP32_PANIC_PRINT_REBOOT
|
default ESP32S2_PANIC_PRINT_REBOOT
|
||||||
help
|
help
|
||||||
If FreeRTOS detects unexpected behaviour or an unhandled exception, the panic handler is
|
If FreeRTOS detects unexpected behaviour or an unhandled exception, the panic handler is
|
||||||
invoked. Configure the panic handlers action here.
|
invoked. Configure the panic handlers action here.
|
||||||
|
|
||||||
config ESP32_PANIC_PRINT_HALT
|
config ESP32S2_PANIC_PRINT_HALT
|
||||||
bool "Print registers and halt"
|
bool "Print registers and halt"
|
||||||
help
|
help
|
||||||
Outputs the relevant registers over the serial port and halt the
|
Outputs the relevant registers over the serial port and halt the
|
||||||
processor. Needs a manual reset to restart.
|
processor. Needs a manual reset to restart.
|
||||||
|
|
||||||
config ESP32_PANIC_PRINT_REBOOT
|
config ESP32S2_PANIC_PRINT_REBOOT
|
||||||
bool "Print registers and reboot"
|
bool "Print registers and reboot"
|
||||||
help
|
help
|
||||||
Outputs the relevant registers over the serial port and immediately
|
Outputs the relevant registers over the serial port and immediately
|
||||||
reset the processor.
|
reset the processor.
|
||||||
|
|
||||||
config ESP32_PANIC_SILENT_REBOOT
|
config ESP32S2_PANIC_SILENT_REBOOT
|
||||||
bool "Silent reboot"
|
bool "Silent reboot"
|
||||||
help
|
help
|
||||||
Just resets the processor without outputting anything
|
Just resets the processor without outputting anything
|
||||||
|
|
||||||
config ESP32_PANIC_GDBSTUB
|
config ESP32S2_PANIC_GDBSTUB
|
||||||
bool "Invoke GDBStub"
|
bool "Invoke GDBStub"
|
||||||
help
|
help
|
||||||
Invoke gdbstub on the serial port, allowing for gdb to attach to it to do a postmortem
|
Invoke gdbstub on the serial port, allowing for gdb to attach to it to do a postmortem
|
||||||
of the crash.
|
of the crash.
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config ESP32_DEBUG_OCDAWARE
|
config ESP32S2_DEBUG_OCDAWARE
|
||||||
bool "Make exception and panic handlers JTAG/OCD aware"
|
bool "Make exception and panic handlers JTAG/OCD aware"
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
The FreeRTOS panic and unhandled exception handers can detect a JTAG OCD debugger and
|
The FreeRTOS panic and unhandled exception handers can detect a JTAG OCD debugger and
|
||||||
instead of panicking, have the debugger stop on the offending instruction.
|
instead of panicking, have the debugger stop on the offending instruction.
|
||||||
|
|
||||||
config ESP32_DEBUG_STUBS_ENABLE
|
config ESP32S2_DEBUG_STUBS_ENABLE
|
||||||
bool "OpenOCD debug stubs"
|
bool "OpenOCD debug stubs"
|
||||||
default OPTIMIZATION_LEVEL_DEBUG
|
default OPTIMIZATION_LEVEL_DEBUG
|
||||||
depends on !ESP32_TRAX
|
depends on !ESP32S2_TRAX
|
||||||
help
|
help
|
||||||
Debug stubs are used by OpenOCD to execute pre-compiled onboard code which does some useful debugging,
|
Debug stubs are used by OpenOCD to execute pre-compiled onboard code which does some useful debugging,
|
||||||
e.g. GCOV data dump.
|
e.g. GCOV data dump.
|
||||||
|
|
||||||
config INT_WDT
|
config ESP32S2_BROWNOUT_DET
|
||||||
bool "Interrupt watchdog"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
This watchdog timer can detect if the FreeRTOS tick interrupt has not been called for a certain time,
|
|
||||||
either because a task turned off interrupts and did not turn them on for a long time, or because an
|
|
||||||
interrupt handler did not return. It will try to invoke the panic handler first and failing that
|
|
||||||
reset the SoC.
|
|
||||||
|
|
||||||
config INT_WDT_TIMEOUT_MS
|
|
||||||
int "Interrupt watchdog timeout (ms)"
|
|
||||||
depends on INT_WDT
|
|
||||||
default 300 if !SPIRAM_SUPPORT
|
|
||||||
default 800 if SPIRAM_SUPPORT
|
|
||||||
range 10 10000
|
|
||||||
help
|
|
||||||
The timeout of the watchdog, in miliseconds. Make this higher than the FreeRTOS tick rate.
|
|
||||||
|
|
||||||
config INT_WDT_CHECK_CPU1
|
|
||||||
bool "Also watch CPU1 tick interrupt"
|
|
||||||
depends on INT_WDT && !FREERTOS_UNICORE
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Also detect if interrupts on CPU 1 are disabled for too long.
|
|
||||||
|
|
||||||
config TASK_WDT
|
|
||||||
bool "Initialize Task Watchdog Timer on startup"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
The Task Watchdog Timer can be used to make sure individual tasks are still
|
|
||||||
running. Enabling this option will cause the Task Watchdog Timer to be
|
|
||||||
initialized automatically at startup. The Task Watchdog timer can be
|
|
||||||
initialized after startup as well (see Task Watchdog Timer API Reference)
|
|
||||||
|
|
||||||
config TASK_WDT_PANIC
|
|
||||||
bool "Invoke panic handler on Task Watchdog timeout"
|
|
||||||
depends on TASK_WDT
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
If this option is enabled, the Task Watchdog Timer will be configured to
|
|
||||||
trigger the panic handler when it times out. This can also be configured
|
|
||||||
at run time (see Task Watchdog Timer API Reference)
|
|
||||||
|
|
||||||
config TASK_WDT_TIMEOUT_S
|
|
||||||
int "Task Watchdog timeout period (seconds)"
|
|
||||||
depends on TASK_WDT
|
|
||||||
range 1 60
|
|
||||||
default 5
|
|
||||||
help
|
|
||||||
Timeout period configuration for the Task Watchdog Timer in seconds.
|
|
||||||
This is also configurable at run time (see Task Watchdog Timer API Reference)
|
|
||||||
|
|
||||||
config TASK_WDT_CHECK_IDLE_TASK_CPU0
|
|
||||||
bool "Watch CPU0 Idle Task"
|
|
||||||
depends on TASK_WDT
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
If this option is enabled, the Task Watchdog Timer will watch the CPU0
|
|
||||||
Idle Task. Having the Task Watchdog watch the Idle Task allows for detection
|
|
||||||
of CPU starvation as the Idle Task not being called is usually a symptom of
|
|
||||||
CPU starvation. Starvation of the Idle Task is detrimental as FreeRTOS household
|
|
||||||
tasks depend on the Idle Task getting some runtime every now and then.
|
|
||||||
|
|
||||||
config TASK_WDT_CHECK_IDLE_TASK_CPU1
|
|
||||||
bool "Watch CPU1 Idle Task"
|
|
||||||
depends on TASK_WDT && !FREERTOS_UNICORE
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
If this option is enabled, the Task Wtachdog Timer will wach the CPU1
|
|
||||||
Idle Task.
|
|
||||||
|
|
||||||
config BROWNOUT_DET
|
|
||||||
#The brownout detector code is disabled (by making it depend on a nonexisting symbol) because the current
|
|
||||||
#revision of ESP32 silicon has a bug in the brown-out detector, rendering it unusable for resetting the CPU.
|
|
||||||
bool "Hardware brownout detect & reset"
|
bool "Hardware brownout detect & reset"
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
The ESP32 has a built-in brownout detector which can detect if the voltage is lower than
|
The ESP32S2 has a built-in brownout detector which can detect if the voltage is lower than
|
||||||
a specific value. If this happens, it will reset the chip in order to prevent unintended
|
a specific value. If this happens, it will reset the chip in order to prevent unintended
|
||||||
behaviour.
|
behaviour.
|
||||||
|
|
||||||
|
@ -757,43 +431,43 @@ menu "ESP32S2-specific"
|
||||||
|
|
||||||
#The voltage levels here are estimates, more work needs to be done to figure out the exact voltages
|
#The voltage levels here are estimates, more work needs to be done to figure out the exact voltages
|
||||||
#of the brownout threshold levels.
|
#of the brownout threshold levels.
|
||||||
config BROWNOUT_DET_LVL_SEL_0
|
config ESP32S2_BROWNOUT_DET_LVL_SEL_0
|
||||||
bool "2.43V +/- 0.05"
|
bool "2.43V +/- 0.05"
|
||||||
config BROWNOUT_DET_LVL_SEL_1
|
config ESP32S2_BROWNOUT_DET_LVL_SEL_1
|
||||||
bool "2.48V +/- 0.05"
|
bool "2.48V +/- 0.05"
|
||||||
config BROWNOUT_DET_LVL_SEL_2
|
config ESP32S2_BROWNOUT_DET_LVL_SEL_2
|
||||||
bool "2.58V +/- 0.05"
|
bool "2.58V +/- 0.05"
|
||||||
config BROWNOUT_DET_LVL_SEL_3
|
config ESP32S2_BROWNOUT_DET_LVL_SEL_3
|
||||||
bool "2.62V +/- 0.05"
|
bool "2.62V +/- 0.05"
|
||||||
config BROWNOUT_DET_LVL_SEL_4
|
config ESP32S2_BROWNOUT_DET_LVL_SEL_4
|
||||||
bool "2.67V +/- 0.05"
|
bool "2.67V +/- 0.05"
|
||||||
config BROWNOUT_DET_LVL_SEL_5
|
config ESP32S2_BROWNOUT_DET_LVL_SEL_5
|
||||||
bool "2.70V +/- 0.05"
|
bool "2.70V +/- 0.05"
|
||||||
config BROWNOUT_DET_LVL_SEL_6
|
config ESP32S2_BROWNOUT_DET_LVL_SEL_6
|
||||||
bool "2.77V +/- 0.05"
|
bool "2.77V +/- 0.05"
|
||||||
config BROWNOUT_DET_LVL_SEL_7
|
config ESP32S2_BROWNOUT_DET_LVL_SEL_7
|
||||||
bool "2.80V +/- 0.05"
|
bool "2.80V +/- 0.05"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config BROWNOUT_DET_LVL
|
config ESP32S2_BROWNOUT_DET_LVL
|
||||||
int
|
int
|
||||||
default 0 if BROWNOUT_DET_LVL_SEL_0
|
default 0 if ESP32S2_BROWNOUT_DET_LVL_SEL_0
|
||||||
default 1 if BROWNOUT_DET_LVL_SEL_1
|
default 1 if ESP32S2_BROWNOUT_DET_LVL_SEL_1
|
||||||
default 2 if BROWNOUT_DET_LVL_SEL_2
|
default 2 if ESP32S2_BROWNOUT_DET_LVL_SEL_2
|
||||||
default 3 if BROWNOUT_DET_LVL_SEL_3
|
default 3 if ESP32S2_BROWNOUT_DET_LVL_SEL_3
|
||||||
default 4 if BROWNOUT_DET_LVL_SEL_4
|
default 4 if ESP32S2_BROWNOUT_DET_LVL_SEL_4
|
||||||
default 5 if BROWNOUT_DET_LVL_SEL_5
|
default 5 if ESP32S2_BROWNOUT_DET_LVL_SEL_5
|
||||||
default 6 if BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP32S2_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP32S2_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
|
||||||
# Note about the use of "FRC1" name: currently FRC1 timer is not used for
|
# Note about the use of "FRC1" name: currently FRC1 timer is not used for
|
||||||
# high resolution timekeeping anymore. Instead the esp_timer API, implemented
|
# high resolution timekeeping anymore. Instead the esp_timer API, implemented
|
||||||
# using FRC2 timer, is used.
|
# using FRC2 timer, is used.
|
||||||
# FRC1 name in the option name is kept for compatibility.
|
# FRC1 name in the option name is kept for compatibility.
|
||||||
choice ESP32_TIME_SYSCALL
|
choice ESP32S2__TIME_SYSCALL
|
||||||
prompt "Timers used for gettimeofday function"
|
prompt "Timers used for gettimeofday function"
|
||||||
default ESP32_TIME_SYSCALL_USE_RTC_FRC1
|
default ESP32S2_TIME_SYSCALL_USE_RTC_FRC1
|
||||||
help
|
help
|
||||||
This setting defines which hardware timers are used to
|
This setting defines which hardware timers are used to
|
||||||
implement 'gettimeofday' and 'time' functions in C library.
|
implement 'gettimeofday' and 'time' functions in C library.
|
||||||
|
@ -813,32 +487,32 @@ menu "ESP32S2-specific"
|
||||||
- When RTC is used for timekeeping, two RTC_STORE registers are
|
- When RTC is used for timekeeping, two RTC_STORE registers are
|
||||||
used to keep time in deep sleep mode.
|
used to keep time in deep sleep mode.
|
||||||
|
|
||||||
config ESP32_TIME_SYSCALL_USE_RTC_FRC1
|
config ESP32S2_TIME_SYSCALL_USE_RTC_FRC1
|
||||||
bool "RTC and high-resolution timer"
|
bool "RTC and high-resolution timer"
|
||||||
config ESP32_TIME_SYSCALL_USE_RTC
|
config ESP32S2_TIME_SYSCALL_USE_RTC
|
||||||
bool "RTC"
|
bool "RTC"
|
||||||
config ESP32_TIME_SYSCALL_USE_FRC1
|
config ESP32S2_TIME_SYSCALL_USE_FRC1
|
||||||
bool "High-resolution timer"
|
bool "High-resolution timer"
|
||||||
config ESP32_TIME_SYSCALL_USE_NONE
|
config ESP32S2_TIME_SYSCALL_USE_NONE
|
||||||
bool "None"
|
bool "None"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
choice ESP32_RTC_CLOCK_SOURCE
|
choice ESP32S2_RTC_CLK_SRC
|
||||||
prompt "RTC clock source"
|
prompt "RTC clock source"
|
||||||
default ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC
|
default ESP32S2_RTC_CLK_SRC_INT_RC
|
||||||
help
|
help
|
||||||
Choose which clock is used as RTC clock source.
|
Choose which clock is used as RTC clock source.
|
||||||
|
|
||||||
config ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC
|
config ESP32S2_RTC_CLK_SRC_INT_RC
|
||||||
bool "Internal 150kHz RC oscillator"
|
bool "Internal 150kHz RC oscillator"
|
||||||
config ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL
|
config ESP32S2_RTC_CLK_SRC_EXT_CRYS
|
||||||
bool "External 32kHz crystal"
|
bool "External 32kHz crystal"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config ESP32_RTC_CLK_CAL_CYCLES
|
config ESP32S2__RTC_CLK_CAL_CYCLES
|
||||||
int "Number of cycles for RTC_SLOW_CLK calibration"
|
int "Number of cycles for RTC_SLOW_CLK calibration"
|
||||||
default 3000 if ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL
|
default 3000 if ESP32S2_RTC_CLK_SRC_EXT_CRYS
|
||||||
default 1024 if ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC
|
default 1024 if ESP32S2_RTC_CLK_SRC_INT_RC
|
||||||
range 0 125000
|
range 0 125000
|
||||||
help
|
help
|
||||||
When the startup code initializes RTC_SLOW_CLK, it can perform
|
When the startup code initializes RTC_SLOW_CLK, it can perform
|
||||||
|
@ -856,44 +530,9 @@ menu "ESP32S2-specific"
|
||||||
In case more value will help improve the definition of the launch of the crystal.
|
In case more value will help improve the definition of the launch of the crystal.
|
||||||
If the crystal could not start, it will be switched to internal RC.
|
If the crystal could not start, it will be switched to internal RC.
|
||||||
|
|
||||||
config ESP32_RTC_XTAL_BOOTSTRAP_CYCLES
|
choice ESP32S2_XTAL_FREQ_SEL
|
||||||
int "Bootstrap cycles for external 32kHz crystal"
|
|
||||||
depends on ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL
|
|
||||||
default 5
|
|
||||||
range 0 32768
|
|
||||||
help
|
|
||||||
To reduce the startup time of an external RTC crystal,
|
|
||||||
we bootstrap it with a 32kHz square wave for a fixed number of cycles.
|
|
||||||
Setting 0 will disable bootstrapping (if disabled, the crystal may take
|
|
||||||
longer to start up or fail to oscillate under some conditions).
|
|
||||||
|
|
||||||
If this value is too high, a faulty crystal may initially start and then fail.
|
|
||||||
If this value is too low, an otherwise good crystal may not start.
|
|
||||||
|
|
||||||
To accurately determine if the crystal has started,
|
|
||||||
set a larger "Number of cycles for RTC_SLOW_CLK calibration" (about 3000).
|
|
||||||
|
|
||||||
config ESP32_DEEP_SLEEP_WAKEUP_DELAY
|
|
||||||
int "Extra delay in deep sleep wake stub (in us)"
|
|
||||||
default 2000
|
|
||||||
range 0 5000
|
|
||||||
help
|
|
||||||
When ESP32 exits deep sleep, the CPU and the flash chip are powered on
|
|
||||||
at the same time. CPU will run deep sleep stub first, and then
|
|
||||||
proceed to load code from flash. Some flash chips need sufficient
|
|
||||||
time to pass between power on and first read operation. By default,
|
|
||||||
without any extra delay, this time is approximately 900us, although
|
|
||||||
some flash chip types need more than that.
|
|
||||||
|
|
||||||
By default extra delay is set to 2000us. When optimizing startup time
|
|
||||||
for applications which require it, this value may be reduced.
|
|
||||||
|
|
||||||
If you are seeing "flash read err, 1000" message printed to the
|
|
||||||
console after deep sleep reset, try increasing this value.
|
|
||||||
|
|
||||||
choice ESP32_XTAL_FREQ_SEL
|
|
||||||
prompt "Main XTAL frequency"
|
prompt "Main XTAL frequency"
|
||||||
default ESP32_XTAL_FREQ_40
|
default ESP32S2_XTAL_FREQ_40
|
||||||
help
|
help
|
||||||
ESP32 currently supports the following XTAL frequencies:
|
ESP32 currently supports the following XTAL frequencies:
|
||||||
|
|
||||||
|
@ -906,22 +545,22 @@ menu "ESP32S2-specific"
|
||||||
to use automatic XTAL frequency detection in applications which need
|
to use automatic XTAL frequency detection in applications which need
|
||||||
to work at high ambient temperatures and use high-temperature
|
to work at high ambient temperatures and use high-temperature
|
||||||
qualified chips and modules.
|
qualified chips and modules.
|
||||||
config ESP32_XTAL_FREQ_40
|
config ESP32S2_XTAL_FREQ_40
|
||||||
bool "40 MHz"
|
bool "40 MHz"
|
||||||
config ESP32_XTAL_FREQ_26
|
config ESP32S2_XTAL_FREQ_26
|
||||||
bool "26 MHz"
|
bool "26 MHz"
|
||||||
config ESP32_XTAL_FREQ_AUTO
|
config ESP32S2_XTAL_FREQ_AUTO
|
||||||
bool "Autodetect"
|
bool "Autodetect"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
# Keep these values in sync with rtc_xtal_freq_t enum in soc/rtc.h
|
# Keep these values in sync with rtc_xtal_freq_t enum in soc/rtc.h
|
||||||
config ESP32_XTAL_FREQ
|
config ESP32S2_XTAL_FREQ
|
||||||
int
|
int
|
||||||
default 0 if ESP32_XTAL_FREQ_AUTO
|
default 0 if ESP32S2_XTAL_FREQ_AUTO
|
||||||
default 40 if ESP32_XTAL_FREQ_40
|
default 40 if ESP32S2_XTAL_FREQ_40
|
||||||
default 26 if ESP32_XTAL_FREQ_26
|
default 26 if ESP32S2_XTAL_FREQ_26
|
||||||
|
|
||||||
config DISABLE_BASIC_ROM_CONSOLE
|
config ESP32S2_DISABLE_BASIC_ROM_CONSOLE
|
||||||
bool "Permanently disable BASIC ROM Console"
|
bool "Permanently disable BASIC ROM Console"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
|
@ -933,7 +572,7 @@ menu "ESP32S2-specific"
|
||||||
|
|
||||||
(Enabling secure boot also disables the BASIC ROM Console by default.)
|
(Enabling secure boot also disables the BASIC ROM Console by default.)
|
||||||
|
|
||||||
config NO_BLOBS
|
config ESP32S2_NO_BLOBS
|
||||||
bool "No Binary Blobs"
|
bool "No Binary Blobs"
|
||||||
depends on !BT_ENABLED
|
depends on !BT_ENABLED
|
||||||
default n
|
default n
|
||||||
|
@ -941,43 +580,6 @@ menu "ESP32S2-specific"
|
||||||
If enabled, this disables the linking of binary libraries in the application build. Note
|
If enabled, this disables the linking of binary libraries in the application build. Note
|
||||||
that after enabling this Wi-Fi/Bluetooth will not work.
|
that after enabling this Wi-Fi/Bluetooth will not work.
|
||||||
|
|
||||||
config ESP_TIMER_PROFILING
|
|
||||||
bool "Enable esp_timer profiling features"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
If enabled, esp_timer_dump will dump information such as number of times
|
|
||||||
the timer was started, number of times the timer has triggered, and the
|
|
||||||
total time it took for the callback to run.
|
|
||||||
This option has some effect on timer performance and the amount of memory
|
|
||||||
used for timer storage, and should only be used for debugging/testing
|
|
||||||
purposes.
|
|
||||||
|
|
||||||
config COMPATIBLE_PRE_V2_1_BOOTLOADERS
|
|
||||||
bool "App compatible with bootloaders before IDF v2.1"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Bootloaders before IDF v2.1 did less initialisation of the
|
|
||||||
system clock. This setting needs to be enabled to build an app
|
|
||||||
which can be booted by these older bootloaders.
|
|
||||||
|
|
||||||
If this setting is enabled, the app can be booted by any bootloader
|
|
||||||
from IDF v1.0 up to the current version.
|
|
||||||
|
|
||||||
If this setting is disabled, the app can only be booted by bootloaders
|
|
||||||
from IDF v2.1 or newer.
|
|
||||||
|
|
||||||
Enabling this setting adds approximately 1KB to the app's IRAM usage.
|
|
||||||
|
|
||||||
config ESP_ERR_TO_NAME_LOOKUP
|
|
||||||
bool "Enable lookup of error code strings"
|
|
||||||
default "y"
|
|
||||||
help
|
|
||||||
Functions esp_err_to_name() and esp_err_to_name_r() return string
|
|
||||||
representations of error codes from a pre-generated lookup table.
|
|
||||||
This option can be used to turn off the use of the look-up table in
|
|
||||||
order to save memory but this comes at the price of sacrificing
|
|
||||||
distinguishable (meaningful) output string representations.
|
|
||||||
|
|
||||||
endmenu # ESP32S2-Specific
|
endmenu # ESP32S2-Specific
|
||||||
|
|
||||||
menu "Power Management"
|
menu "Power Management"
|
||||||
|
@ -998,14 +600,14 @@ menu "Power Management"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
If enabled, startup code configures dynamic frequency scaling.
|
If enabled, startup code configures dynamic frequency scaling.
|
||||||
Max CPU frequency is set to CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ setting,
|
Max CPU frequency is set to CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ setting,
|
||||||
min frequency is set to XTAL frequency.
|
min frequency is set to XTAL frequency.
|
||||||
If disabled, DFS will not be active until the application
|
If disabled, DFS will not be active until the application
|
||||||
configures it using esp_pm_configure function.
|
configures it using esp_pm_configure function.
|
||||||
|
|
||||||
config PM_USE_RTC_TIMER_REF
|
config PM_USE_RTC_TIMER_REF
|
||||||
bool "Use RTC timer to prevent time drift (EXPERIMENTAL)"
|
bool "Use RTC timer to prevent time drift (EXPERIMENTAL)"
|
||||||
depends on PM_ENABLE && (ESP32_TIME_SYSCALL_USE_RTC || ESP32_TIME_SYSCALL_USE_RTC_FRC1)
|
depends on PM_ENABLE && (ESP32S2_TIME_SYSCALL_USE_RTC || ESP32S2_TIME_SYSCALL_USE_RTC_FRC1)
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
When APB clock frequency changes, high-resolution timer (esp_timer)
|
When APB clock frequency changes, high-resolution timer (esp_timer)
|
||||||
|
|
|
@ -25,11 +25,11 @@
|
||||||
#include "driver/rtc_cntl.h"
|
#include "driver/rtc_cntl.h"
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
|
|
||||||
#ifdef CONFIG_BROWNOUT_DET_LVL
|
#ifdef CONFIG_ESP32S2_BROWNOUT_DET_LVL
|
||||||
#define BROWNOUT_DET_LVL CONFIG_BROWNOUT_DET_LVL
|
#define BROWNOUT_DET_LVL CONFIG_ESP32S2_BROWNOUT_DET_LVL
|
||||||
#else
|
#else
|
||||||
#define BROWNOUT_DET_LVL 0
|
#define BROWNOUT_DET_LVL 0
|
||||||
#endif //CONFIG_BROWNOUT_DET_LVL
|
#endif //CONFIG_ESP32S2_BROWNOUT_DET_LVL
|
||||||
|
|
||||||
static void rtc_brownout_isr_handler()
|
static void rtc_brownout_isr_handler()
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
* Larger values increase startup delay. Smaller values may cause false positive
|
* Larger values increase startup delay. Smaller values may cause false positive
|
||||||
* detection (i.e. oscillator runs for a few cycles and then stops).
|
* detection (i.e. oscillator runs for a few cycles and then stops).
|
||||||
*/
|
*/
|
||||||
#define SLOW_CLK_CAL_CYCLES CONFIG_ESP32_RTC_CLK_CAL_CYCLES
|
#define SLOW_CLK_CAL_CYCLES CONFIG_ESP32S2_RTC_CLK_CAL_CYCLES
|
||||||
|
|
||||||
#define MHZ (1000000)
|
#define MHZ (1000000)
|
||||||
|
|
||||||
|
@ -59,30 +59,17 @@ void esp_clk_init(void)
|
||||||
rtc_config_t cfg = RTC_CONFIG_DEFAULT();
|
rtc_config_t cfg = RTC_CONFIG_DEFAULT();
|
||||||
rtc_init(cfg);
|
rtc_init(cfg);
|
||||||
|
|
||||||
#ifdef CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS
|
|
||||||
/* Check the bootloader set the XTAL frequency.
|
|
||||||
|
|
||||||
Bootloaders pre-v2.1 don't do this.
|
|
||||||
*/
|
|
||||||
rtc_xtal_freq_t xtal_freq = rtc_clk_xtal_freq_get();
|
|
||||||
if (xtal_freq == RTC_XTAL_FREQ_AUTO) {
|
|
||||||
ESP_EARLY_LOGW(TAG, "RTC domain not initialised by bootloader");
|
|
||||||
bootloader_clock_configure();
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
/* If this assertion fails, either upgrade the bootloader or enable CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS */
|
|
||||||
assert(rtc_clk_xtal_freq_get() != RTC_XTAL_FREQ_AUTO);
|
assert(rtc_clk_xtal_freq_get() != RTC_XTAL_FREQ_AUTO);
|
||||||
#endif
|
|
||||||
|
|
||||||
rtc_clk_fast_freq_set(RTC_FAST_FREQ_8M);
|
rtc_clk_fast_freq_set(RTC_FAST_FREQ_8M);
|
||||||
|
|
||||||
#ifdef CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL
|
#ifdef CONFIG_ESP32S2_RTC_CLK_SRC_EXT_CRYS
|
||||||
select_rtc_slow_clk(RTC_SLOW_FREQ_32K_XTAL);
|
select_rtc_slow_clk(RTC_SLOW_FREQ_32K_XTAL);
|
||||||
#else
|
#else
|
||||||
select_rtc_slow_clk(RTC_SLOW_FREQ_RTC);
|
select_rtc_slow_clk(RTC_SLOW_FREQ_RTC);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint32_t freq_mhz = CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ;
|
uint32_t freq_mhz = CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ;
|
||||||
rtc_cpu_freq_t freq = RTC_CPU_FREQ_80M;
|
rtc_cpu_freq_t freq = RTC_CPU_FREQ_80M;
|
||||||
switch(freq_mhz) {
|
switch(freq_mhz) {
|
||||||
case 240:
|
case 240:
|
||||||
|
@ -108,7 +95,7 @@ void esp_clk_init(void)
|
||||||
rtc_clk_cpu_freq_set(freq);
|
rtc_clk_cpu_freq_set(freq);
|
||||||
|
|
||||||
// Re calculate the ccount to make time calculation correct.
|
// Re calculate the ccount to make time calculation correct.
|
||||||
uint32_t freq_after = CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ;
|
uint32_t freq_after = CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ;
|
||||||
XTHAL_SET_CCOUNT( XTHAL_GET_CCOUNT() * freq_after / freq_before );
|
XTHAL_SET_CCOUNT( XTHAL_GET_CCOUNT() * freq_after / freq_before );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -156,14 +156,14 @@ extern void esp_config_instruction_cache_mode(void);
|
||||||
esp_config_instruction_cache_mode();
|
esp_config_instruction_cache_mode();
|
||||||
|
|
||||||
/* copy MMU table from ICache to DCache, so we can use DCache to access rodata later. */
|
/* copy MMU table from ICache to DCache, so we can use DCache to access rodata later. */
|
||||||
#if CONFIG_RODATA_USE_DATA_CACHE
|
#if CONFIG_ESP32S2_RODATA_USE_DATA_CACHE
|
||||||
MMU_Drom0_I2D_Copy();
|
MMU_Drom0_I2D_Copy();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* If we need use SPIRAM, we should use data cache, or if we want to access rodata, we also should use data cache.
|
/* If we need use SPIRAM, we should use data cache, or if we want to access rodata, we also should use data cache.
|
||||||
Configure the mode of data : cache size, cache associated ways, cache line size.
|
Configure the mode of data : cache size, cache associated ways, cache line size.
|
||||||
Enable data cache, so if we don't use SPIRAM, it just works. */
|
Enable data cache, so if we don't use SPIRAM, it just works. */
|
||||||
#if CONFIG_SPIRAM_BOOT_INIT || CONFIG_RODATA_USE_DATA_CACHE
|
#if CONFIG_SPIRAM_BOOT_INIT || CONFIG_ESP32S2_RODATA_USE_DATA_CACHE
|
||||||
extern void esp_config_data_cache_mode(void);
|
extern void esp_config_data_cache_mode(void);
|
||||||
esp_config_data_cache_mode();
|
esp_config_data_cache_mode();
|
||||||
Cache_Enable_DCache(0);
|
Cache_Enable_DCache(0);
|
||||||
|
@ -186,7 +186,7 @@ extern void esp_config_data_cache_mode(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Start to use data cache to access rodata. */
|
/* Start to use data cache to access rodata. */
|
||||||
#if CONFIG_RODATA_USE_DATA_CACHE
|
#if CONFIG_ESP32S2_RODATA_USE_DATA_CACHE
|
||||||
extern void esp_switch_rodata_to_dcache(void);
|
extern void esp_switch_rodata_to_dcache(void);
|
||||||
esp_switch_rodata_to_dcache();
|
esp_switch_rodata_to_dcache();
|
||||||
#endif
|
#endif
|
||||||
|
@ -229,21 +229,21 @@ extern void esp_switch_rodata_to_dcache(void);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_INSTRUCTION_USE_SPIRAM
|
#if CONFIG_SPIRAM_FETCH_INSTRUCTIONS
|
||||||
extern void esp_spiram_enable_instruction_access(void);
|
extern void esp_spiram_enable_instruction_access(void);
|
||||||
esp_spiram_enable_instruction_access();
|
esp_spiram_enable_instruction_access();
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_RODATA_USE_SPIRAM
|
#if SPIRAM_RODATA
|
||||||
extern void esp_spiram_enable_rodata_access(void);
|
extern void esp_spiram_enable_rodata_access(void);
|
||||||
esp_spiram_enable_rodata_access();
|
esp_spiram_enable_rodata_access();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_ENABLE_INSTRUCTION_CACHE_WRAP || CONFIG_ENABLE_DATA_CACHE_WRAP
|
#if CONFIG_ESP32S2_INSTRUCTION_CACHE_WRAP || CONFIG_ESP32S2_DATA_CACHE_WRAP
|
||||||
uint32_t icache_wrap_enable = 0,dcache_wrap_enable = 0;
|
uint32_t icache_wrap_enable = 0,dcache_wrap_enable = 0;
|
||||||
#if CONFIG_ENABLE_INSTRUCTION_CACHE_WRAP
|
#if CONFIG_ESP32S2_INSTRUCTION_CACHE_WRAP
|
||||||
icache_wrap_enable = 1;
|
icache_wrap_enable = 1;
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_ENABLE_DATA_CACHE_WRAP
|
#if CONFIG_ESP32S2_DATA_CACHE_WRAP
|
||||||
dcache_wrap_enable = 1;
|
dcache_wrap_enable = 1;
|
||||||
#endif
|
#endif
|
||||||
extern void esp_enable_cache_wrap(uint32_t icache_wrap_enable, uint32_t dcache_wrap_enable);
|
extern void esp_enable_cache_wrap(uint32_t icache_wrap_enable, uint32_t dcache_wrap_enable);
|
||||||
|
@ -334,12 +334,8 @@ void start_cpu0_default(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
//Enable trace memory and immediately start trace.
|
//Enable trace memory and immediately start trace.
|
||||||
#if CONFIG_ESP32_TRAX
|
#if CONFIG_ESP32S2_TRAX
|
||||||
#if CONFIG_ESP32_TRAX_TWOBANKS
|
|
||||||
trax_enable(TRAX_ENA_PRO_APP);
|
|
||||||
#else
|
|
||||||
trax_enable(TRAX_ENA_PRO);
|
trax_enable(TRAX_ENA_PRO);
|
||||||
#endif
|
|
||||||
trax_start_trace(TRAX_DOWNCOUNT_WORDS);
|
trax_start_trace(TRAX_DOWNCOUNT_WORDS);
|
||||||
#endif
|
#endif
|
||||||
esp_clk_init();
|
esp_clk_init();
|
||||||
|
@ -357,10 +353,10 @@ void start_cpu0_default(void)
|
||||||
uart_div_modify(CONFIG_CONSOLE_UART_NUM, (uart_clk_freq << 4) / CONFIG_CONSOLE_UART_BAUDRATE);
|
uart_div_modify(CONFIG_CONSOLE_UART_NUM, (uart_clk_freq << 4) / CONFIG_CONSOLE_UART_BAUDRATE);
|
||||||
#endif // CONFIG_CONSOLE_UART_NONE
|
#endif // CONFIG_CONSOLE_UART_NONE
|
||||||
|
|
||||||
#if CONFIG_BROWNOUT_DET
|
#if CONFIG_ESP32S2_BROWNOUT_DET
|
||||||
esp_brownout_init();
|
esp_brownout_init();
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_DISABLE_BASIC_ROM_CONSOLE
|
#if CONFIG_ESP32S2_DISABLE_BASIC_ROM_CONSOLE
|
||||||
esp_efuse_disable_basic_rom_console();
|
esp_efuse_disable_basic_rom_console();
|
||||||
#endif
|
#endif
|
||||||
rtc_gpio_force_hold_dis_all();
|
rtc_gpio_force_hold_dis_all();
|
||||||
|
@ -385,14 +381,14 @@ void start_cpu0_default(void)
|
||||||
#if CONFIG_SYSVIEW_ENABLE
|
#if CONFIG_SYSVIEW_ENABLE
|
||||||
SEGGER_SYSVIEW_Conf();
|
SEGGER_SYSVIEW_Conf();
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_ESP32_DEBUG_STUBS_ENABLE
|
#if CONFIG_ESP32S2_DEBUG_STUBS_ENABLE
|
||||||
esp_dbg_stubs_init();
|
esp_dbg_stubs_init();
|
||||||
#endif
|
#endif
|
||||||
err = esp_pthread_init();
|
err = esp_pthread_init();
|
||||||
assert(err == ESP_OK && "Failed to init pthread module!");
|
assert(err == ESP_OK && "Failed to init pthread module!");
|
||||||
|
|
||||||
do_global_ctors();
|
do_global_ctors();
|
||||||
#if CONFIG_INT_WDT
|
#if CONFIG_ESP_INT_WDT
|
||||||
//esp_int_wdt_init();
|
//esp_int_wdt_init();
|
||||||
//Initialize the interrupt watch dog for CPU0.
|
//Initialize the interrupt watch dog for CPU0.
|
||||||
//esp_int_wdt_cpu_init();
|
//esp_int_wdt_cpu_init();
|
||||||
|
@ -409,7 +405,7 @@ void start_cpu0_default(void)
|
||||||
esp_pm_impl_init();
|
esp_pm_impl_init();
|
||||||
#ifdef CONFIG_PM_DFS_INIT_AUTO
|
#ifdef CONFIG_PM_DFS_INIT_AUTO
|
||||||
rtc_cpu_freq_t max_freq;
|
rtc_cpu_freq_t max_freq;
|
||||||
rtc_clk_cpu_freq_from_mhz(CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ, &max_freq);
|
rtc_clk_cpu_freq_from_mhz(CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ, &max_freq);
|
||||||
esp_pm_config_esp32_t cfg = {
|
esp_pm_config_esp32_t cfg = {
|
||||||
.max_cpu_freq = max_freq,
|
.max_cpu_freq = max_freq,
|
||||||
.min_cpu_freq = RTC_CPU_FREQ_XTAL
|
.min_cpu_freq = RTC_CPU_FREQ_XTAL
|
||||||
|
@ -464,13 +460,13 @@ void start_cpu1_default(void)
|
||||||
#ifdef CONFIG_COMPILER_CXX_EXCEPTIONS
|
#ifdef CONFIG_COMPILER_CXX_EXCEPTIONS
|
||||||
size_t __cxx_eh_arena_size_get()
|
size_t __cxx_eh_arena_size_get()
|
||||||
{
|
{
|
||||||
return CONFIG_CXX_EXCEPTIONS_EMG_POOL_SIZE;
|
return CONFIG_COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void do_global_ctors(void)
|
static void do_global_ctors(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_CXX_EXCEPTIONS
|
#ifdef CONFIG_COMPILER_CXX_EXCEPTIONS
|
||||||
static struct object ob;
|
static struct object ob;
|
||||||
__register_frame_info( __eh_frame, &ob );
|
__register_frame_info( __eh_frame, &ob );
|
||||||
#endif
|
#endif
|
||||||
|
@ -496,26 +492,19 @@ static void main_task(void* args)
|
||||||
heap_caps_enable_nonos_stack_heaps();
|
heap_caps_enable_nonos_stack_heaps();
|
||||||
|
|
||||||
//Initialize task wdt if configured to do so
|
//Initialize task wdt if configured to do so
|
||||||
#ifdef CONFIG_TASK_WDT_PANIC
|
#ifdef CONFIG_ESP_TASK_WDT_PANIC
|
||||||
//ESP_ERROR_CHECK(esp_task_wdt_init(CONFIG_TASK_WDT_TIMEOUT_S, true))
|
//ESP_ERROR_CHECK(esp_task_wdt_init(CONFIG_ESP_TASK_WDT_TIMEOUT_S, true))
|
||||||
#elif CONFIG_TASK_WDT
|
#elif CONFIG_ESP_TASK_WDT
|
||||||
//ESP_ERROR_CHECK(esp_task_wdt_init(CONFIG_TASK_WDT_TIMEOUT_S, false))
|
//ESP_ERROR_CHECK(esp_task_wdt_init(CONFIG_ESP_TASK_WDT_TIMEOUT_S, false))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Add IDLE 0 to task wdt
|
//Add IDLE 0 to task wdt
|
||||||
#if 0
|
#if 0 // TODO: re-enable task WDT
|
||||||
#ifdef CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0
|
#ifdef CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0
|
||||||
TaskHandle_t idle_0 = xTaskGetIdleTaskHandleForCPU(0);
|
TaskHandle_t idle_0 = xTaskGetIdleTaskHandleForCPU(0);
|
||||||
if(idle_0 != NULL){
|
if(idle_0 != NULL){
|
||||||
ESP_ERROR_CHECK(esp_task_wdt_add(idle_0))
|
ESP_ERROR_CHECK(esp_task_wdt_add(idle_0))
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
//Add IDLE 1 to task wdt
|
|
||||||
#ifdef CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1
|
|
||||||
TaskHandle_t idle_1 = xTaskGetIdleTaskHandleForCPU(1);
|
|
||||||
if(idle_1 != NULL){
|
|
||||||
ESP_ERROR_CHECK(esp_task_wdt_add(idle_1))
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -32,14 +32,14 @@
|
||||||
#include "driver/periph_ctrl.h"
|
#include "driver/periph_ctrl.h"
|
||||||
#include "esp_int_wdt.h"
|
#include "esp_int_wdt.h"
|
||||||
|
|
||||||
#if CONFIG_INT_WDT
|
#if CONFIG_ESP_INT_WDT
|
||||||
|
|
||||||
|
|
||||||
#define WDT_INT_NUM 24
|
#define WDT_INT_NUM 24
|
||||||
|
|
||||||
|
|
||||||
//Take care: the tick hook can also be called before esp_int_wdt_init() is called.
|
//Take care: the tick hook can also be called before esp_int_wdt_init() is called.
|
||||||
#if CONFIG_INT_WDT_CHECK_CPU1
|
#if CONFIG_ESP_INT_WDT_CHECK_CPU1
|
||||||
//Not static; the ISR assembly checks this.
|
//Not static; the ISR assembly checks this.
|
||||||
bool int_wdt_app_cpu_ticked=false;
|
bool int_wdt_app_cpu_ticked=false;
|
||||||
|
|
||||||
|
@ -50,8 +50,8 @@ static void IRAM_ATTR tick_hook(void) {
|
||||||
//Only feed wdt if app cpu also ticked.
|
//Only feed wdt if app cpu also ticked.
|
||||||
if (int_wdt_app_cpu_ticked) {
|
if (int_wdt_app_cpu_ticked) {
|
||||||
TIMERG1.wdt_wprotect=TIMG_WDT_WKEY_VALUE;
|
TIMERG1.wdt_wprotect=TIMG_WDT_WKEY_VALUE;
|
||||||
TIMERG1.wdt_config2=CONFIG_INT_WDT_TIMEOUT_MS*2; //Set timeout before interrupt
|
TIMERG1.wdt_config2=CONFIG_ESP_INT_WDT_TIMEOUT_MS*2; //Set timeout before interrupt
|
||||||
TIMERG1.wdt_config3=CONFIG_INT_WDT_TIMEOUT_MS*4; //Set timeout before reset
|
TIMERG1.wdt_config3=CONFIG_ESP_INT_WDT_TIMEOUT_MS*4; //Set timeout before reset
|
||||||
TIMERG1.wdt_feed=1;
|
TIMERG1.wdt_feed=1;
|
||||||
TIMERG1.wdt_wprotect=0;
|
TIMERG1.wdt_wprotect=0;
|
||||||
int_wdt_app_cpu_ticked=false;
|
int_wdt_app_cpu_ticked=false;
|
||||||
|
@ -62,8 +62,8 @@ static void IRAM_ATTR tick_hook(void) {
|
||||||
static void IRAM_ATTR tick_hook(void) {
|
static void IRAM_ATTR tick_hook(void) {
|
||||||
if (xPortGetCoreID()!=0) return;
|
if (xPortGetCoreID()!=0) return;
|
||||||
TIMERG1.wdt_wprotect=TIMG_WDT_WKEY_VALUE;
|
TIMERG1.wdt_wprotect=TIMG_WDT_WKEY_VALUE;
|
||||||
TIMERG1.wdt_config2=CONFIG_INT_WDT_TIMEOUT_MS*2; //Set timeout before interrupt
|
TIMERG1.wdt_config2=CONFIG_ESP_INT_WDT_TIMEOUT_MS*2; //Set timeout before interrupt
|
||||||
TIMERG1.wdt_config3=CONFIG_INT_WDT_TIMEOUT_MS*4; //Set timeout before reset
|
TIMERG1.wdt_config3=CONFIG_ESP_INT_WDT_TIMEOUT_MS*4; //Set timeout before reset
|
||||||
TIMERG1.wdt_feed=1;
|
TIMERG1.wdt_feed=1;
|
||||||
TIMERG1.wdt_wprotect=0;
|
TIMERG1.wdt_wprotect=0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@
|
||||||
Note: The linker script will put everything in this file in IRAM/DRAM, so it also works with flash cache disabled.
|
Note: The linker script will put everything in this file in IRAM/DRAM, so it also works with flash cache disabled.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if !CONFIG_ESP32_PANIC_SILENT_REBOOT
|
#if !CONFIG_ESP32S2_PANIC_SILENT_REBOOT
|
||||||
//printf may be broken, so we fix our own printing fns...
|
//printf may be broken, so we fix our own printing fns...
|
||||||
static void panicPutChar(char c)
|
static void panicPutChar(char c)
|
||||||
{
|
{
|
||||||
|
@ -145,7 +145,7 @@ static __attribute__((noreturn)) inline void invoke_abort()
|
||||||
|
|
||||||
void abort()
|
void abort()
|
||||||
{
|
{
|
||||||
#if !CONFIG_ESP32_PANIC_SILENT_REBOOT
|
#if !CONFIG_ESP32S2_PANIC_SILENT_REBOOT
|
||||||
ets_printf("abort() was called at PC 0x%08x on core %d\r\n", (intptr_t)__builtin_return_address(0) - 3, xPortGetCoreID());
|
ets_printf("abort() was called at PC 0x%08x on core %d\r\n", (intptr_t)__builtin_return_address(0) - 3, xPortGetCoreID());
|
||||||
#endif
|
#endif
|
||||||
invoke_abort();
|
invoke_abort();
|
||||||
|
@ -557,7 +557,7 @@ static __attribute__((noreturn)) void commonErrorHandler(XtExcFrame *frame)
|
||||||
reconfigureAllWdts();
|
reconfigureAllWdts();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_ESP32_PANIC_GDBSTUB
|
#if CONFIG_ESP32S2_PANIC_GDBSTUB
|
||||||
disableAllWdts();
|
disableAllWdts();
|
||||||
esp_panic_wdt_stop();
|
esp_panic_wdt_stop();
|
||||||
panicPutStr("Entering gdb stub now.\r\n");
|
panicPutStr("Entering gdb stub now.\r\n");
|
||||||
|
@ -593,8 +593,8 @@ static __attribute__((noreturn)) void commonErrorHandler(XtExcFrame *frame)
|
||||||
disableAllWdts();
|
disableAllWdts();
|
||||||
panicPutStr("CPU halted.\r\n");
|
panicPutStr("CPU halted.\r\n");
|
||||||
while (1);
|
while (1);
|
||||||
#endif /* CONFIG_ESP32_PANIC_PRINT_REBOOT || CONFIG_ESP32_PANIC_SILENT_REBOOT */
|
#endif /* CONFIG_ESP32S2_PANIC_PRINT_REBOOT || CONFIG_ESP32S2_PANIC_SILENT_REBOOT */
|
||||||
#endif /* CONFIG_ESP32_PANIC_GDBSTUB */
|
#endif /* CONFIG_ESP32S2_PANIC_GDBSTUB */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -582,7 +582,7 @@ void esp_pm_impl_init()
|
||||||
* This will be modified later by a call to esp_pm_configure.
|
* This will be modified later by a call to esp_pm_configure.
|
||||||
*/
|
*/
|
||||||
rtc_cpu_freq_t default_freq;
|
rtc_cpu_freq_t default_freq;
|
||||||
if (!rtc_clk_cpu_freq_from_mhz(CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ, &default_freq)) {
|
if (!rtc_clk_cpu_freq_from_mhz(CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ, &default_freq)) {
|
||||||
assert(false && "unsupported frequency");
|
assert(false && "unsupported frequency");
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < PM_MODE_COUNT; ++i) {
|
for (size_t i = 0; i < PM_MODE_COUNT; ++i) {
|
||||||
|
|
|
@ -47,13 +47,13 @@
|
||||||
|
|
||||||
// Extra time it takes to enter and exit light sleep and deep sleep
|
// Extra time it takes to enter and exit light sleep and deep sleep
|
||||||
// For deep sleep, this is until the wake stub runs (not the app).
|
// For deep sleep, this is until the wake stub runs (not the app).
|
||||||
#ifdef CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL
|
#ifdef CONFIG_ESP32S2_RTC_CLK_SRC_EXT_CRYS
|
||||||
#define LIGHT_SLEEP_TIME_OVERHEAD_US (650 + 30 * 240 / CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ)
|
#define LIGHT_SLEEP_TIME_OVERHEAD_US (650 + 30 * 240 / CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ)
|
||||||
#define DEEP_SLEEP_TIME_OVERHEAD_US (650 + 100 * 240 / CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ)
|
#define DEEP_SLEEP_TIME_OVERHEAD_US (650 + 100 * 240 / CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ)
|
||||||
#else
|
#else
|
||||||
#define LIGHT_SLEEP_TIME_OVERHEAD_US (250 + 30 * 240 / CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ)
|
#define LIGHT_SLEEP_TIME_OVERHEAD_US (250 + 30 * 240 / CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ)
|
||||||
#define DEEP_SLEEP_TIME_OVERHEAD_US (250 + 100 * 240 / CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ)
|
#define DEEP_SLEEP_TIME_OVERHEAD_US (250 + 100 * 240 / CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ)
|
||||||
#endif // CONFIG_ESP32_RTC_CLOCK_SOURCE
|
#endif // CONFIG_ESP32S2_RTC_CLK_SRC_EXT_CRYS
|
||||||
|
|
||||||
// Minimal amount of time we can sleep for
|
// Minimal amount of time we can sleep for
|
||||||
#define LIGHT_SLEEP_MIN_TIME_US 200
|
#define LIGHT_SLEEP_MIN_TIME_US 200
|
||||||
|
@ -123,15 +123,6 @@ void RTC_IRAM_ATTR esp_default_wake_deep_sleep(void) {
|
||||||
/* Clear MMU for CPU 0 */
|
/* Clear MMU for CPU 0 */
|
||||||
_DPORT_REG_SET_BIT(DPORT_PRO_CACHE_IA_INT_EN_REG, DPORT_PRO_CACHE_INT_CLR);
|
_DPORT_REG_SET_BIT(DPORT_PRO_CACHE_IA_INT_EN_REG, DPORT_PRO_CACHE_INT_CLR);
|
||||||
_DPORT_REG_SET_BIT(DPORT_PRO_CACHE_IA_INT_EN_REG, DPORT_PRO_CACHE_DBG_EN);
|
_DPORT_REG_SET_BIT(DPORT_PRO_CACHE_IA_INT_EN_REG, DPORT_PRO_CACHE_DBG_EN);
|
||||||
|
|
||||||
#if CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY > 0
|
|
||||||
// ROM code has not started yet, so we need to set delay factor
|
|
||||||
// used by ets_delay_us first.
|
|
||||||
ets_update_cpu_frequency(ets_get_xtal_freq() / 1000000);
|
|
||||||
// This delay is configured in menuconfig, it can be used to give
|
|
||||||
// the flash chip some time to become ready.
|
|
||||||
ets_delay_us(CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void __attribute__((weak, alias("esp_default_wake_deep_sleep"))) esp_wake_deep_sleep(void);
|
void __attribute__((weak, alias("esp_default_wake_deep_sleep"))) esp_wake_deep_sleep(void);
|
||||||
|
@ -299,10 +290,9 @@ esp_err_t esp_light_sleep_start()
|
||||||
|
|
||||||
// Decide if VDD_SDIO needs to be powered down;
|
// Decide if VDD_SDIO needs to be powered down;
|
||||||
// If it needs to be powered down, adjust sleep time.
|
// If it needs to be powered down, adjust sleep time.
|
||||||
const uint32_t flash_enable_time_us = VDD_SDIO_POWERUP_TO_FLASH_READ_US
|
const uint32_t flash_enable_time_us = VDD_SDIO_POWERUP_TO_FLASH_READ_US;
|
||||||
+ CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY;
|
|
||||||
|
|
||||||
#ifndef CONFIG_SPIRAM_SUPPORT
|
#ifndef CONFIG_ESP32S2_SPIRAM_SUPPORT
|
||||||
const uint32_t vddsdio_pd_sleep_duration = MAX(FLASH_PD_MIN_SLEEP_TIME_US,
|
const uint32_t vddsdio_pd_sleep_duration = MAX(FLASH_PD_MIN_SLEEP_TIME_US,
|
||||||
flash_enable_time_us + LIGHT_SLEEP_TIME_OVERHEAD_US + LIGHT_SLEEP_MIN_TIME_US);
|
flash_enable_time_us + LIGHT_SLEEP_TIME_OVERHEAD_US + LIGHT_SLEEP_MIN_TIME_US);
|
||||||
|
|
||||||
|
@ -310,7 +300,7 @@ esp_err_t esp_light_sleep_start()
|
||||||
pd_flags |= RTC_SLEEP_PD_VDDSDIO;
|
pd_flags |= RTC_SLEEP_PD_VDDSDIO;
|
||||||
s_config.sleep_time_adjustment += flash_enable_time_us;
|
s_config.sleep_time_adjustment += flash_enable_time_us;
|
||||||
}
|
}
|
||||||
#endif //CONFIG_SPIRAM_SUPPORT
|
#endif //CONFIG_ESP32S2_SPIRAM_SUPPORT
|
||||||
|
|
||||||
rtc_vddsdio_config_t vddsdio_config = rtc_vddsdio_get_config();
|
rtc_vddsdio_config_t vddsdio_config = rtc_vddsdio_get_config();
|
||||||
|
|
||||||
|
@ -370,11 +360,6 @@ esp_err_t esp_sleep_disable_wakeup_source(esp_sleep_source_t source)
|
||||||
else if (CHECK_SOURCE(source, ESP_SLEEP_WAKEUP_TOUCHPAD, RTC_TOUCH_TRIG_EN)) {
|
else if (CHECK_SOURCE(source, ESP_SLEEP_WAKEUP_TOUCHPAD, RTC_TOUCH_TRIG_EN)) {
|
||||||
s_config.wakeup_triggers &= ~RTC_TOUCH_TRIG_EN;
|
s_config.wakeup_triggers &= ~RTC_TOUCH_TRIG_EN;
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_ULP_COPROC_ENABLED
|
|
||||||
else if (CHECK_SOURCE(source, ESP_SLEEP_WAKEUP_ULP, RTC_ULP_TRIG_EN)) {
|
|
||||||
s_config.wakeup_triggers &= ~RTC_ULP_TRIG_EN;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else {
|
else {
|
||||||
ESP_LOGE(TAG, "Incorrect wakeup source (%d) to disable.", (int) source);
|
ESP_LOGE(TAG, "Incorrect wakeup source (%d) to disable.", (int) source);
|
||||||
return ESP_ERR_INVALID_STATE;
|
return ESP_ERR_INVALID_STATE;
|
||||||
|
@ -384,16 +369,7 @@ esp_err_t esp_sleep_disable_wakeup_source(esp_sleep_source_t source)
|
||||||
|
|
||||||
esp_err_t esp_sleep_enable_ulp_wakeup()
|
esp_err_t esp_sleep_enable_ulp_wakeup()
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ULP_COPROC_ENABLED
|
return ESP_ERR_NOT_SUPPORTED;
|
||||||
if(s_config.wakeup_triggers & RTC_EXT0_TRIG_EN) {
|
|
||||||
ESP_LOGE(TAG, "Conflicting wake-up trigger: ext0");
|
|
||||||
return ESP_ERR_INVALID_STATE;
|
|
||||||
}
|
|
||||||
s_config.wakeup_triggers |= RTC_ULP_TRIG_EN;
|
|
||||||
return ESP_OK;
|
|
||||||
#else
|
|
||||||
return ESP_ERR_INVALID_STATE;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
esp_err_t esp_sleep_enable_timer_wakeup(uint64_t time_in_us)
|
esp_err_t esp_sleep_enable_timer_wakeup(uint64_t time_in_us)
|
||||||
|
|
|
@ -37,7 +37,7 @@ we add more types of external RAM memory, this can be made into a more intellige
|
||||||
#if CONFIG_FREERTOS_UNICORE
|
#if CONFIG_FREERTOS_UNICORE
|
||||||
#define PSRAM_MODE PSRAM_VADDR_MODE_NORMAL
|
#define PSRAM_MODE PSRAM_VADDR_MODE_NORMAL
|
||||||
#else
|
#else
|
||||||
#if CONFIG_MEMMAP_SPIRAM_CACHE_EVENODD
|
#if 0 /* TODO: no even/odd mode for ESP32S2 PSRAM? */
|
||||||
#define PSRAM_MODE PSRAM_VADDR_MODE_EVENODD
|
#define PSRAM_MODE PSRAM_VADDR_MODE_EVENODD
|
||||||
#else
|
#else
|
||||||
#define PSRAM_MODE PSRAM_VADDR_MODE_LOWHIGH
|
#define PSRAM_MODE PSRAM_VADDR_MODE_LOWHIGH
|
||||||
|
@ -147,7 +147,7 @@ void IRAM_ATTR esp_spiram_init_cache()
|
||||||
REG_SET_BIT(DPORT_CACHE_SOURCE_1_REG, DPORT_PRO_CACHE_D_SOURCE_PRO_DPORT | DPORT_PRO_CACHE_D_SOURCE_PRO_DRAM0);
|
REG_SET_BIT(DPORT_CACHE_SOURCE_1_REG, DPORT_PRO_CACHE_D_SOURCE_PRO_DPORT | DPORT_PRO_CACHE_D_SOURCE_PRO_DRAM0);
|
||||||
REG_CLR_BIT(DPORT_PRO_DCACHE_CTRL1_REG, DPORT_PRO_DCACHE_MASK_DRAM1 | DPORT_PRO_DCACHE_MASK_DRAM0 | DPORT_PRO_DCACHE_MASK_DPORT);
|
REG_CLR_BIT(DPORT_PRO_DCACHE_CTRL1_REG, DPORT_PRO_DCACHE_MASK_DRAM1 | DPORT_PRO_DCACHE_MASK_DRAM0 | DPORT_PRO_DCACHE_MASK_DPORT);
|
||||||
#else
|
#else
|
||||||
#if CONFIG_USE_AHB_DBUS3_ACCESS_SPIRAM
|
#if CONFIG_SPIRAM_USE_AHB_DBUS3
|
||||||
#if CONFIG_SPIRAM_SIZE <= DRAM0_DRAM1_DPORT_DBUS3_CACHE_SIZE
|
#if CONFIG_SPIRAM_SIZE <= DRAM0_DRAM1_DPORT_DBUS3_CACHE_SIZE
|
||||||
/* cache size <= 14MB + 576KB, map DRAM0, DRAM1, DPORT bus, as well as data bus3 */
|
/* cache size <= 14MB + 576KB, map DRAM0, DRAM1, DPORT bus, as well as data bus3 */
|
||||||
Cache_Dbus_MMU_Set(DPORT_MMU_ACCESS_SPIRAM, SPIRAM_MID_SIZE_MAP_VADDR, SPIRAM_MID_SIZE_MAP_PADDR, 64, SPIRAM_MID_SIZE_MAP_SIZE >> 16, 0);
|
Cache_Dbus_MMU_Set(DPORT_MMU_ACCESS_SPIRAM, SPIRAM_MID_SIZE_MAP_VADDR, SPIRAM_MID_SIZE_MAP_PADDR, 64, SPIRAM_MID_SIZE_MAP_SIZE >> 16, 0);
|
||||||
|
@ -266,7 +266,7 @@ esp_err_t esp_spiram_add_to_heapalloc()
|
||||||
/* cache size <= 10MB + 576KB, map DRAM0, DRAM1, DPORT bus */
|
/* cache size <= 10MB + 576KB, map DRAM0, DRAM1, DPORT bus */
|
||||||
return heap_caps_add_region((intptr_t)SPIRAM_SMALL_SIZE_MAP_VADDR + size_for_flash, (intptr_t)SPIRAM_SMALL_SIZE_MAP_VADDR + SPIRAM_SMALL_SIZE_MAP_SIZE -1);
|
return heap_caps_add_region((intptr_t)SPIRAM_SMALL_SIZE_MAP_VADDR + size_for_flash, (intptr_t)SPIRAM_SMALL_SIZE_MAP_VADDR + SPIRAM_SMALL_SIZE_MAP_SIZE -1);
|
||||||
#else
|
#else
|
||||||
#if CONFIG_USE_AHB_DBUS3_ACCESS_SPIRAM
|
#if CONFIG_SPIRAM_USE_AHB_DBUS3
|
||||||
#if CONFIG_SPIRAM_SIZE <= DRAM0_DRAM1_DPORT_DBUS3_CACHE_SIZE
|
#if CONFIG_SPIRAM_SIZE <= DRAM0_DRAM1_DPORT_DBUS3_CACHE_SIZE
|
||||||
/* cache size <= 14MB + 576KB, map DRAM0, DRAM1, DPORT bus, as well as data bus3 */
|
/* cache size <= 14MB + 576KB, map DRAM0, DRAM1, DPORT bus, as well as data bus3 */
|
||||||
if (size_for_flash <= SPIRAM_MID_SIZE_MAP_SIZE) {
|
if (size_for_flash <= SPIRAM_MID_SIZE_MAP_SIZE) {
|
||||||
|
|
|
@ -11,14 +11,19 @@ set(COMPONENT_PRIV_INCLUDEDIRS)
|
||||||
set(COMPONENT_REQUIRES wpa_supplicant smartconfig_ack)
|
set(COMPONENT_REQUIRES wpa_supplicant smartconfig_ack)
|
||||||
set(COMPONENT_PRIV_REQUIRES "nvs_flash")
|
set(COMPONENT_PRIV_REQUIRES "nvs_flash")
|
||||||
|
|
||||||
if(NOT CONFIG_ESP32_NO_BLOBS)
|
set(link_binary_libs 1)
|
||||||
|
if (CONFIG_ESP32_NO_BLOBS OR CONFIG_ESP32S2_NO_BLOBS)
|
||||||
|
set(link_binary_libs 0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(link_binary_libs)
|
||||||
set(COMPONENT_ADD_LDFRAGMENTS "linker.lf")
|
set(COMPONENT_ADD_LDFRAGMENTS "linker.lf")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
register_component()
|
register_component()
|
||||||
target_link_libraries(${COMPONENT_LIB} "-L ${CMAKE_CURRENT_SOURCE_DIR}/lib_${IDF_TARGET}")
|
target_link_libraries(${COMPONENT_LIB} "-L ${CMAKE_CURRENT_SOURCE_DIR}/lib_${IDF_TARGET}")
|
||||||
|
|
||||||
if(NOT CONFIG_ESP32_NO_BLOBS)
|
if(link_binary_libs)
|
||||||
set(blobs coexist core espnow mesh net80211 phy pp rtc smartconfig wpa2 wpa wps)
|
set(blobs coexist core espnow mesh net80211 phy pp rtc smartconfig wpa2 wpa wps)
|
||||||
foreach(blob ${blobs})
|
foreach(blob ${blobs})
|
||||||
add_library(${blob} STATIC IMPORTED)
|
add_library(${blob} STATIC IMPORTED)
|
||||||
|
|
Loading…
Reference in a new issue