Overzicht van Azure RTOS ThreadX

Azure RTOS ThreadX is het geavanceerde, industriële besturingssysteem Real-Time (RTOS) van Microsoft. Het is speciaal ontworpen voor diep ingesloten, realtime en IoT-toepassingen. Azure RTOS ThreadX biedt geavanceerde voorzieningen voor planning, communicatie, synchronisatie, timer, geheugenbeheer en interruptbeheer. Daarnaast heeft Azure RTOS ThreadX veel geavanceerde functies: waaronder de picokernel™ architectuur, drempelwaarde voor preventie™ planning, gebeurtenisketening, ™-uitvoeringsprofilering, metrische prestatiegegevens en tracering van systeemgebeurtenissen. In combinatie met het uitstekende gebruiksgemak is Azure RTOS ThreadX de ideale keuze voor de meest veeleisende ingesloten toepassingen. Azure RTOS ThreadX heeft miljarden implementaties in een breed scala aan producten, waaronder consumentenapparaten, medische elektronica en industriële controleapparatuur.

ThreadX-footprint

Azure RTOS ThreadX heeft een behoorlijk klein instructiegebied van 2 kB en een minimale footprint van 1 kB RAM. Deze kleine grootte wordt grotendeels veroorzaakt door de niet-gelaagde picokernel-architectuur en automatisch schalen. Automatisch schalen betekent dat alleen de services (en ondersteunende infrastructuur) die door de toepassing worden gebruikt, zijn opgenomen in de uiteindelijke afbeelding op het moment van de koppeling.

Hier volgen enkele typische kenmerken Azure RTOS ThreadX-grootte.

Azure RTOS ThreadX Service Typische grootte in bytes
Kernservices (vereisen) 2.000
Queue Services 900
Event Flag Services 900
Semafre Services 450
Mutex Services 1200
Geheugenservices blokkeren 550
Byte Memory Services 900

ThreadX-uitvoeringssnelheid

Azure RTOS ThreadX bereikt een contextschakelaar van minder dan een microseconde op de populairste processors en is over het algemeen sneller dan andere commerciële RTOS's. Naast een snelle manier is Azure RTOS ThreadX ook zeer deterministisch. Het bereikt dezelfde snelle prestaties, ongeacht of er 200 threads gereed of slechts één zijn.

Hier volgen enkele typische prestatiekenmerken van Azure RTOS ThreadX:

  • Snel opstarten: Azure RTOS ThreadX wordt opgestart in minder dan 120 cycli.

  • Optionele verwijdering van basisfoutcontrole: Standaardcontrole Azure RTOS ThreadX-fouten kan tijdens het compileren worden overgeslagen. Dit kan handig zijn wanneer de toepassingscode is geverifieerd en er geen foutcontrole meer nodig is voor elke parameter. Het overslaan van foutcontrole kan worden uitgevoerd op een compilatie-eenheid, in plaats van voor het hele systeem.

  • Picokernel-ontwerp: Services zijn niet gelaagd over elkaar, waardoor onnodige overhead voor functieaanroepen wordt voorkomen.

  • Geoptimaliseerde interruptverwerking: alleen scratchregisters worden opgeslagen/hersteld bij het in- of afsluiten van ISR, tenzij er een vereiste is.

  • Geoptimaliseerde API-verwerking:

    Azure RTOS ThreadX Service Servicetijd in microseconden*
    Thread Suspend 0,6
    Thread hervatten 0,6
    Wachtrij verzenden 0,3
    Wachtrij ontvangen 0,3
    Semafoor opsporing 0,2
    Semafoor zetten 0,2
    Contextsschakelaar 0,4
    Interruptreactie 0.0 – 0.6

    **

Geavanceerde technologie

Azure RTOS ThreadX is belangrijk voor de planning van de drempelwaarde voor preventie. Deze functie is uniek voor Azure RTOS ThreadX en is het onderwerp van uitgebreid academisch onderzoek. Meer informatie vindt u in het document Scheduling Fixed-Priority Tasks with Preemption Threshold (Planning van Fixed-Priority-takenmet drempelwaarde voor preventie) van Yun Wang (University) en Manas Saksena (University of Postsh).

