diff options
author | Erhan Kurubas <erhan.kurubas@espressif.com> | 2022-06-18 23:01:28 +0200 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2022-07-02 08:24:28 +0000 |
commit | c1ef4e52079c4aaf7aec2cda7bec46406bc8bbac (patch) | |
tree | b722fef42fe5df1f2eb454738ac2b36bdd63bc07 | |
parent | 3d61a9593e9f61e37dacff27c5dafc1fd452873d (diff) | |
download | riscv-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>
-rw-r--r-- | tcl/target/esp32s2.cfg | 35 |
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 } |