2022-04-21 00:53:54 -05:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#
|
|
|
|
# The ESP32-S2 only supports JTAG.
|
|
|
|
transport select jtag
|
|
|
|
|
2022-06-18 16:01:28 -05:00
|
|
|
set CPU_MAX_ADDRESS 0xFFFFFFFF
|
|
|
|
source [find bitsbytes.tcl]
|
|
|
|
source [find memory.tcl]
|
|
|
|
source [find mmr_helpers.tcl]
|
2022-06-30 05:14:27 -05:00
|
|
|
# Source the ESP common configuration file
|
|
|
|
source [find target/esp_common.cfg]
|
2022-06-18 16:01:28 -05:00
|
|
|
|
2022-04-21 00:53:54 -05:00
|
|
|
if { [info exists CHIPNAME] } {
|
|
|
|
set _CHIPNAME $CHIPNAME
|
|
|
|
} else {
|
|
|
|
set _CHIPNAME esp32s2
|
|
|
|
}
|
|
|
|
|
|
|
|
if { [info exists CPUTAPID] } {
|
|
|
|
set _CPUTAPID $CPUTAPID
|
|
|
|
} else {
|
|
|
|
set _CPUTAPID 0x120034e5
|
|
|
|
}
|
|
|
|
|
|
|
|
set _TARGETNAME $_CHIPNAME
|
|
|
|
set _CPUNAME cpu
|
|
|
|
set _TAPNAME $_CHIPNAME.$_CPUNAME
|
|
|
|
|
|
|
|
jtag newtap $_CHIPNAME $_CPUNAME -irlen 5 -expected-id $_CPUTAPID
|
|
|
|
|
2022-06-18 16:01:28 -05:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2022-04-21 00:53:54 -05:00
|
|
|
target create $_TARGETNAME esp32s2 -endian little -chain-position $_TAPNAME
|
|
|
|
|
2022-06-18 16:01:28 -05:00
|
|
|
$_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
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-04-21 00:53:54 -05:00
|
|
|
xtensa maskisr on
|
|
|
|
|
2022-06-30 05:14:27 -05:00
|
|
|
$_TARGETNAME configure -event examine-end {
|
|
|
|
# Need to enable to set 'semihosting_basedir'
|
|
|
|
arm semihosting enable
|
|
|
|
arm semihosting_resexit enable
|
|
|
|
if { [info exists _SEMIHOST_BASEDIR] } {
|
|
|
|
if { $_SEMIHOST_BASEDIR != "" } {
|
|
|
|
arm semihosting_basedir $_SEMIHOST_BASEDIR
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-04-21 00:53:54 -05:00
|
|
|
$_TARGETNAME configure -event reset-assert-post { soft_reset_halt }
|
|
|
|
|
|
|
|
gdb_breakpoint_override hard
|
2022-06-25 00:27:32 -05:00
|
|
|
|
|
|
|
source [find target/xtensa-core-esp32s2.cfg]
|