tcl/target: add SPDX tag
[fw/openocd] / tcl / target / ti_cc3220sf.cfg
1 # SPDX-License-Identifier: GPL-2.0-or-later
2
3 #
4 # Texas Instruments CC3220SF - ARM Cortex-M4
5 #
6 # http://www.ti.com/CC3220SF
7 #
8
9 source [find target/swj-dp.tcl]
10 source [find target/icepick.cfg]
11 source [find target/ti_cc32xx.cfg]
12
13 set _FLASHNAME $_CHIPNAME.flash
14 flash bank $_FLASHNAME cc3220sf 0 0 0 0 $_TARGETNAME
15
16 #
17 # On CC32xx family of devices, sysreqreset is disabled, and vectreset is
18 # blocked by the boot loader (stops in a while(1) statement). srst reset can
19 # leave the target in a state that prevents debug. The following uses the
20 # soft_reset_halt command to reset and halt the target. Then the PC and stack
21 # are initialized from internal flash. This allows for a more reliable reset,
22 # but with two caveats: it only works for the SF variant that has internal
23 # flash, and it only resets the CPU and not any peripherals.
24 #
25
26 proc ocd_process_reset_inner { MODE } {
27
28         soft_reset_halt
29
30         # Initialize MSP, PSP, and PC from vector table at flash 0x01000800
31         set boot [read_memory 0x01000800 32 2]
32
33         reg msp [lindex $boot 0]
34         reg psp [lindex $boot 0]
35         reg pc [lindex $boot 1]
36
37         if { 0 == [string compare $MODE run ] } {
38                 resume
39         }
40
41         cc32xx.cpu invoke-event reset-end
42 }