Segger SystemView

Panoramica

SystemView è uno strumento di testing embedded progettato per analizzare e profilare il comportamento dei sistemi real-time. Offre approfondimenti dettagliati sul comportamento a runtime, superando le capacità dei debugger tradizionali. Ideale per sistemi complessi con thread multipli e interrupt, SystemView aiuta gli sviluppatori di software embedded a garantire che i propri sistemi funzionino come previsto, identificando inefficienze e scoprendo interazioni involontarie o conflitti di risorse.

Registrando i dati di monitoraggio dal sistema embedded tramite l’interfaccia di debug, SystemView visualizza in dettaglio task, interrupt ed esecuzione dei timer software, documentandone frequenza, ordine e tempi di esecuzione. La registrazione può essere salvata in un file per analisi successive o per la documentazione del sistema.


Caratteristiche principali

SystemView offre funzionalità potenti con un’intrusività minima. È compatibile con qualsiasi CPU, RTOS o sistema bare-metal, garantendo elevata flessibilità per diversi progetti.

  • Supporto Multicore: Consente la registrazione e l’analisi sincronizzata per sistemi con più core CPU su un singolo microcontrollore, fornendo una visione unificata delle interazioni complesse.
  • Registrazione continua: Cattura task, interrupt, timer, risorse, chiamate API ed eventi utente in tempo reale con un impatto minimo sulle prestazioni.
  • Campionamento dati: Permette di registrare ed elaborare un numero illimitato di sorgenti di campionamento per la generazione di grafici, visualizzandoli in tempo reale durante l’esecuzione del sistema.

Casi d’uso

  • Analisi di sistemi complessi: Rivela relazioni intricate e potenziali conflitti tra thread ed eventi che non sono visibili con i metodi di debug convenzionali.
  • Verifica del comportamento: Fornisce una timeline dettagliata degli eventi (task, API, interrupt) per assicurarsi che ogni parte del sistema funzioni secondo il design originale.
  • Ottimizzazione delle risorse: Evidenzia carichi eccessivi della CPU o una distribuzione inefficiente dei task, fornendo dati azionabili per migliorare la reattività del sistema.

Come funziona SystemView

SystemView integra un piccolo modulo software (contenente SystemView e RTT) nel sistema target. Questo modulo raccoglie i dati degli eventi, li formatta e li passa al modulo RTT, che li memorizza in un buffer locale.

  • Efficienza: Richiede meno di 2 KB di ROM e circa 600 byte di RAM.
  • Overhead minimo: L’impatto sul sistema è inferiore all’1% (su un sistema a 200 MHz con 10.000 eventi al secondo).
  • Precisione: I timestamp sono configurabili fino al singolo ciclo di CPU (5 ns su una CPU a 200 MHz).
  • Integrazione: L’aggiunta al progetto richiede pochi minuti e spesso solo un paio di righe di codice per interrupt.

Funzionalità aggiuntive

  • Monitoraggio Heap: Traccia le allocazioni di memoria in tempo reale per identificare perdite (leak) e inefficienze.
  • Finestra DataPlot: Visualizza variabili e dati dei sensori in tempo reale accanto agli eventi registrati, come un oscilloscopio sincronizzato.
  • Analisi carico CPU: Identifica i colli di bottiglia per bilanciare i carichi di lavoro.
  • Timeline degli eventi: Traccia cronologicamente i cambi di contesto (task switch) e l’attività degli interrupt.
  • Output di Log: Messaggi simili a printf() visualizzati nella Terminal Window, con formattazione differita per risparmiare risorse sul target.

Supporto RTOS

SystemView è pronto all’uso con i principali sistemi operativi real-time:

  • embOS: Supportato nativamente dalla versione 4.12a.
  • FreeRTOS: Supportato nativamente dalla versione V11 (compatibile con V8, V9, V10).
  • ThreadX / Zephyr / NuttX: Integrato nativamente o tramite driver RTT.
  • uC/OS-II / III e Micrium OS: Integrazione nativa disponibile.

Requisiti di sistema e Licenze

  • Sistemi Operativi: Windows (x64/Arm), macOS (Apple Silicon/Intel), Linux.
  • Hardware: CPU 2GHz, 4GB RAM, 2GB spazio su disco.
  • Licenze: Disponibile sotto SEGGER Friendly License (uso non commerciale gratuito) o licenza commerciale. Le licenze sono perpetue: nessun abbonamento annuale richiesto.