Operativsystemer til mikrokontroller - Micro-Controller Operating Systems
| Udvikler | Micrium, Inc., Silicon Labs |
|---|---|
| Skrevet i | ANSI C |
| OS-familie | Operativsystemer i realtid |
| Arbejdsstat | Nuværende |
| Kildemodel | Open Source , Apache-licens (fra 2020) |
| Første udgivelse | 1991 |
| Seneste udgivelse | OS-III / 2016 |
| Datalager | github |
| Markedsføringsmål | Indlejrede enheder |
| Tilgængelig i | engelsk |
| Platforme | ARM Cortex-M3 , Cortex-M4F , ARM7TDMI ; Atmel AVR ; eSi-RISC og mange andre. |
| kernel typen | Microkernel |
| Standard brugergrænseflade | μC / GUI |
| Licens | Open Source fra 2020. Tidligere brug af kommerciel , freeware- uddannelse. |
| Officiel hjemmeside | www |
Micro-Controller Operativsystemer ( MicroC / OS , stiliseret som μC / OS ) er et realtids-operativsystem (RTOS) designet af Jean J. Labrosse i 1991. Det er en prioritetsbaseret forebyggende realtidskerne til mikroprocessorer , skrevet for det meste i programmeringssproget C . Det er beregnet til brug i indlejrede systemer .
MicroC / OS gør det muligt at definere flere funktioner i C, som hver kan udføres som en uafhængig tråd eller opgave. Hver opgave kører med en anden prioritet og kører som om den ejer den centrale behandlingsenhed (CPU). Opgaver med lavere prioritet kan til enhver tid forebygges af opgaver med højere prioritet. Opgaver med højere prioritet bruger operativsystemtjenester (såsom en forsinkelse eller begivenhed) for at tillade opgaver med lavere prioritet at udføre. OS-tjenester leveres til styring af opgaver og hukommelse, kommunikation mellem opgaver og timing.
Historie
MicroC / OS-kernen blev oprindeligt udgivet i en tredelt artikel i Magasinet Embedded Systems Programming og bogen μC / OS The Real-Time Kernel af Jean J. Labrosse ( ISBN 0-87930-444-8 ). Forfatteren havde først til hensigt blot at beskrive internerne i et bærbart operativsystem, han havde udviklet til eget brug, men senere udviklede operativsystemet som et kommercielt produkt i version II og III.
μC / OS-II
Baseret på kildekoden skrevet til μC / OS og introduceret som et kommercielt produkt i 1998, er μC / OS-II en bærbar , ROM-kompatibel, skalerbar , forebyggende, deterministisk, multitasking- kerne i realtid til mikroprocessorer og digital signalprocessorer (DSP'er). Det administrerer op til 255 applikationsopgaver. Dens størrelse kan skaleres (mellem 5 og 24 Kbytes) til kun at indeholde de funktioner, der er nødvendige for en given anvendelse.
Det meste af μC / OS-II er skrevet i meget bærbar ANSI C med målmikroprocessorspecifik kode skrevet på samlingssprog . Brug af sidstnævnte minimeres for at lette portering til andre processorer.
Anvendelser i indlejrede systemer
μC / OS-II blev designet til indlejrede anvendelser. Hvis producenten har den rette værktøjskæde (dvs. C-kompilator, samler og linker-locator), kan μC / OS-II integreres som en del af et produkt.
μC / OS-II bruges i mange indlejrede systemer, herunder:
- Avionik
- Medicinsk udstyr og udstyr
- Datakommunikationsudstyr
- Hvidevarer ( apparater )
- Mobiltelefoner , personlige digitale assistenter (PDA'er), MID'er
- Industriel kontrol
- Forbrugerelektronik
- Automotive
Opgavestatus
μC / OS-II er et multitasking- operativsystem. Hver opgave er en uendelig løkke og kan være i en hvilken som helst af de følgende fem tilstande (se figur nedenfor yderligere)
- Slumrende
- Parat
- Løb
- Venter (på en begivenhed)
- Afbrudt ( interrupt service routine (ISR))
Desuden kan den klare op til 255 opgaver. Det anbefales dog, at otte af disse opgaver er forbeholdt μC / OS-II, hvilket giver en applikation op til 247 opgaver.
Kerner
Den kerne er betegnelsen for det program, der gør det meste af husholdning opgaver til operativsystemet. Boot loader overfører kontrol til kernen, som initialiserer de forskellige enheder til en kendt tilstand og gør computeren klar til generel drift. Kernen er ansvarlig for at styre opgaver (dvs. administrere CPU-tid) og kommunikere mellem opgaver. Den grundlæggende service, der leveres af kernen, er kontekstskift .
Den Planlæggeren er den del af kernen ansvarlig for at afgøre, hvilken opgave kører næste. De fleste realtidskerner er prioritetsbaserede. I en prioritetsbaseret kerne gives kontrol af CPU'en altid til den højeste prioritetsopgave, der er klar til at køre. Der findes to typer prioritetsbaserede kerner: ikke-forebyggende og forebyggende . Ikke-forebyggende kerner kræver, at hver opgave gør noget for eksplicit at opgive kontrol over CPU'en. En forebyggende kerne bruges, når systemets respons er vigtigere. Således er μC / OS-II og de fleste kommercielle realtidskerner præventive. Den højeste prioritetsopgave, der er klar til at køre, får altid kontrol over CPU'en.
Tildeling af opgaver
Opgaver med den højeste udførelseshastighed får den højeste prioritet ved hjælp af rate-monoton planlægning . Denne planlægningsalgoritme bruges i realtidsoperativsystemer (RTOS) med en planlægningsklasse for statisk prioritet .
Håndtering af opgaver
I computing er en opgave en udførelsesenhed . I nogle operativsystemer er en opgave synonymt med en proces , i andre med en tråd . I batchbehandlingscomputersystemer er en opgave en enhed til udførelse inden for et job . Systembrugeren af μC / OS-II er i stand til at kontrollere opgaverne ved hjælp af følgende funktioner:
- Opgavefunktion
- Opgaveoprettelse
- Opgavestak & kontrol af stak
- Sletning af opgave
- Skift en opgaves prioritet
- Suspendere og genoptage en opgave
- Få oplysninger om en opgave
Håndtering af hukommelse
For at undgå fragmentering giver μC / OS-II applikationer mulighed for at få hukommelsesblokke i fast størrelse fra en partition lavet af et sammenhængende hukommelsesområde. Alle hukommelsesblokke har samme størrelse, og partitionen indeholder et integreret antal blokke. Tildeling og deallokation af disse hukommelsesblokke sker i konstant tid og er et deterministisk system .
Styring af tid
μC / OS-II kræver, at der tilvejebringes en periodisk tidskilde for at holde styr på tidsforsinkelser og timeouts. Et kryds skal forekomme mellem 10 og 1000 gange i sekundet eller Hertz . Jo hurtigere krydsfrekvensen er, jo mere overhead μC / OS-II pålægger systemet. Frekvensen af uret kryds afhænger af den ønskede krydsopløsning for en applikation. Tick kilder kan opnås ved at dedikere en hardware-timer, eller ved at generere et interrupt fra en vekselstrøm (AC) power line (50 eller 60 Hz) signal. Denne periodiske tidskilde kaldes et ur-kryds.
Når et ur kryds er bestemt, kan opgaver være:
- Forsinkelse af en opgave
- Genoptag en forsinket opgave
Kommunikation mellem opgaver
Intertask eller interprocess-kommunikation i μC / OS-II sker via: semaforer , meddelelsespostkasse, meddelelseskøer, opgaver og afbrydelsesrutiner (ISR'er). De kan interagere med hinanden, når en opgave eller en ISR signalerer en opgave gennem et kerneobjekt kaldet en event control block (ECB). Signalet betragtes som en begivenhed.
μC / OS-III
μC / OS-III er forkortelsen for Micro-Controller Operating Systems Version 3, der blev introduceret i 2009 og tilføjede funktionalitet til μC / OS-II RTOS.
μC / OS-III tilbyder alle funktionerne og funktionerne i μC / OS-II. Den største forskel er antallet af understøttede opgaver. μC / OS-II tillader kun 1 opgave på hver af 255 prioritetsniveauer til maksimalt 255 opgaver. μC / OS-III tillader et vilkårligt antal applikationsopgaver, prioritetsniveauer og opgaver pr. niveau, kun begrænset af processoradgang til hukommelse.
μC / OS-II og μC / OS-III vedligeholdes i øjeblikket af Micrium, Inc., et datterselskab af Silicon Labs, og kan licenseres pr. produkt eller pr. produktlinje.
Anvendelser i indlejrede systemer
Anvendelserne er de samme som for μC / OS-II
Opgavestatus
μC / OS-III er et multitasking- operativsystem. Hver opgave er en uendelig løkke og kan være i en hvilken som helst af fem tilstande (sovende, klar, kørende, afbrudt eller afventende). Opgaveprioriteter kan variere fra 0 (højeste prioritet) til maksimalt 255 (lavest mulige prioritet).
Round robin planlægning
Når to eller flere opgaver har samme prioritet, tillader kernen, at en opgave kører i en forudbestemt tid, kaldet et kvante , og derefter vælger en anden opgave. Denne proces kaldes round robin planlægning eller tidsskæring. Kernen giver kontrol til den næste opgave i køen, hvis:
- Den aktuelle opgave har intet arbejde at gøre i løbet af sin tidsskive, eller
- Den aktuelle opgave afsluttes inden slutningen af dens tidsskive, eller
- Tidsskiven slutter.
Kerner
Kernefunktionaliteten for μC / OS-III er den samme som for μC / OS-II.
Håndtering af opgaver
Opgavestyring fungerer også det samme som for μC / OS-II, men μC / OS-III understøtter multitasking og tillader, at et program har et hvilket som helst antal opgaver. Det maksimale antal opgaver er kun begrænset af mængden af hukommelse (både kode og datarum), der er tilgængelig for processoren.
En opgave kan implementeres via køre til afslutningsplanlægning , hvor opgaven sletter sig selv, når den er færdig, eller mere typisk som en uendelig løkke , der venter på, at begivenheder skal forekomme og behandler disse begivenheder.
Håndtering af hukommelse
Hukommelsesstyring udføres på samme måde som i μC / OS-II.
Styring af tid
μC / OS-III tilbyder samme tidsadministration af funktioner som μC / OS-II. Det leverer også tjenester til applikationer, så opgaver kan suspendere deres udførelse på grund af brugerdefinerede tidsforsinkelser. Forsinkelser specificeres af et antal af enten kryds eller timer, minutter, sekunder og millisekunder .
Kommunikation mellem opgaver
Nogle gange skal en opgave eller ISR kommunikere information til en anden opgave, fordi det er usikkert for to opgaver at få adgang til de samme specifikke data- eller hardwareressourcer på én gang. Dette kan løses via en informationsoverførsel, betegnet inter-task-kommunikation. Oplysninger kan kommunikeres mellem opgaver på to måder: gennem globale data eller ved at sende meddelelser.
Når du bruger globale variabler, skal hver opgave eller ISR sikre, at den har eksklusiv adgang til variabler. Hvis en ISR er involveret, er den eneste måde at sikre eksklusiv adgang til almindelige variabler at deaktivere afbrydelser . Hvis to opgaver deler data, kan hver få eksklusiv adgang til variabler ved enten at deaktivere afbrydelser, låse planlæggeren, bruge en semafor eller fortrinsvis ved hjælp af en gensidig ekskluderingssemafor . Beskeder kan sendes til enten et mellemliggende objekt kaldet en meddelelseskø eller direkte til en opgave, da hver opgave i μC / OS-III har sin egen indbyggede meddelelseskø. Brug en ekstern beskedkø, hvis flere opgaver skal vente på beskeder. Send en besked direkte til en opgave, hvis kun en opgave behandler de modtagne data. Mens en opgave venter på, at en besked ankommer, bruger den ingen CPU-tid.
Porte
En port involverer tre aspekter: CPU, OS og kortspecifik (BSP) kode. μC / OS-II og μC / OS-III har porte til de mest populære processorer og kort på markedet og er velegnede til brug i sikkerhedskritiske indlejrede systemer såsom luftfart, medicinske systemer og nukleare installationer. En pC / OS-III port involverer skrive eller ændre indholdet af tre kerne-specifikke filer: OS_CPU.H, OS_CPU_A.ASM, og OS_CPU_C.C. Det er nødvendigt at skrive eller ændre indholdet af tre CPU bestemte filer: CPU.H, CPU_A.ASM, og CPU_C.C. Endelig opret eller skift en bestyrelsesstøttepakke (BSP) til det evalueringskort eller målkort, der bruges. En μC / OS-III-port svarer til en μC / OS-II-port. Der er betydeligt flere porte, end der er anført her, og porte er underlagt løbende udvikling. Både μC / OS-II og μC / OS-III understøttes af populære SSL / TLS- biblioteker såsom wolfSSL , som sikrer sikkerhed på tværs af alle forbindelser.
Licensændring
Efter købet af Silicon Labs er Micrium i 2020 skiftet til en Open Source licensmodel i februar 2020. Dette inkluderer uC / OS III, alle tidligere versioner, alle komponenter (USB, filsystem, GUI, TCP / IP osv.).
Dokumentation og support
Ud over et typisk supportforum er der et antal velskrevne bøger til rådighed. Bøger er tilgængelige som gratis PDF-filer eller til billige køb som bøger med hård omslag. Et antal bøger er hver skræddersyet til en bestemt mikrokontrollerarkitektur / udviklingsplatform. Betalt support er tilgængelig fra Micrium og andre.
Referencer
Kilder
- Protokolstøtte til μC / OS-II fra Fusion Embedded
- Micrium-uCOS-III-Brugere Manuel 1. udgave
- uC / OS-III: Realtidskernen til Renesas RX62N