aboutsummaryrefslogtreecommitdiff
path: root/tcl
diff options
context:
space:
mode:
authorErhan Kurubas <erhan.kurubas@espressif.com>2022-06-18 23:01:28 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2022-07-02 08:24:28 +0000
commitc1ef4e52079c4aaf7aec2cda7bec46406bc8bbac (patch)
treeb722fef42fe5df1f2eb454738ac2b36bdd63bc07 /tcl
parent3d61a9593e9f61e37dacff27c5dafc1fd452873d (diff)
downloadriscv-openocd-c1ef4e52079c4aaf7aec2cda7bec46406bc8bbac.zip
riscv-openocd-c1ef4e52079c4aaf7aec2cda7bec46406bc8bbac.tar.gz
riscv-openocd-c1ef4e52079c4aaf7aec2cda7bec46406bc8bbac.tar.bz2
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>
Diffstat (limited to 'tcl')
-rw-r--r--tcl/target/esp32s2.cfg35
1 files changed, 35 insertions, 0 deletions
diff --git a/tcl/target/esp32s2.cfg b/tcl/target/esp32s2.cfg
index ab64c31..8c5835d 100644
--- a/tcl/target/esp32s2.cfg
+++ b/tcl/target/esp32s2.cfg
@@ -3,6 +3,11 @@
# The ESP32-S2 only supports 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] } {
set _CHIPNAME $CHIPNAME
} else {
@@ -21,8 +26,38 @@ set _TAPNAME $_CHIPNAME.$_CPUNAME
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
+$_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
$_TARGETNAME configure -event reset-assert-post { soft_reset_halt }