tcl/esp32s2: check memory protection on gdb attach 36/7036/3
authorErhan Kurubas <erhan.kurubas@espressif.com>
Sat, 18 Jun 2022 21:01:28 +0000 (23:01 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 2 Jul 2022 08:24:28 +0000 (08:24 +0000)
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>
tcl/target/esp32s2.cfg

index ab64c313582f88f6c0383faf2e0074b6533f4c2e..8c5835da60a6ae2076c2241bdcbcc2d19b40dc8d 100644 (file)
@@ -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 }

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)