tcl/esp32s2: 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: I2f239d98fca6882c4361691af306a5652b58ee78 Reviewed-on: https://review.openocd.org/c/openocd/+/7036 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
parent
3d61a9593e
commit
c1ef4e5207
|
@ -3,6 +3,11 @@
|
||||||
# The ESP32-S2 only supports JTAG.
|
# The ESP32-S2 only supports JTAG.
|
||||||
transport select jtag
|
transport select jtag
|
||||||
|
|
||||||
|
set CPU_MAX_ADDRESS 0xFFFFFFFF
|
||||||
|
source [find bitsbytes.tcl]
|
||||||
|
source [find memory.tcl]
|
||||||
|
source [find mmr_helpers.tcl]
|
||||||
|
|
||||||
if { [info exists CHIPNAME] } {
|
if { [info exists CHIPNAME] } {
|
||||||
set _CHIPNAME $CHIPNAME
|
set _CHIPNAME $CHIPNAME
|
||||||
} else {
|
} else {
|
||||||
|
@ -21,8 +26,38 @@ set _TAPNAME $_CHIPNAME.$_CPUNAME
|
||||||
|
|
||||||
jtag newtap $_CHIPNAME $_CPUNAME -irlen 5 -expected-id $_CPUTAPID
|
jtag newtap $_CHIPNAME $_CPUNAME -irlen 5 -expected-id $_CPUTAPID
|
||||||
|
|
||||||
|
proc esp32s2_memprot_is_enabled { } {
|
||||||
|
# IRAM0, DPORT_PMS_PRO_IRAM0_0_REG
|
||||||
|
if { [get_mmr_bit 0x3f4c1010 0] != 0 } {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
# DRAM0, DPORT_PMS_PRO_DRAM0_0_REG
|
||||||
|
if { [get_mmr_bit 0x3f4c1028 0] != 0 } {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
# PERI1, DPORT_PMS_PRO_DPORT_0_REG
|
||||||
|
if { [get_mmr_bit 0x3f4c103c 0] != 0 } {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
# PERI2, DPORT_PMS_PRO_AHB_0_REG
|
||||||
|
if { [get_mmr_bit 0x3f4c105c 0] != 0 } {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
target create $_TARGETNAME esp32s2 -endian little -chain-position $_TAPNAME
|
target create $_TARGETNAME esp32s2 -endian little -chain-position $_TAPNAME
|
||||||
|
|
||||||
|
$_TARGETNAME configure -event gdb-attach {
|
||||||
|
# necessary to auto-probe flash bank when GDB is connected and generate proper memory map
|
||||||
|
halt 1000
|
||||||
|
if { [esp32s2_memprot_is_enabled] } {
|
||||||
|
# 'reset halt' to disable memory protection and allow flasher to work correctly
|
||||||
|
echo "Memory protection is enabled. Reset target to disable it..."
|
||||||
|
reset halt
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
xtensa maskisr on
|
xtensa maskisr on
|
||||||
|
|
||||||
$_TARGETNAME configure -event reset-assert-post { soft_reset_halt }
|
$_TARGETNAME configure -event reset-assert-post { soft_reset_halt }
|
||||||
|
|
Loading…
Reference in New Issue