Přehled Azure RTOS ThreadX

Azure RTOS ThreadX je pokročilý operační systém pro Real-Time (RTOS) od Microsoftu. Je navržený speciálně pro hluboko vložené aplikace a aplikace IoT v reálném čase. Azure RTOS ThreadX poskytuje pokročilé plánování, komunikaci, synchronizaci, časovač, správu paměti a správu přerušení. Kromě toho má Azure RTOS ThreadX mnoho pokročilých funkcí: včetně jeho picokernel™ architektury, prahové hodnoty preempce™ plánování, řetězení událostí, profilace spouštění, metrik výkonu ™ trasování systémových událostí. V kombinaci s vynikající snadnou volbou je Azure RTOS ThreadX ideální volbou pro nejnáročnější vložené aplikace. Azure RTOS ThreadX má miliardy nasazení napříč širokou škálou produktů, včetně spotřebních zařízení, lékařské elektronické inteligence a průmyslových kontrolních zařízení.

Stopa threadX

Azure RTOS ThreadX má mimořádně malou 2kB instrukční oblast a 1 kB paměti RAM s minimálním nárokem na paměť. Tato malá velikost je do značné míry způsobená nevrstvou architekturou picokernel a automatickým škálováním. Automatické škálování znamená, že v konečném obrázku jsou v době propojení zahrnuty pouze služby (a podpůrná infrastruktura) používané aplikací.

Tady jsou některé typické Azure RTOS velikosti ThreadX.

Azure RTOS ThreadX Service Typická velikost v bajtech
Základní služby (vyžadovat) 2 000
Queue Services 900
Služby příznaku událostí 900
Semaforové služby 450
Mutex Services 1 200
Služby blokové paměti 550
Služby paměti pro byte 900

Rychlost provádění ThreadX

Azure RTOS ThreadX dosahuje u nejoblíbenějších procesorů přepínač kontextu v dílčí mikrosekundě a je celkově rychlejší než ostatní komerční RTOS. Kromě toho, že je rychlý, Azure RTOS ThreadX je také vysoce deterministický. Dosahuje stejného rychlého výkonu bez ohledu na to, jestli je připraveno 200 vláken, nebo jen jedno.

Tady jsou některé typické výkonové charakteristiky Azure RTOS ThreadX:

  • Rychlé spuštění: Azure RTOS se ThreadX spustí méně než 120 cyklů.

  • Volitelné odebrání základní kontroly chyb: Základní kontrola Azure RTOS chyb ThreadX se v době kompilace přeskočí. To může být užitečné, když je kód aplikace ověřený a už nevyžaduje kontrolu chyb u každého parametru. Kontrolu chyb je možné přeskočit v kompilační jednotce, nikoli v celém systému.

  • Návrh picokernel: Služby nejsou vzájemně vrstvené, takže se eliminuje zbytečné režijní náklady na volání funkce.

  • Optimalizované zpracování přerušení: Při vstupu/výstupu ISR se ukládají/obnovují pouze pomocné registry, pokud není nutné provést preempci.

  • Optimalizované zpracování rozhraní API:

    Azure RTOS ThreadX Service Doba služby v mikrosekundách*
    Pozastavení vlákna 0.6
    Obnovení vlákna 0.6
    Odeslání fronty 0.3
    Příjem fronty 0.3
    Získání semaforu 0.2
    Put Semaphore 0.2
    Přepnutí kontextu 0.4
    Odpověď na přerušení 0.0 – 0.6

    **

Pokročilá technologie

Azure RTOS plánování preemption-threshold je důležité vlákno ThreadX. Tato funkce je jedinečná pro Azure RTOS ThreadX a byla předmětem rozsáhlého akademického výzkumu. Další informace najdete ve knize Scheduling Fixed-Priority Tasks with Preemption Threshold( Plánování úkolů s preempční prahovou hodnotou), kterou pro vás 2. 2. 2015 –2018– 2018, kterou pro vás 20.

Klíčové funkce Azure RTOS ThreadX:

  • Kompletní a komplexní funkce multitaskingu
    • Vlákna, časovače aplikací, fronty zpráv, semafory počítání, mutexy, příznaky událostí, fondy paměti bloku a byte
  • Priority-Based preemptivního plánování
  • Priority Flexibility – až 1 024 úrovní priority
  • Plánování spolupráce
  • Preemption-Threshold – jedinečné pro Azure RTOS ThreadX pomáhá omezit kontextové přepínače a pomáhá zaručit schedulability (podle akademického výzkumu).
  • Ochrana paměti prostřednictvím Azure RTOS ThreadX MODULES
  • Plně deterministické
  • Trasování událostí – zachytávání posledních n událostí systému nebo aplikace
  • Zřetězování událostí – Registrace funkce zpětného volání "notify" specifické pro aplikaci Azure RTOS komunikace ThreadX nebo synchronizační objekt
  • Azure RTOS moduly ThreadX s volitelnou ochranou paměti
  • Run-Time metrik výkonu
    • Počet resumpcí vláken
    • Počet pozastavení vláken
    • Počet vyžádaných upozornění vláken
    • Počet přerušení asynchronního vlákna před vyprázdněním
    • Počet inverzí priority vlákna
    • Počet vyžádátek vláken
  • Sada profilu spuštění (EPK)
  • Samostatný zásobník přerušení
  • Run-Time analýzy zásobníku
  • Optimalizované zpracování přerušení časovače

