aboutsummaryrefslogtreecommitdiff
path: root/tcl
diff options
context:
space:
mode:
authorEdward Fewell <efewell@ti.com>2020-03-02 14:04:24 -0600
committerAntonio Borneo <borneo.antonio@gmail.com>2020-03-24 17:18:31 +0000
commit4d7c48fb80cb65d53ad3bcd57182ffb79b61e5f3 (patch)
treee34d2b8ff2b28408622b5f0934d64451f8a4ee52 /tcl
parentd35c44c743d6f471697ed1d204fe5447fd47cefd (diff)
downloadriscv-openocd-4d7c48fb80cb65d53ad3bcd57182ffb79b61e5f3.zip
riscv-openocd-4d7c48fb80cb65d53ad3bcd57182ffb79b61e5f3.tar.gz
riscv-openocd-4d7c48fb80cb65d53ad3bcd57182ffb79b61e5f3.tar.bz2
tcl/target: Enable using vectreset for CC3320SF targets
On CC32xx family of devices, sysrequest 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. This change enables using vectreset on SF variants by moving the PC to the start of the user application in internal flash. This allows for a more reliable reset, but with two caveats: 1) This only works for the SF variant with internal flash. 2) This only resets the CPU and not any peripherals. Tested on CC3220SF rev B Launchpad in both SWD and JTAG modes. Confirmed proper behavior of reset, reset init, reset halt, and reset run commands. Update: reworked per comment in code review. Re-tested with CC3220SF Launchpad as both CC3220SF and as CC32xx board to confirm reset behavior as expected. Update: Added adapter srst delay 1100 line to the CC3200 LaunchXL configuration file. Change-Id: Ibc042d785c846c2223ae55b8f2410b75ed2df354 Signed-off-by: Edward Fewell <efewell@ti.com> Reviewed-on: http://openocd.zylin.com/5489 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
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