summaryrefslogtreecommitdiffstats
blob: 369137ed94574a472c2ea37ea88bac088eb181ab (plain) (blame)
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
41
42
43
44
45
# Analog Devices ADSP-SC58x (ARM Cortex-A5 plus one or two SHARC+ DSPs)

# evaluation boards by Analog Devices (and designs derived from them) use a non-standard 10-pin 0.05" ARM Cortex Debug Connector
# pin 9 (GND or GNDDetect) has been usurped with JTAG /TRST
# as a result, a standards-compliant debug pod will only force the processor's debug interface into reset, preventing usage
# so, a connector adapter must be employed on these boards to isolate or otherwise prevent /TRST from being asserted

transport select swd
source [find target/swj-dp.tcl]

if { [info exists CHIPNAME] } {
	set _CHIPNAME $CHIPNAME
} else {
	set _CHIPNAME ADSP-SC58x
}

if { [info exists ENDIAN] } {
	set _ENDIAN $ENDIAN
} else {
	set _ENDIAN little
}

if { [info exists CPUTAPID] } {
	set _CPUTAPID $CPUTAPID
} else {
	set _CPUTAPID 0x3BA02477
}

swj_newdap $_CHIPNAME cpu -expected-id $_CPUTAPID

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_a -endian $_ENDIAN -chain-position $_TARGETNAME

$_TARGETNAME configure -event examine-end {
   global _TARGETNAME
   sc58x_enabledebug $_TARGETNAME
}

proc sc58x_enabledebug {target} {
   # Enable debugging functionality by setting relevant bits in the TAPC_DBGCTL register
   # the "phys" option is critical; the OpenOCD Cortex-A target code prevents normal mww when the target is not halted
   # however, it is not possible to halt the target unless these register bits have been set
   $target mww phys 0x31131000 0xFFFF
}