aboutsummaryrefslogtreecommitdiff
path: root/tcl/target/ti_cc3220sf.cfg
blob: 74269aa66ca494f1d9756293b130009e4d3c6b33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#
# Texas Instruments CC3220SF - ARM Cortex-M4
#
# http://www.ti.com/CC3220SF
#

source [find target/swj-dp.tcl]
source [find target/icepick.cfg]
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

	# Initialize 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
}