This is an automated email from Gerrit.

"Name of user not set <p...@frankplowman.com>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/7901

-- gerrit

commit a12529572df52265cb044d151a60c2eeae0ebab4
Author: Frank Plowman <p...@frankplowman.com>
Date:   Sun Sep 17 19:20:04 2023 +0100

    Create and configure TPIU for nRF52 MCUs
    
    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 <p...@frankplowman.com>

diff --git a/tcl/target/nrf52.cfg b/tcl/target/nrf52.cfg
index 2539be049d..562e3d53a7 100644
--- a/tcl/target/nrf52.cfg
+++ b/tcl/target/nrf52.cfg
@@ -5,6 +5,7 @@
 #
 
 source [find target/swj-dp.tcl]
+source [find mem_helper.tcl]
 
 if { [info exists CHIPNAME] } {
        set _CHIPNAME $CHIPNAME
@@ -116,3 +117,43 @@ 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]
+
+       if { $PART == 0x52840 || $PART == 0x52833 || $PART == 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 0x4000055C 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
+                       }
+               }
+
+       } elseif { $PART == 0x52820 || $PART == 0x52811 || $PART == 0x52810 || 
$PART == 0x52805 } {
+               echo "Error: Device does not support TPIU"
+               return
+       } else {
+               echo "Error: Unknown device"
+               return
+       }
+}
+
+$_CHIPNAME.tpiu configure -event pre-enable "_proc_pre_enable_$_CHIPNAME.tpiu 
$_TARGETNAME $_CHIPNAME"

-- 

Reply via email to