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.