Hi,
Is there a simple way to configure the TPIU trace clock for ETM trace capture pls? This is for a Cortex M33 and the traceclk will vary (depending on CPU clock and power saving) so we will need to configure the TPIU clock via DAP I guess?
Wasnt sure if this was something that ARM DS will support.
Thanks
Sarah
My name is Stephen and I work at Arm.The TPIU takes a clock TRACECLKIN, as set by the system designer. See:
https://developer.arm.com/documentation/dgi0012/d/Implementation/Timing--synthesis--and-placement/TPIU-TRACECLK-generation.
This clock is separate from, and asynchronous to, the CPU clock. So no further configuration is normally necessary. Is there a particular reason why you think the TPIU clock will vary depending on the CPU clock and power saving?
If you need to scale the Parallel trace port clock, you can use the TPIU Asynchronous Clock Prescaler Register (TPIU_ACPR). The Armv8-M Architecture Reference Manual says TPIU_ACPR sets the prescaler for the baud rate of the Serial Wire Output (SWO). SWO is not supported by Arm DS, but if TPIU_DEVID.CPPT=1, the prescaler also sets the ratio for the Parallel trace port clock.
See https://developer.arm.com/documentation/ddi0553/latest/
Hope this helps
Stephen
Thank you Stephen. I believe the TPIU that we use in our asic (which is part of the SSE-200 design) does not have the TPIU_ACPR register that you mention.
I am told by the SoC designer that there will be a divider to further configure TRACECLKIN for flexibility. So I will need to be able to set this divider from ARM-DS. How can I do this pls? There is nothing obvious to faciliate this in the GUI.
Hi againIs the divider intended to be configurable by software? If so, then it will need to present itself as a memory-mapped peripheral, containing register(s) that the user can read/write to. I guess just one 32-bit register would be sufficient. You'll need to decide on its address in the memory map. You'll then be able to access that address either from application software, or from the Debugger. In the Debugger, you can read/write the register at that address using the Memory view, or using the Debugger command-line with e.g.:memory set <address> 0 <value>You can also have it appear in the Registers view by creating a Target Configuration File (.tcf) for it using the Target Configuration Editor.If you need further help with this, I suggest you open a Support case using the Support > Arm Support Services links at the top of this page.Stephen
Thank you so much. This is all clear. The register wont be accessible from the CPU and can only be configured from the debugger. I think I will use the debugger commandline to configure register (as u suggest) by adding it to the ds file.