Belangrijkste mogelijkheden van Azure RTOS ThreadX:

  • Volledige en uitgebreide multi-tasking-faciliteiten
    • Threads, timers voor toepassingen, berichtenwachtrijen, het tellen van semafoorten, mutexes, gebeurtenisvlaggen, blok- en bytegeheugengroepen
  • Priority-Based preventief plannen
  • Prioriteitsflexibiliteit : maximaal 1024 prioriteitsniveaus
  • Cooperative Scheduling
  • Preemption-Threshold: uniek voor Azure RTOS ThreadX, vermindert contextswitches en garandeert de garantie voor schedulability (per academische onderzoek)
  • Geheugenbeveiliging via Azure RTOS ThreadX MODULES
  • Volledig deterministisch
  • Gebeurtenis trace - vast te leggen laatste n systeem/toepassing gebeurtenissen
  • Event Chaining: registreer een toepassingsspecifieke callbackfunctie voor elke Azure RTOS ThreadX-communicatie of synchronisatieobject
  • Azure RTOS ThreadX-MODULES met optionele geheugenbeveiliging
  • Run-Time prestatiegegevens
    • Aantal threadhervattingen
    • Aantal thread-opsuspensingen
    • Aantal aangevraagde threadpremptons
    • Aantal asynchrone threadonderbreekingspremptons
    • Aantal inversies van threadprioriteit
    • Aantal thread-relinquishes
  • Execution Profile Kit (EPK)
  • Afzonderlijke interruptstack
  • Run-Time Stack-analyse
  • Geoptimaliseerde verwerking van timer-interrupts

Ondersteuning voor meerdere kernen (AMP & SMP)

Standard Azure RTOS ThreadX wordt vaak gebruikt op een Asymmetrische multiprocessing-manier (AMP), waarbij een afzonderlijke kopie van Azure RTOS ThreadX en de toepassing (of Linux) wordt uitgevoerd op elke kern en met elkaar communiceert via gedeeld geheugen of een communicatiemechanisme tussen processors, zoals OpenAMP (Azure RTOS ThreadX ondersteunt OpenAMP).

In omgevingen waarin het laden van processors zeer dynamisch is, Azure RTOS ThreadX Symmetric Multiprocessing (SMP) beschikbaar voor de volgende processorfamilies:

  • ARM-Cortex-Ax
  • ARM-Cortex-Rx
  • ARM Cortex-A5x 64-bits
  • MIPS 34 K, 1004 K en interAptiv
  • PowerPC
  • Synopsys ARC HS
  • x86

Azure RTOS ThreadX SMP voert dynamische taakverdeling uit over n processors. Hiermee kunnen alle threadx Azure RTOS s (wachtrijen, semafoorten, gebeurtenisvlaggen, geheugengroepen, enzovoort) worden gebruikt. om te worden gebruikt door elke thread in elke kern. Azure RTOS ThreadX SMP maakt de volledige threadx Azure RTOS-API op alle kernen mogelijk en introduceert de volgende nieuwe API's die van toepassing zijn op de SMP-bewerking:

  • 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);

Geheugenbeveiliging via Azure RTOS ThreadX-modules

Met een invoegtoepassingsproduct met de naam Azure RTOS ThreadX Modules kunnen een of meer toepassingsthreads worden gebundeld in een 'Module' die dynamisch kan worden geladen en uitgevoerd (of uitgevoerd) op het doel.

Modules maken veldupgrade, foutreparatie en het partitioneren van programma's mogelijk, zodat grote toepassingen alleen het geheugen in beslag kunnen nemen dat nodig is voor actieve threads.

Modules hebben ook een afzonderlijke adresruimte van Azure RTOS ThreadX zelf. Hierdoor kan Azure RTOS ThreadX geheugenbeveiliging (via MPU of MMU) rond de module plaatsen, zodat onbedoelde toegang buiten de module geen ander softwareonderdeel kan beschadigd raken.

MISRA-compatibel

Azure RTOS ThreadX en Azure RTOS ThreadX SMP-broncode is MISRA-C: 2004 en MISRA C:2012 compatibel. MISRA C is een set programmeerrichtlijnen voor kritieke systemen met behulp van de programmeertaal C. De oorspronkelijke MISRA C-richtlijnen waren voornamelijk gericht op auto-apps; MISRA C wordt nu echter algemeen herkend als van toepassing op elke toepassing die essentieel is voor de veiligheid. Azure RTOS ThreadX voldoet aan alle vereiste en verplichte regels van MISRA-C: 2004 en MISRA C:2012.

Misra-certificering

Azure RTOS ThreadX ondersteunt de meest populaire hulpprogramma's voor ingesloten ontwikkeling, waaronder Embedded Workbench van IAR, die ook beschikt over de meest uitgebreide kennis Azure RTOS ThreadX-kernel. Andere hulpprogramma-integraties zijn GNU (GCC), ARM DS-5/uVision®, GreenVision MULTI®, Wind River Workbench, Imagination Codescape, Metadatasas e2studio, Metaware SeeCode, NXP CodeWarrior, La metadata TRACE32®, TI Code-Composer Studio, CrossCore en alle analoge apparaten.

Aanpassingslaag voor ThreadX

U kunt problemen met de migratie van toepassingen Azure RTOS met behulp van ThreadX-adaptielagen voor verschillende verouderde RTOS-API's (FreeRTOS, POSIX, OSEK, enzovoort)