Podpora vícejádrových jadek (AMP & SMP)

Standard Azure RTOS ThreadX se často používá v asymetrickém multiprocesingu (AMP), kde se na každém jádru spouští samostatná kopie Azure RTOS ThreadX a aplikace (nebo Linux) a vzájemně komunikují prostřednictvím sdílené paměti nebo komunikačního mechanismu mezi procesory, jako je OpenAMP (Azure RTOS ThreadX podporuje OpenAMP).

V prostředích, kde je načítání procesorů vysoce dynamické, je Azure RTOS ThreadX Symmetric Multiprocessing (SMP) k dispozici pro následující rodiny procesorů:

  • Arm – Cortex-Ax
  • Arm – Cortex-Rx
  • ARM Cortex-A5x 64 bitů
  • MIPS 34 K, 1004 K a interAptiv
  • PowerPC
  • Synopsys ARC HS
  • x86

Azure RTOS ThreadX SMP provádí dynamické vyrovnávání zatížení mezi n procesory. Umožňuje všechny Azure RTOS ThreadX (fronty, semafory, příznaky událostí, fondy paměti atd.). přístup k jakémukoli vláknu v jakémkoli jádru. Azure RTO ThreadX SMP umožňuje kompletní rozhraní Azure RTO ThreadX API na všech jádrech a zavádí následující nová rozhraní API platná pro operaci SMP:

  • UINT tx_thread_smp_core_exclude(TX_THREAD *thread_ptr, ULONG exclusion_map);
  • UINT tx_thread_smp_core_exclude_get(TX_THREAD *thread_ptr, ULONG *exclusion_map_ptr);
  • UINT tx_thread_smp_core_get(void);
  • UINT tx_timer_smp_core_exclude(TX_TIMER *timer_ptr, ULONG exclusion_map);
  • UINT tx_timer_smp_core_exclude_get(TX_TIMER *timer_ptr, ULONG *exclusion_map_ptr);

Ochrana paměti prostřednictvím modulů Azure RTO ThreadX

Doplněk s názvem moduly Azure RTO ThreadX umožňuje seskupit jedno nebo více aplikačních vláken do modulu, který se dá dynamicky načíst a spustit (nebo spustit na místě) na cíli.

Moduly povolují upgrade polí, opravy chyb a rozdělování programů, aby velké aplikace mohly zabírat jenom paměť potřebnou aktivními vlákny.

Moduly mají také oddělený adresní prostor z Azure RTO ThreadX sám. Díky tomu může Azure RTO ThreadX umístit ochranu paměti (přes MPU nebo MMU) kolem modulu, takže náhodný přístup mimo modul nebude moci poškodit žádnou jinou součást softwaru.

Kompatibilní s MISRA

Zdrojový kód RTO ThreadX a Azure RTO ThreadX SMP je MISRA-C: 2004 a MISRA C:2012 kompatibilní. MISRA C je sada pokynů pro programování pro důležité systémy pomocí programovacího jazyka C. Původní pokyny pro MISRA C byly primárně cílené na automobilové aplikace; MISRA C je však nyní široce rozpoznána jako platná pro jakoukoli kritickou aplikaci. Azure RTO ThreadX splňuje všechna povinná a povinná pravidla MISRA-C: 2004 a MISRA C:2012.

Certifikace Misra

Azure RTO ThreadX podporuje nejoblíbenější integrované vývojové nástroje, včetně aplikace IAR Embedded Workbench, která má taky nejkomplexnější přehled o jádru Azure RTO ThreadX. další integrace nástrojů zahrnuje GNU (GCC), ARM DS-5/uVision®, zelený Hills MULTI®, větrný Workbench, představivost Codescape, reneseas e2studio, Metaware SeeCode, NXP CodeWarrior, Lauterbach TRACE32®, čř Code-Composer Studio, CrossCore a všechna analogová zařízení.

Adaptační vrstva pro ThreadX

Můžete usnadnit problémy s migrací aplikací do Azure RTO pomocí vrstev ThreadX pro různé starší verze rozhraní API RTO (FREERTOS, POSIX, Osek atd.).