Přehled Azure RTOS TraceX
Azure RTOS TraceX je nástroj microsoftu pro analýzu založený na hostiteli, který vývojářům poskytuje grafické zobrazení systémových událostí v reálném čase a umožňuje jim vizualizovat a lépe porozumět chování systémů v reálném čase. Díky Azure RTOS TraceX vývojáři jasně vidí výskyt systémových událostí, jako jsou přerušení a kontextové přepínače, ke kterým dochází mimo zobrazení standardních ladicích nástrojů. Schopnost identifikovat a studovat tyto události a určit načasování jejich výskytu v kontextu operace celkového systému umožňuje vývojářům vyřešit problémy s programováním tím, že najde neočekávané chování a umožní jim prozkoumat konkrétní oblasti. Trasovací informace se ukládají do vyrovnávací paměti v cílovém systému s umístěním vyrovnávací paměti a velikostí určenou aplikací za běhu. Azure RTOS TraceX může správně zpracovat jakoukoli vytvořenou vyrovnávací paměť, nejen z Azure RTOS ThreadX, ale z libovolné aplikace nebo RTOS. Informace o trasování je možné kdykoli nahrát do hostitele k analýze – buď po vychytávce, nebo na zarážce. Azure RTOS ThreadX implementuje cyklickou vyrovnávací paměť, která umožňuje, aby nejnovější události "N" byly dostupné ke kontrole v případě selhání systému nebo jiné významné události.

Zobrazení Single-Core TraceX
Klíčové funkce
Azure RTOS předdefinování systémové analýzy TraceX
Azure RTOS TraceX nabízí integrované sestavy analýzy systému, které jsou dostupné jedním kliknutím na tlačítko na panelu nástrojů TraceX. Mezi tato tlačítka a sestavy patří:
Generování sestavy profilu spuštění
Generování sestavy statistik výkonu
Generování sestavy využití zásobníku vláken
Trasování dat shromažďovaných Azure RTOS ThreadX
Azure RTOS TraceX je navržený pro práci s Azure RTOS ThreadX, který sestaví databázi systémových a aplikačních "událostí" v cílovém systému za běhu. Mezi tyto události patří:
- přepínače kontextu vlákna
- preempce
- Pozastavení
- Koncovky
- přerušení systému
- události specifické pro aplikaci
- Všechna Azure RTOS volání rozhraní ThreadX API
- Všechna Azure RTOS volání rozhraní NetX API
- Všechna Azure RTOS volání rozhraní FileX API
- Všechna Azure RTOS volání rozhraní API USBX
- Ikony a informace definované aplikací
Události jsou protokolovány pod řízením programu s časovým razítkem a identifikací aktivního vlákna, aby je bylo možné zobrazit později ve správném časovém pořadí a přidruženy k příslušnému vláknu. Protokolování událostí může program aplikace dynamicky zastavit a restartovat, například při zobrazení oblasti zájmu. Zabráníte tak zanedbání databáze a využití cílové paměti při správném výkonu systému.
Azure RTOS TraceX je jako softwarový analyzátor logiky.
Po nahrání protokolu událostí z cílové paměti do hostitele zobrazí traceX události graficky na vodorovné ose, která představuje čas, s různými vlákny aplikací a systémovými rutinami, s uvedenými událostmi na svislé ose. Azure RTOS Azure RTOS TraceX vytvoří na hostiteli "analyzátor softwarové logiky", který jasně zviditelní systémové události. Události jsou reprezentovány barevnými ikonami umístěnými v místě výskytu na vodorovné časové ose napravo od příslušného vlákna nebo systémové rutiny. Když vyberete ikonu události, zobrazí se odpovídající informace pro tuto událost a také informace o dvou předchozích a dvou následných událostech. To poskytuje rychlý přístup jedním kliknutím k nejaky nejbližším informacím o události a jejích okamžitě obklopujících událostech. Azure RTOS TraceX poskytuje souhrnné zobrazení, které zobrazuje všechny systémové události na jedné vodorovné čáře, aby se zjednodušila analýza systémů s mnoha vlákny.
Režim sekvenčního zobrazení
Režim sekvenčního zobrazení vyberete kliknutím na kartu Sekvenční zobrazení. Toto je výchozí režim. V tomto režimu se události zobrazují hned za sebou – bez ohledu na uplynulý čas mezi nimi. Všimněte si také pravítka nad oblastí zobrazení. Zobrazuje relativní číslo události od začátku trasování. Tento režim je výchozím režimem a je zvlášť užitečný při získávání dobrého přehledu o tom, co se v systému děje.

