Skip to content

Traxcope 2.2.0 — Live Watch, data loss shown as loss, Xilinx Zynq

Latest

Choose a tag to compare

@Embedya Embedya released this 02 Nov 08:12

Bundles TraxProbe SDK 2.2.0. Update the SDK together with Traxcope: the protocol number stays 3.2, but some frames changed (kernel calls made from an interrupt carry a flag, the ring watermark report, the resync command), so rebuild your firmware with SDK 2.2.0 when you install Traxcope 2.2.0. Items marked (SDK) need the new SDK.

Upgrading from SDK 2.1.0

Three settings changed. Each stops the build with an #error that names the fix:

SDK 2.1.0 SDK 2.2.0
TRAX_CFG_TRANSPORT_TX_FREE (custom transports) Define size_t trax_transport_tx_free(void) in your transport; return SIZE_MAX if the link cannot tell
TRAX_CFG_ZYNQ_OWN_IRQ_NESTING (Zynq) Remove it, and any trax_zynq_irq_enter() / exit() calls
TRAX_CFG_SYNC_PERIOD_MS below 1000 1000 ms or more

On bare metal, interrupts are traced again (see Fixed), so a fast interrupt now uses link bandwidth it did not before.

Added

  • Live Watch. Firmware globals and statics by name, read live from the target while streaming: structs, arrays, enums and bit-fields, typed from the ELF's debug information. Double-click a scalar to change it in the running firmware, with no rebuild or reflash. Standard and Professional. (SDK)
  • TraxAI tunes a running firmware. New tools find a control loop's variables in the ELF, read and write them (each write is confirmed), and measure step responses: overshoot, rise and settling time, steady-state error, time at the drive's limits. Ask "tune the speed loop: overshoot below 5 %, settling below 300 ms".
  • Data loss is shown as loss. Every gap carries its cause (ring overflow, pause, trigger, link, kernel buffer) and how many events it lost. It is hatched in the Trace view, and zoomed out each pixel is shaded by how much of it was lost. The Scope's line breaks at a gap. Nothing is paired, measured, filtered or estimated across a gap, and TraxAI measures over the time actually observed and says what was lost. Gaps are saved with every chunk of a recording.
  • Link loss is detected. Frames lost between the probe and Traxcope are no longer stitched over: Traxcope drops them, asks the probe to resync, and shows a "link" gap. (SDK)
  • What fills the link. The Trace tab shows each trace group's and each stream's KB/s and share of the link, so you can see what to switch off. Groups a build cannot record are marked as such.
  • Xilinx Zynq-7000. Bare metal and FreeRTOS on the Cortex-A9, stamped by the core's own private timer, which nothing else can reset. The FreeRTOS kernel is traced inside a Vitis application, heap included. AMP: two images on one timeline, synced by an inter-core interrupt instead of a wire, with Linux on CPU 0 as the sync master. Fault capture routes the CPU's fault vectors at run time. New manual chapter. (SDK)
  • Linux. A TTY transport for boards without a network; thread priority changes; kernel trace-buffer loss shown as a gap; up to 64 rings, each using memory only once its thread writes; interrupts named when they first fire mid-session; threads that could not be traced are named. (SDK)
  • Ring buffer in external RAM (SDRAM, AXI SRAM, a TCM) or at a fixed address: TRAX_CFG_BUFFER_SECTION / TRAX_CFG_BUFFER_ADDR. (SDK)
  • Multi-probe sync pairs pulses by arrival and confirms each pairing on a second pulse; it no longer depends on which probe started first. The master never waits. (SDK)
  • Kernel calls from interrupts you do not trace are shown as "[ISR] (untraced)" in the Trace view, Comm Map and TraxAI, instead of being charged to the task the interrupt cut into. (SDK)
  • Priority changes show the new priority: "pri=80", "pri=5 (inherited)", "pri=1 (restored)".

Fixed

  • trax_timestamp_get_us() (SDK): with SysTick (or another tick timer) as the timebase, a read could return a value one tick in the past when the tick interrupt fired during it, so a delay measured with it could end a tick early (on an STM32G0, a 500–1500 µs wait ended after 47 µs a few times a second). Present since 2.0.
  • Bare metal (SDK): interrupts traced with TRAX_ISR_ENTER / TRAX_ISR_EXIT were dropped whenever Traxcope asked for "Interrupts + Main loop" (since 2.0), while the group showed as on.
  • Filters: Listen and TraxAI ignored a channel's filter, so a filter candidate sounded and measured like the unfiltered input.
  • Logs: %% printed as %%, and in %%u it used up an argument meant for a later specifier.
  • FreeRTOS session start (SDK): the task running when the session started was taken for Idle until it switched out.
  • Timestamps (SDK): under load, a session, gap or sync anchor could land one counter wrap early.
  • Streams: after a firmware change, an overflow gap could stop streaming with "is Stream but received async data".
  • Scope: samples inside a gap could blank the plot. Auto Scale and Lock Lane now act on the plot's selection.
  • Trace view: a synced probe's lanes stayed empty in review and its lane arrows jumped into empty stretches; review drew gaps that were not there; an open card area closed when you switched tabs; on bare metal a log written outside the main loop had no card.
  • Comm Map: an empty window crashed the layout. Links now attach on the sides that face each other and no longer loop under the map.
  • ST-LINK/V2 and V2-1: a probe left mid-read by a killed program now recovers without a replug.
  • Link loss: after lost bytes, a misread header could be decoded as samples.
  • STM32CubeIDE: an ESP32 file in the SDK broke CubeIDE builds.

Known issues

  • A log ID used at several call sites with different formats shows every line with one of those formats.
  • Linux: without perf permission the CPU lanes stay empty; the session now says why.

Downloads

File For
Traxcope-2.2.0-Setup.exe Windows 10/11, 64-bit (signed by Embedya)
traxcope_2.2.0_amd64.deb Ubuntu 22.04+ / Debian 12+
Traxcope-2.2.0-linux-x86_64.run Any x86_64 Linux with glibc 2.35 or newer (self-extracting installer)
Traxcope-2.2.0-linux-x86_64.tar.gz Portable Linux build

SHA-256 checksums are in SHA256SUMS-2.2.0.txt. To verify, run sha256sum -c SHA256SUMS-2.2.0.txt on Linux, or Get-FileHash <file> in PowerShell.