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