Skip to content

Commit

Permalink
target/nrf52: Create and configure TPIU
Browse files Browse the repository at this point in the history
Firstly, create the TPIU nrf52.tpiu if using the nrf52 target. This is
standard, using AP 0 and TPIU base address 0xE0040000.
Secondly, add a pre_enable handler for this TPIU which configures the
TRACEMUX field of the TRACECONFIG register. This register is reset
every time the MCU resets, so the pre_enable handler creates a
reset-end handler to ensure the register remains set.

Change-Id: I408b20fc03dc2060c21bad0c21ed713eee55a113
Signed-off-by: Frank Plowman <[email protected]>
Reviewed-on: https://review.openocd.org/c/openocd/+/7901
Reviewed-by: Antonio Borneo <[email protected]>
Tested-by: jenkins
  • Loading branch information
frankplow authored and borneoa committed Oct 7, 2023
1 parent 9c7c5ca commit 1bc4182
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions tcl/target/nrf52.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#

source [find target/swj-dp.tcl]
source [find mem_helper.tcl]

if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
Expand Down Expand Up @@ -116,3 +117,51 @@ proc nrf52_recover {} {
}

add_help_text nrf52_recover "Mass erase and unlock nRF52 device"

tpiu create $_CHIPNAME.tpiu -dap $_CHIPNAME.dap -ap-num 0 -baseaddr 0xE0040000

lappend _telnet_autocomplete_skip _proc_pre_enable_$_CHIPNAME.tpiu
proc _proc_pre_enable_$_CHIPNAME.tpiu {_targetname _chipname} {
targets $_targetname

# Read FICR.INFO.PART
set PART [mrw 0x10000100]

switch $PART {
0x52840 -
0x52833 -
0x52832 {
if { [$_chipname.tpiu cget -protocol] eq "sync" } {
if { [$_chipname.tpiu cget -port-width] != 4 } {
echo "Error. Device only supports 4-bit sync traces."
return
}

# Set TRACECONFIG.TRACEMUX to enable synchronous trace
mmw 0x4000055C 0x00020000 0x00010000
$_targetname configure -event reset-end {
mmw 0x4000055C 0x00020000 0x00010000
}
} else {
# Set TRACECONFIG.TRACEMUX to enable SWO
mmw 0x4000055C 0x00010000 0x00020000
$_targetname configure -event reset-end {
mmw 0x4000055C 0x00010000 0x00020000
}
}
}
0x52820 -
0x52811 -
0x52810 -
0x52805 {
echo "Error: Device does not support TPIU"
return
}
default {
echo "Error: Unknown device"
return
}
}
}

$_CHIPNAME.tpiu configure -event pre-enable "_proc_pre_enable_$_CHIPNAME.tpiu $_TARGETNAME $_CHIPNAME"

0 comments on commit 1bc4182

Please sign in to comment.