feat(system): add OCD stub bin support for more targets

Add SOC_DEBUG_HAVE_OCD_STUB_BINS for esp32c5, esp32c61, esp32h4,
esp32h21, esp32p4, and esp32s31. Update TEE linker scripts with
correct esp_tee_app_config offsets for the 0x3000 stub reservation
This commit is contained in:
Erhan Kurubas
2026-09-03 13:05:34 +02:00
committed by Samuel Obuch
parent 3e788612ec
commit bc8cd6ce4c
16 changed files with 67 additions and 4 deletions
+7
View File
@@ -409,6 +409,7 @@ menu "ESP System Settings"
bool "Preload OpenOCD stub binaries to speed up debugging. 12K memory will be reserved" bool "Preload OpenOCD stub binaries to speed up debugging. 12K memory will be reserved"
default n default n
depends on SOC_DEBUG_HAVE_OCD_STUB_BINS depends on SOC_DEBUG_HAVE_OCD_STUB_BINS
depends on !IDF_TARGET_ESP32P4 || ESP32P4_SELECTS_REV_LESS_V3 || CACHE_L2_CACHE_512KB
help help
OpenOCD uses stub code to access flash during programming or when inserting and removing OpenOCD uses stub code to access flash during programming or when inserting and removing
SW flash breakpoints. SW flash breakpoints.
@@ -418,6 +419,12 @@ menu "ESP System Settings"
By enabling this option, 12K of memory in RAM will be preallocated with the stub code, By enabling this option, 12K of memory in RAM will be preallocated with the stub code,
eliminating the need to back up and restore the memory region. eliminating the need to back up and restore the memory region.
The stub binaries are prebuilt and linked to run at the start of IRAM (_iram_start).
On ESP32-P4 rev >= v3, _iram_start is 0x4FF00000 + L2 cache size, so it only matches the
stub's link address (0x4FF80000) when the L2 cache is 512KB. This option is therefore
only available on ESP32-P4 rev >= v3 when CACHE_L2_CACHE_512KB is selected. Earlier P4
revisions and other targets place _iram_start at a fixed address and are not affected.
config ESP_DEBUG_OCDAWARE config ESP_DEBUG_OCDAWARE
bool "Make exception and panic handlers JTAG/OCD aware" bool "Make exception and panic handlers JTAG/OCD aware"
default y default y
@@ -15,10 +15,14 @@ set(openocd_path $ENV{OPENOCD_SCRIPTS})
if(openocd_path) if(openocd_path)
set(stub_bin_path ${openocd_path}/../espressif/stub_bins) set(stub_bin_path ${openocd_path}/../espressif/stub_bins)
if(IS_DIRECTORY ${stub_bin_path} AND IS_DIRECTORY ${stub_bin_path}/${target}) set(stub_target_dir ${target})
set(code_bin "${stub_bin_path}/${target}/stub_flash_idf_binary_code.inc") if(target STREQUAL "esp32p4" AND CONFIG_ESP32P4_REV_MIN_FULL LESS 300)
set(data_bin "${stub_bin_path}/${target}/stub_flash_idf_binary_data.inc") set(stub_target_dir "esp32p4-rev1")
set(img_header "${stub_bin_path}/${target}/stub_flash_idf_image.h") endif()
if(IS_DIRECTORY ${stub_bin_path} AND IS_DIRECTORY ${stub_bin_path}/${stub_target_dir})
set(code_bin "${stub_bin_path}/${stub_target_dir}/stub_flash_idf_binary_code.inc")
set(data_bin "${stub_bin_path}/${stub_target_dir}/stub_flash_idf_binary_data.inc")
set(img_header "${stub_bin_path}/${stub_target_dir}/stub_flash_idf_image.h")
if(EXISTS ${code_bin} AND EXISTS ${data_bin} AND EXISTS ${img_header}) if(EXISTS ${code_bin} AND EXISTS ${data_bin} AND EXISTS ${img_header})
set(dest_dir "${CMAKE_BINARY_DIR}/openocd_stub_bins") set(dest_dir "${CMAKE_BINARY_DIR}/openocd_stub_bins")
set(output_code_bin "${dest_dir}/stub_flash_idf_binary_code.inc") set(output_code_bin "${dest_dir}/stub_flash_idf_binary_code.inc")
@@ -32,7 +32,12 @@
* should be stored via esp_app_tee_config structure * should be stored via esp_app_tee_config structure
*/ */
#if CONFIG_ESP_DEBUG_INCLUDE_OCD_STUB_BINS
PROVIDE ( esp_tee_app_config = SRAM_REE_SEG_START + 0x32b0 );
#else
PROVIDE ( esp_tee_app_config = SRAM_REE_SEG_START + 0x2b0 ); PROVIDE ( esp_tee_app_config = SRAM_REE_SEG_START + 0x2b0 );
#endif
PROVIDE ( GDMA = 0x60080000 ); PROVIDE ( GDMA = 0x60080000 );
/* SPI Flash functions required from the ROM (refer esp32c5.rom.spiflash.ld) */ /* SPI Flash functions required from the ROM (refer esp32c5.rom.spiflash.ld) */
@@ -32,7 +32,12 @@
* should be stored via esp_app_tee_config structure * should be stored via esp_app_tee_config structure
*/ */
#if CONFIG_ESP_DEBUG_INCLUDE_OCD_STUB_BINS
PROVIDE ( esp_tee_app_config = SRAM_REE_SEG_START + 0x32b0 );
#else
PROVIDE ( esp_tee_app_config = SRAM_REE_SEG_START + 0x2b0 ); PROVIDE ( esp_tee_app_config = SRAM_REE_SEG_START + 0x2b0 );
#endif
PROVIDE ( GDMA = 0x60080000 ); PROVIDE ( GDMA = 0x60080000 );
/* SPI Flash functions required from the ROM (refer esp32c61.rom.spiflash.ld) */ /* SPI Flash functions required from the ROM (refer esp32c61.rom.spiflash.ld) */
@@ -1619,6 +1619,10 @@ config SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
bool bool
default y default y
config SOC_DEBUG_HAVE_OCD_STUB_BINS
bool
default y
config SOC_LP_CORE_SINGLE_INTERRUPT_VECTOR config SOC_LP_CORE_SINGLE_INTERRUPT_VECTOR
bool bool
default y default y
@@ -648,6 +648,9 @@
// #define SOC_PHY_COMBO_MODULE (1) /*!< Support Wi-Fi, BLE and 15.4*/ // #define SOC_PHY_COMBO_MODULE (1) /*!< Support Wi-Fi, BLE and 15.4*/
#define SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT (1) #define SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT (1)
/*------------------------------------- DEBUG CAPS -------------------------------------*/
#define SOC_DEBUG_HAVE_OCD_STUB_BINS (1)
/*------------------------------------- ULP CAPS -------------------------------------*/ /*------------------------------------- ULP CAPS -------------------------------------*/
#define SOC_LP_CORE_SINGLE_INTERRUPT_VECTOR (1) /*!< LP Core interrupts all map to a single entry in vector table */ #define SOC_LP_CORE_SINGLE_INTERRUPT_VECTOR (1) /*!< LP Core interrupts all map to a single entry in vector table */
#define SOC_LP_CORE_SUPPORT_ETM (1) /*!< LP Core supports ETM */ #define SOC_LP_CORE_SUPPORT_ETM (1) /*!< LP Core supports ETM */
@@ -1250,3 +1250,7 @@ config SOC_PHY_COMBO_MODULE
config SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT config SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
bool bool
default y default y
config SOC_DEBUG_HAVE_OCD_STUB_BINS
bool
default y
@@ -505,5 +505,8 @@
#define SOC_PHY_COMBO_MODULE (1) /*!< Support Wi-Fi, BLE and 15.4*/ #define SOC_PHY_COMBO_MODULE (1) /*!< Support Wi-Fi, BLE and 15.4*/
#define SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT (1) #define SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT (1)
/*------------------------------------- DEBUG CAPS -------------------------------------*/
#define SOC_DEBUG_HAVE_OCD_STUB_BINS (1)
/*------------------------------------- No Reset CAPS -------------------------------------*/ /*------------------------------------- No Reset CAPS -------------------------------------*/
// \#define SOC_CAPS_NO_RESET_BY_ANA_BOD (1) //TODO: [ESP32C61] IDF-9254 // \#define SOC_CAPS_NO_RESET_BY_ANA_BOD (1) //TODO: [ESP32C61] IDF-9254
@@ -1094,3 +1094,7 @@ config SOC_BLE_SUBRATE_SUPPORTED
config SOC_BLE_PERIODIC_ADV_WITH_RESPONSE config SOC_BLE_PERIODIC_ADV_WITH_RESPONSE
bool bool
default y default y
config SOC_DEBUG_HAVE_OCD_STUB_BINS
bool
default y
@@ -503,3 +503,6 @@
#define SOC_BLE_CTE_SUPPORTED (1) /*!< Support Bluetooth LE Constant Tone Extension (CTE) */ #define SOC_BLE_CTE_SUPPORTED (1) /*!< Support Bluetooth LE Constant Tone Extension (CTE) */
#define SOC_BLE_SUBRATE_SUPPORTED (1) /*!< Support Bluetooth LE Connection Subrating */ #define SOC_BLE_SUBRATE_SUPPORTED (1) /*!< Support Bluetooth LE Connection Subrating */
#define SOC_BLE_PERIODIC_ADV_WITH_RESPONSE (1) /*!< Support Bluetooth LE Periodic Advertising with Response (PAwR) */ #define SOC_BLE_PERIODIC_ADV_WITH_RESPONSE (1) /*!< Support Bluetooth LE Periodic Advertising with Response (PAwR) */
/*------------------------------------- DEBUG CAPS -------------------------------------*/
#define SOC_DEBUG_HAVE_OCD_STUB_BINS (1)
@@ -1383,6 +1383,10 @@ config SOC_USB_FSLS_PHY_NUM
int int
default 1 default 1
config SOC_DEBUG_HAVE_OCD_STUB_BINS
bool
default y
config SOC_ASRC_SUPPORTED config SOC_ASRC_SUPPORTED
bool bool
default y default y
@@ -573,5 +573,8 @@
#define SOC_USB_OTG_PERIPH_NUM (1U) #define SOC_USB_OTG_PERIPH_NUM (1U)
#define SOC_USB_FSLS_PHY_NUM (1U) #define SOC_USB_FSLS_PHY_NUM (1U)
/*------------------------------------- DEBUG CAPS -------------------------------------*/
#define SOC_DEBUG_HAVE_OCD_STUB_BINS (1)
/*---------------------------------- ASRC CAPS ----------------------------------*/ /*---------------------------------- ASRC CAPS ----------------------------------*/
#define SOC_ASRC_SUPPORTED (1) #define SOC_ASRC_SUPPORTED (1)
@@ -1958,3 +1958,7 @@ config SOC_LP_CORE_HW_AUTO_CLRWAKEUPCAUSE
config SOC_LP_CORE_LP_UART_WAKEUP_KEEP_TRIGGERED config SOC_LP_CORE_LP_UART_WAKEUP_KEEP_TRIGGERED
bool bool
default y default y
config SOC_DEBUG_HAVE_OCD_STUB_BINS
bool
default y
@@ -749,3 +749,6 @@
#define SOC_LP_CORE_SUPPORT_I2C (1) /*!< LP Core supports I2C */ #define SOC_LP_CORE_SUPPORT_I2C (1) /*!< LP Core supports I2C */
#define SOC_LP_CORE_HW_AUTO_CLRWAKEUPCAUSE (1) /*!< LP core requests sleep, PMU clears both HP and LP wakeup causes */ #define SOC_LP_CORE_HW_AUTO_CLRWAKEUPCAUSE (1) /*!< LP core requests sleep, PMU clears both HP and LP wakeup causes */
#define SOC_LP_CORE_LP_UART_WAKEUP_KEEP_TRIGGERED (1) /*!< LP UART wakeup source is kept triggered */ #define SOC_LP_CORE_LP_UART_WAKEUP_KEEP_TRIGGERED (1) /*!< LP UART wakeup source is kept triggered */
/*------------------------------------- DEBUG CAPS -------------------------------------*/
#define SOC_DEBUG_HAVE_OCD_STUB_BINS (1)
@@ -1862,3 +1862,7 @@ config SOC_TEMPERATURE_SENSOR_SUPPORT_ETM
config SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION config SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION
bool bool
default y default y
config SOC_DEBUG_HAVE_OCD_STUB_BINS
bool
default y
@@ -692,3 +692,6 @@
#define SOC_TEMPERATURE_SENSOR_SUPPORT_ETM (1) #define SOC_TEMPERATURE_SENSOR_SUPPORT_ETM (1)
// temperature sensor on esp32s31 in under low power domain. // temperature sensor on esp32s31 in under low power domain.
#define SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION (1) #define SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION (1)
/*------------------------------------- DEBUG CAPS -------------------------------------*/
#define SOC_DEBUG_HAVE_OCD_STUB_BINS (1)