aboutsummaryrefslogtreecommitdiff
path: root/tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tcl')
-rw-r--r--tcl/board/ti_cc3200_launchxl.cfg1
-rw-r--r--tcl/board/ti_cc32xx_launchpad.cfg3
-rw-r--r--tcl/target/ti_cc3220sf.cfg28
-rw-r--r--tcl/target/ti_cc32xx.cfg3
4 files changed, 32 insertions, 3 deletions
diff --git a/tcl/board/ti_cc3200_launchxl.cfg b/tcl/board/ti_cc3200_launchxl.cfg
index 34f9bff..b37b406 100644
--- a/tcl/board/ti_cc3200_launchxl.cfg
+++ b/tcl/board/ti_cc3200_launchxl.cfg
@@ -18,3 +18,4 @@ set WORKAREASIZE 0x40000
source [find target/ti_cc32xx.cfg]
reset_config srst_only
+adapter srst delay 1100
diff --git a/tcl/board/ti_cc32xx_launchpad.cfg b/tcl/board/ti_cc32xx_launchpad.cfg
index 1df461a..d0f2a83 100644
--- a/tcl/board/ti_cc32xx_launchpad.cfg
+++ b/tcl/board/ti_cc32xx_launchpad.cfg
@@ -5,3 +5,6 @@ source [find interface/xds110.cfg]
adapter speed 8500
transport select swd
source [find target/ti_cc32xx.cfg]
+
+reset_config srst_only
+adapter srst delay 1100
diff --git a/tcl/target/ti_cc3220sf.cfg b/tcl/target/ti_cc3220sf.cfg
index f7d9bfe..3e758e6 100644
--- a/tcl/target/ti_cc3220sf.cfg
+++ b/tcl/target/ti_cc3220sf.cfg
@@ -10,3 +10,31 @@ source [find target/ti_cc32xx.cfg]
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cc3220sf 0 0 0 0 $_TARGETNAME
+
+#
+# On CC32xx family of devices, sysreqreset is disabled, and vectreset is
+# blocked by the boot loader (stops in a while(1) statement). srst reset can
+# leave the target in a state that prevents debug. The following uses the
+# soft_reset_halt command to reset and halt the target. Then the PC and stack
+# are initialized from internal flash. This allows for a more reliable reset,
+# but with two caveats: it only works for the SF variant that has internal
+# flash, and it only resets the CPU and not any peripherals.
+#
+
+proc ocd_process_reset_inner { MODE } {
+
+ soft_reset_halt
+
+ # Intialize MSP, PSP, and PC from vector table at flash 0x01000800
+ mem2array boot 32 0x01000800 2
+
+ reg msp $boot(0)
+ reg psp $boot(0)
+ reg pc $boot(1)
+
+ if { 0 == [string compare $MODE run ] } {
+ resume
+ }
+
+ cc32xx.cpu invoke-event reset-end
+}
diff --git a/tcl/target/ti_cc32xx.cfg b/tcl/target/ti_cc32xx.cfg
index 6f91d3f..e3e3ebc 100644
--- a/tcl/target/ti_cc32xx.cfg
+++ b/tcl/target/ti_cc32xx.cfg
@@ -59,6 +59,3 @@ if { [info exists WORKAREASIZE] } {
}
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
-
-reset_config srst_only
-adapter srst delay 1100