tcl/esp32s3: check memory protection on gdb attach

Memory protection must be disabled to allow stub flasher
operate correctly.

Signed-off-by: Erhan Kurubas <erhan.kurubas@espressif.com>
Change-Id: I6f292ee672ae001cd6e4df5d24eb7bb862639093
Reviewed-on: https://review.openocd.org/c/openocd/+/7037
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
Erhan Kurubas 2022-06-18 23:16:37 +02:00 committed by Antonio Borneo
parent c1ef4e5207
commit 6eda28ef67
1 changed files with 46 additions and 3 deletions

View File

@ -39,7 +39,50 @@ if { $_ONLYCPU != 1 } {
} }
proc esp32s3_memprot_is_enabled { } { proc esp32s3_memprot_is_enabled { } {
# TODO: after https://review.openocd.org/c/openocd/+/7016 merged # SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0_REG
if { [get_mmr_bit 0x600C10C0 0] != 0 } {
return 1
}
# SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_0_REG
if { [get_mmr_bit 0x600C1124 0] != 0 } {
return 1
}
# SENSITIVE_CORE_1_PIF_PMS_CONSTRAIN_0_REG
if { [get_mmr_bit 0x600C11D0 0] != 0 } {
return 1
}
# IRAM0, SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_0_REG
if { [get_mmr_bit 0x600C10D8 0] != 0 } {
return 1
}
# DRAM0, SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_0_REG
if { [get_mmr_bit 0x600C10FC 0] != 0 } {
return 1
}
# SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_0_REG
if { [get_mmr_bit 0x600C10E4 0] != 0 } {
return 1
}
# SENSITIVE_CORE_1_IRAM0_PMS_MONITOR_0_REG
if { [get_mmr_bit 0x600C10F0 0] != 0 } {
return 1
}
# SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_0_REG
if { [get_mmr_bit 0x600C1104 0] != 0 } {
return 1
}
# SENSITIVE_CORE_1_DRAM0_PMS_MONITOR_0_REG
if { [get_mmr_bit 0x600C1114 0] != 0 } {
return 1
}
# SENSITIVE_CORE_0_PIF_PMS_MONITOR_0_REG
if { [get_mmr_bit 0x600C119C 0] != 0 } {
return 1
}
# SENSITIVE_CORE_1_PIF_PMS_MONITOR_0_REG
if { [get_mmr_bit 0x600C1248 0] != 0 } {
return 1
}
return 0 return 0
} }
@ -56,13 +99,13 @@ $_TARGETNAME_0 xtensa smpbreak BreakIn BreakOut
$_TARGETNAME_0 configure -event gdb-attach { $_TARGETNAME_0 configure -event gdb-attach {
$_TARGETNAME_0 xtensa smpbreak BreakIn BreakOut $_TARGETNAME_0 xtensa smpbreak BreakIn BreakOut
# necessary to auto-probe flash bank when GDB is connected # necessary to auto-probe flash bank when GDB is connected and generate proper memory map
halt 1000 halt 1000
if { [esp32s3_memprot_is_enabled] } { if { [esp32s3_memprot_is_enabled] } {
# 'reset halt' to disable memory protection and allow flasher to work correctly # 'reset halt' to disable memory protection and allow flasher to work correctly
echo "Memory protection is enabled. Reset target to disable it..." echo "Memory protection is enabled. Reset target to disable it..."
reset halt reset halt
} }
} }
$_TARGETNAME_0 configure -event reset-assert-post { soft_reset_halt } $_TARGETNAME_0 configure -event reset-assert-post { soft_reset_halt }