diff --git a/code/hello_world_01/.vscode/c_cpp_properties.json b/code/hello_world_01/.vscode/c_cpp_properties.json index e91078e..e03e8c4 100644 --- a/code/hello_world_01/.vscode/c_cpp_properties.json +++ b/code/hello_world_01/.vscode/c_cpp_properties.json @@ -2,7 +2,7 @@ "configurations": [ { "name": "ESP-IDF", - "compilerPath": "C:\\Espressif\\tools\\xtensa-esp-elf\\esp-14.2.0_20241119\\xtensa-esp-elf\\bin\\xtensa-esp32-elf-gcc.exe", + "compilerPath": "C:\\Espressif\\tools\\xtensa-esp-elf\\esp-14.2.0_20241119\\xtensa-esp-elf\\bin\\xtensa-esp32s3-elf-gcc.exe", "compileCommands": "${config:idf.buildPath}/compile_commands.json", "includePath": [ "${workspaceFolder}/**" diff --git a/code/hello_world_01/.vscode/settings.json b/code/hello_world_01/.vscode/settings.json index 0627dab..fba648e 100644 --- a/code/hello_world_01/.vscode/settings.json +++ b/code/hello_world_01/.vscode/settings.json @@ -6,6 +6,8 @@ "idf.portWin": "COM10", "idf.currentSetup": "C:\\Users\\wuwen\\esp\\v5.5.1\\esp-idf", "idf.customExtraVars": { + "OPENOCD_SCRIPTS": "C:\\Espressif\\tools\\openocd-esp32\\v0.11.0-esp32-20220411/openocd-esp32/share/openocd/scripts", + "IDF_CCACHE_ENABLE": "1", "IDF_TARGET": "esp32s3" }, "clangd.path": "C:\\Espressif\\tools\\esp-clang\\esp-19.1.2_20250312\\esp-clang\\bin\\clangd.exe", diff --git a/code/hello_world_01/main/CMakeLists.txt b/code/hello_world_01/main/CMakeLists.txt index 9be6707..cfbd19c 100644 --- a/code/hello_world_01/main/CMakeLists.txt +++ b/code/hello_world_01/main/CMakeLists.txt @@ -7,7 +7,7 @@ idf_component_register( PRIV_REQUIRES spi_flash esp_driver_spi esp_driver_gpio esp_timer INCLUDE_DIRS "." REQUIRES - spiffs + spiffs esp_psram PRIV_REQUIRES ) diff --git a/code/hello_world_01/main/hello_world_main.c b/code/hello_world_01/main/hello_world_main.c index 719200f..9f91c92 100644 --- a/code/hello_world_01/main/hello_world_main.c +++ b/code/hello_world_01/main/hello_world_main.c @@ -54,6 +54,18 @@ void app_main(void) ESP_LOGI(TAG, "sizeof(int) ==%d", sizeof(int)); + // 内部 RAM 信息 + size_t internal_free = heap_caps_get_free_size(MALLOC_CAP_INTERNAL); + size_t internal_total = heap_caps_get_total_size(MALLOC_CAP_INTERNAL); + + ESP_LOGI(TAG,"内部 RAM 总大小:%u KB,可用:%u KB\n", internal_total/1024, internal_free/1024); + + // PSRAM 信息 + size_t psram_free = heap_caps_get_free_size(MALLOC_CAP_SPIRAM); + size_t psram_total = heap_caps_get_total_size(MALLOC_CAP_SPIRAM); + + ESP_LOGI(TAG,"PSRAM 总大小:%u KB,可用:%u KB\n", psram_total/1024, psram_free/1024); + // 1. 初始化 SPIFFS const char *spiffs_base_path = "/spiffs"; diff --git a/code/hello_world_01/sdkconfig b/code/hello_world_01/sdkconfig index 0e73be4..50898ae 100644 --- a/code/hello_world_01/sdkconfig +++ b/code/hello_world_01/sdkconfig @@ -739,8 +739,8 @@ CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4 # # Sleep Config # -# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND=y CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU=y CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y @@ -829,6 +829,44 @@ CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y # end of Power Management +# +# ESP PSRAM +# +CONFIG_SPIRAM=y + +# +# SPI RAM config +# +CONFIG_SPIRAM_MODE_QUAD=y +# CONFIG_SPIRAM_MODE_OCT is not set +CONFIG_SPIRAM_TYPE_AUTO=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +CONFIG_SPIRAM_CLK_IO=30 +CONFIG_SPIRAM_CS_IO=26 +# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +# CONFIG_SPIRAM_SPEED_120M is not set +# CONFIG_SPIRAM_SPEED_80M is not set +CONFIG_SPIRAM_SPEED_40M=y +CONFIG_SPIRAM_SPEED=40 +CONFIG_SPIRAM_BOOT_HW_INIT=y +CONFIG_SPIRAM_BOOT_INIT=y +CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION=y +# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set +# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set +CONFIG_SPIRAM_USE_MALLOC=y +CONFIG_SPIRAM_MEMTEST=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384 +# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 +# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set +# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set +# end of SPI RAM config +# end of ESP PSRAM + # # ESP Ringbuf # @@ -1029,6 +1067,7 @@ CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y # # Extra # +CONFIG_FREERTOS_TASK_CREATE_ALLOW_EXT_MEM=y # end of Extra CONFIG_FREERTOS_PORT=y @@ -1125,6 +1164,7 @@ CONFIG_LOG_IN_IRAM=y # mbedTLS # CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC is not set # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y @@ -1279,6 +1319,8 @@ CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y # CONFIG_LIBC_TIME_SYSCALL_USE_NONE is not set # end of LibC +CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND=y + # # PThreads # @@ -1464,7 +1506,6 @@ CONFIG_STACK_CHECK_NONE=y # CONFIG_STACK_CHECK_STRONG is not set # CONFIG_STACK_CHECK_ALL is not set # CONFIG_WARN_WRITE_STRINGS is not set -# CONFIG_ESP_SYSTEM_PD_FLASH is not set CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000 CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y @@ -1494,6 +1535,9 @@ CONFIG_ESP32S3_BROWNOUT_DET_LVL=7 CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP=y +CONFIG_ESP32S3_SPIRAM_SUPPORT=y +CONFIG_DEFAULT_PSRAM_CLK_IO=30 +CONFIG_DEFAULT_PSRAM_CS_IO=26 # CONFIG_ESP32S3_DEFAULT_CPU_FREQ_80 is not set CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y # CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 is not set @@ -1525,6 +1569,7 @@ CONFIG_TIMER_TASK_PRIORITY=1 CONFIG_TIMER_TASK_STACK_DEPTH=2048 CONFIG_TIMER_QUEUE_LENGTH=10 # CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y # CONFIG_HAL_ASSERTION_SILIENT is not set CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y # CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set