Režim sekvenčního zobrazení
Režim zobrazení času
V tomto režimu se události zobrazují v relativním čase – s plným zeleným pruhem, který ukazuje provádění mezi událostmi. Tento režim je zvlášť užitečný, když chcete zjistit, kde v systému probíhá většina zpracování, což může vývojářům pomoct vyladit jejich systém tak, aby byl výkonnější nebo responzivní.
Všimněte si také pravítka nad zobrazením události. Toto pravítko zobrazuje relativní kmity od začátku trasování odvozené od časového razítka instrumentované v protokolování trasování událostí uvnitř Azure RTOS ThreadX. Pokud jsou časová razítka příliš blízko (časovač s nízkou frekvencí), události se spustí společně. Pokud jsou naopak časová razítka příliš vzdálená (časovač s vysokou frekvencí), budou události příliš od sebe vzdáleny. Výběr vlastního časového razítka frekvence je důležitým aspektem, aby bylo zobrazení relativního času smysluplné.

Řádek souhrnu systému
Azure RTOS TraceX také poskytuje jeden řádek souhrnu, který zahrnuje všechny události na stejném řádku. Řádek souhrnu obsahuje souhrn kontextu a odpovídající souhrn události. Díky tomu můžete snadno zobrazit přehled složitého systému. Panel souhrnu je zvlášť užitečný v systémech, které mají velký počet vláken. Bez takového souhrnného řádku by uživatel muset postupovat podle složitých systémových interakcí pomocí svislého posuvníku a sledovat kontext spuštění.
Azure RTOS TraceX vypíše kontexty systému na levé straně zobrazení. Události, ke kterým dochází v určitém kontextu, se zobrazují na vodorovné čáře napravo od tohoto kontextu. Tímto způsobem může uživatel snadno zjistit, ke kterému kontextu došlo k události, a sledovat tento kontextový řádek a zobrazit všechny události, ke kterým došlo v konkrétním kontextu.

Řádek souhrnu systému
První dvě kontextové položky jsou vždy kontexty Přerušení a Inicializovat/Nečinné. Kontext přerušení představuje všechny systémové události provedené rutinami služby přerušení (ISR). Kontext Initialize/Idle představuje dva kontexty v Azure RTOS ThreadX. Události, ke kterým tx_application_define během procesu, jsou události "Inicializovat" a zobrazují se v kontextu Inicializace/nečinnost. Pokud je systém nečinný a proto k žádným událostem ne dosáhnou, vykreslí se zelený pruh představující hodnotu Spuštěno v časovém zobrazení v kontextu Inicializace/Nečinnost.
Metody navigace
Azure RTOS TraceX umožňuje vývojáři určit, jak fungují navigační tlačítka Další a Předchozí.

Pokud je vybraná možnost Událost, navigace se provádí při další nebo předchozí události. Pokud je vybraná možnost Kontext, navigace se provádí u další/předchozí události ve stejném kontextu. Pokud je vybrána možnost Objekt, navigace se provádí při další nebo předchozí události aktuálního objektu, například u událostí přidružených ke konkrétní frontě. Pokud je vybraná možnost Přepínače, navigace se provádí při dalším nebo předchozím přepnutí kontextu. Pokud je vybráno "Stejné ID", navigace se provádí při další nebo předchozí události pro stejné ID události.
Zobrazení informací o události
Azure RTOS TraceX poskytuje podrobné informace o některých 300 událostech. Patří mezi ně šest interních událostí Azure RTOS ThreadX, dvě události ISR (vstup a ukončení), 14 interních událostí Azure RTOS FileX, 42 interních událostí Azure RTOS NetX a jedna uživatelem definovaná událost. Zbývající události odpovídají přímo službám Azure RTOS ThreadX, Azure RTOS FileX a Azure RTOS NetX API. Bez ohledu na to, jestli je vybraný sekvenční režim nebo režim zobrazení času, se při nasouvání myší na libovolnou událost v oblasti zobrazení zobrazí podrobné informace o události v blízkosti události. Ukazatel myši na událost 494 v ukázkovém souboru demo_threadx.trx je zobrazený tady:

Další informace se zobrazí po ukazateli myši.
Každá zobrazená událost obsahuje standardní informace o kontextu a relativním čase i časovém razítku. Pole Context (Kontext) ukazuje kontext, ve které k události došlo. Existují přesně čtyři kontexty: vlákno, nečinnost, ISR a inicializace. Když dojde k události v kontextu vlákna, název vlákna a jeho priorita v tomto okamžiku se shromáždí a zobrazí, jak je znázorněno výše. Relativní čas zobrazuje relativní počet časovačů od začátku trasování. Nezpracované časové razítko zobrazuje nezpracovaný zdroj času události. Nakonec se zobrazí všechny informace specifické pro událost.
Přiblížení a oddálení
Ve výchozím nastavení Azure RTOS TraceX zobrazí události ve snadno zobrazitelné velikosti s mapováním 1:1 pixel:tick. Uživatel může zobrazení přiblížit nebo oddálit podle potřeby. Oddálení na 100 % je užitečné, když chcete vidět celé trasování v aktuálním zobrazení zobrazení. Přiblížení je užitečné v případech, kdy se události překrývají kvůli rozlišení zdroje časového razítka.

Oddálit zobrazení na 100 % nebo přiblížit podrobnosti
Při oddálení na 100 % – zobrazení celého trasování v rámci aktuální stránky zobrazení – je snadné zobrazit všechny kontextové spuštění zachycené v trasování a také obecné události, ke kterým dochází v těchto kontextech. Všimněte si, že se vlákna 1 a thread 2 spouští nejčastěji. Modré barvení pro jejich události také naznačuje, že tato vlákna dělají volání služby fronty (události fronty mají modrou barvu).
Obnovení do úplného zobrazení ikon je stejně snadné. Buď je možné tlačítko pro přiblížení vybrat opakovaně, nebo může být zadán nějaký faktor 100.
Rozdílové kmitání mezi událostmi
Určení počtu kmitání mezi různými událostmi v Azure RTOS TraceX je snadné – stačí kliknout na počáteční událost a přetáhnout myš na koncovou událost. Rozdílový počet kmitů mezi událostmi se zobrazí v pravém horním rohu zobrazení.

Rozdílové kmitání
Rozdílové intervaly ukazují, že mezi událostí 494 a událostí 496 uplynulo 5032 kmitání. Můžete to také vypočítat ručně tak, že se v každé události podíváme na relativní časová razítka a odečtete je, ale použití grafického uživatelského rozhraní je snadné a okamžité.
Priority inversions
Azure RTOS TraceX automaticky zobrazí inverze priority zjištěné v trasovacím souboru. Priority inversions are defined as conditions where a higher-priority thread is blocked trying to obtain a mutex that is currently owned by a lower-priority thread. Tato podmínka se používá jako deterministická, protože systém byl nastaven tak, aby takto operoval. Aby bylo možné informovat uživatele, Azure RTOS TraceX zobrazuje "deterministické" rozsahy inverze priority jako světlé barvy.
Azure RTOS TraceX také zobrazuje ne deterministické inverze priority. Tyto inverze priority se liší od "deterministické" inverze priority v tom smyslu, že jiné vlákno jiné úrovně priority se spouštěly uprostřed inverze "deterministické" priority, což zkrátí dobu v rámci inverze priority poněkud "ne deterministickou". Tento stav je často pro uživatele neznámý a může být velmi závažný. Aby uživatel mohl tuto podmínku upozornit, Azure RTOS TraceX zobrazí "ne deterministické" inverze priority jako jasnější barvu.

Deterministická a ne deterministická inverze priority
Profil spuštění
Azure RTOS TraceX poskytuje integrovanou sestavu profilu spuštění pro všechny kontexty spuštění v rámci aktuálně načteného trasovacího souboru.

Statistika výkonu
Azure RTOS TraceX obsahuje integrovanou sestavu statistik výkonu pro aktuálně načtený trasovací soubor.

Využití zásobníku vláken
Azure RTOS TraceX poskytuje integrovanou sestavu využití zásobníku pro všechna vlákna spuštěná v rámci aktuálně načteného trasovacího souboru.

Azure RTOS TraceX Azure RTOS statistiku výkonu aktuálně načteného trasovacího souboru FileX. Tyto informace se zobrazí pro celý systém – u všech otevřených objektů médií.

Azure RTOS statistik NetX
Azure RTOS TraceX také prezentuje statistiku výkonu NetX aktuálně načteného trasovacího souboru. Tyto informace se zobrazí pro celý systém.

Nezpracovaný výpis paměti trasování
Azure RTOS TraceX může vytvořit nezpracovaný trasovací soubor v textovém formátu a spustit Poznámkový blok, který ho zobrazí.

Mějte na paměti, že všechny uvedené hodnoty časování a velikosti jsou odhady a mohou se na vaší vývojové platformě lišit.