Operační systémy mikrokontrolérů - Micro-Controller Operating Systems
![]() | Tento článek může vyžadovat vyčištění setkat se s Wikipedií standardy kvality. Specifický problém je: tento článek se nečte jako dobrý článek v encyklopedii.Únor 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Vývojář | Micrium, Inc., Silicon Labs |
---|---|
Napsáno | ANSI C. |
Rodina OS | Operační systémy v reálném čase |
Pracovní stav | Aktuální |
Zdrojový model | Otevřený zdroj Licence Apache (od roku 2020) |
První vydání | 1991 |
Poslední vydání | OS-III / 2016 |
Úložiště | github |
Marketingový cíl | Integrovaná zařízení |
K dispozici v | Angličtina |
Platformy | ARM Cortex-M3, Cortex-M4F, ARM7TDMI; Atmel AVR; eSi-RISC, a mnoho dalších. |
Jádro typ | Microkernel |
Výchozí uživatelské rozhraní | μC /GUI |
Licence | Otevřený zdroj od roku 2020. Dříve Komerční, freeware využití ve vzdělávání. |
Oficiální webové stránky | www |
Operační systémy mikrokontrolérů (MicroC / OS, stylizované jako μC / OS) je operační systém v reálném čase (RTOS) navrhl Jean J. Labrosse v roce 1991. Je založen na prioritách preventivní reálný čas jádro pro mikroprocesory, psané většinou v programovacím jazyce C. Je určen pro použití v vestavěné systémy.
MicroC / OS umožňuje definovat několik funkcí v jazyce C, z nichž každou lze spustit jako nezávislé vlákno nebo úlohu. Každý úkol běží s jinou prioritou a běží, jako by vlastnil centrální procesorová jednotka (PROCESOR). Úkoly s nižší prioritou mohou úkoly s vyšší prioritou předcházet kdykoli. Úkoly s vyšší prioritou používají ke splnění úkolů s nižší prioritou služby operačního systému (OS) (například zpoždění nebo událost). Služby OS jsou poskytovány pro správu úkolů a paměti, komunikaci mezi úkoly a načasování.[1]
Dějiny
Jádro MicroC / OS bylo původně publikováno v třídílném článku v časopise Embedded Systems Programming a v knize μC / OS Jádro v reálném čase Jean J. Labrosse (ISBN 0-87930-444-8). Autor zamýšlel nejprve jednoduše popsat vnitřní části a přenosný operační systém, který vyvinul pro vlastní potřebu, ale později vyvinul OS jako komerční produkt ve verzích II a III.
μC / OS-II
Na základě zdrojového kódu napsaného pro μC / OS a představeného jako komerční produkt v roce 1998 je μC / OS-II přenosný, ROM-schopný, škálovatelné, preventivní, v reálném čase, deterministický, multitasking jádro pro mikroprocesory, a procesory digitálního signálu (DSP). Spravuje až 255 aplikačních úkolů. Jeho velikost lze zvětšit (mezi 5 a 24 kB), aby obsahovala pouze funkce potřebné pro dané použití.
Většina μC / OS-II je napsána vysoce přenosně ANSI C. s napsaným specifickým kódem cílového mikroprocesoru montážní jazyk. Jeho použití je pro usnadnění minimalizováno portování jiným zpracovatelům.
Použití ve vestavěných systémech
μC / OS-II byl navržen pro vestavěné použití. Pokud má výrobce správný řetěz nástrojů (tj. Kompilátor C, assembler a linker-locator), lze μC / OS-II vložit jako součást produktu.
μC / OS-II se používá v mnoha vestavěných systémech, včetně:
- Avionika
- Lékařské vybavení a zařízení
- Zařízení pro datovou komunikaci
- Bílé zboží (spotřebiče )
- Mobilní telefony, osobní digitální asistenti (PDA), MID
- Průmyslové kontroly
- Spotřební elektronika
- Automobilový průmysl
Stavy úkolů
μC / OS-II je a multitasking operační systém. Každý úkol je nekonečnou smyčkou a může být v kterémkoli z následujících pěti stavů (viz obrázek níže navíc)
- Spící
- Připraven
- Běh
- Čekání (na událost)
- Přerušeno (přerušit servisní rutinu (ISR))
Dále může spravovat až 255 úkolů. Doporučuje se však, aby osm z těchto úkolů bylo rezervováno pro μC / OS-II, takže aplikaci zůstane až 247 úkolů.[2]
Jádra
The jádro je název daný programu, který provádí většinu úklidových úkolů pro operační systém. Zavaděč předává kontrolu jádru, které inicializuje různá zařízení do známého stavu a připravuje počítač na obecné operace.[3] Jádro je zodpovědné za správu úkolů (tj. Za správu času CPU) a komunikaci mezi úkoly.[4] Základní služba poskytovaná jádrem je přepínání kontextu.
The plánovač je část jádra odpovědná za určení, která úloha bude spuštěna jako další.[5] Většina jader v reálném čase je založena na prioritách. V jádře založeném na prioritách je řízení CPU vždy dáno úloze s nejvyšší prioritou připravené ke spuštění. Existují dva typy prioritních jader: nepreventivní a preventivní. Nonpreemptive jádra vyžadují, aby každý úkol udělal něco, aby se výslovně vzdal kontroly nad CPU.[5] Preemptivní jádro se používá, když je důležitější reakce systému. ΜC / OS-II a většina komerčních jader v reálném čase jsou tedy preventivní.[6] Úkol s nejvyšší prioritou připravený ke spuštění má vždy kontrolu nad CPU.
Zadávání úkolů
Úkolům s nejvyšší mírou provádění je přidělena nejvyšší priorita monotónní plánování rychlosti.[7] Tento plánovací algoritmus se používá v operačních systémech v reálném čase (RTOS) s a třída plánování statické priority.[8]
Správa úkolů
v výpočetní, úkol je jednotka provedení. V některých operační systémy, úkol je synonymem pro a proces, v ostatních s a vlákno. v dávkové zpracování počítačové systémy, úkol je jednotka provedení v rámci práce Uživatel systému μC / OS-II je schopen ovládat úkoly pomocí následujících funkcí:
- Funkce úkolu
- Vytvoření úkolu
- Zásobník úloh a kontrola zásobníku
- Smazání úkolu
- Změňte prioritu úkolu
- Pozastavte a pokračujte v úkolu
- Získejte informace o úkolu[9]
Správa paměti
Vyhnout se fragmentace μC / OS-II umožňuje aplikacím získat paměťové bloky pevné velikosti z a rozdělit vyrobený ze souvislé oblasti paměti. Všechny paměťové bloky mají stejnou velikost a oddíl obsahuje integrální počet bloků. Alokace a deallokace těchto paměťových bloků se provádí v konstantním čase a je a deterministický systém.[10]
Správa času
μC / OS-II vyžaduje, aby byl poskytnut zdroj periodického času pro sledování časových zpoždění a časových limitů. Klíště by se mělo objevit mezi 10 a 1 000krát za sekundu, nebo Hertz. Čím vyšší je rychlost tikání, tím více nad hlavou μC / OS-II ukládá systému. Frekvence hodinového ticku závisí na požadovaném rozlišení ticku aplikace. Klíště zdroje lze získat dedikováním hardwarového časovače nebo generováním přerušit z střídavý proud (AC) signál elektrického vedení (50 nebo 60 Hz). Tento zdroj periodického času se nazývá hodinový tick.[11]
Po tikot hodin je určeno, úkoly mohou být:
- Zpoždění úkolu
- Pokračujte ve zpožděné úloze
Komunikace mezi úkoly
Intertask nebo meziprocesová komunikace v μC / OS-II probíhá prostřednictvím: semafory, poštovní schránka zpráv, fronty zpráv, úkoly a přerušit servisní rutiny (ISR). Mohou spolu komunikovat, když úkol nebo ISR signalizuje úkol prostřednictvím objektu jádra, který se nazývá blok řízení událostí (ECB). Signál je považován za událost.
μC / OS-III
μC / OS-III je zkratka pro Micro-Controller Operating Systems verze 3, představená v roce 2009 a přidávající funkce k μC / OS-II RTOS.
μC / OS-III nabízí všechny funkce a funkce μC / OS-II. Největším rozdílem je počet podporovaných úkolů. μC / OS-II umožňuje pouze 1 úkol na každé z 255 úrovní priority, maximálně pro 255 úkolů. μC / OS-III umožňuje libovolný počet aplikačních úkolů, úrovní priorit a úkolů na úrovni, omezený pouze přístupem procesoru do paměti.[12][13]
μC / OS-II a μC / OS-III v současné době spravuje společnost Micrium, Inc., dceřiná společnost společnosti Silicon Labs, a lze je licencovat pro každý produkt nebo produktovou řadu.
Použití ve vestavěných systémech
Použití je stejné jako u μC / OS-II
Stavy úkolů
μC / OS-III je a multitasking operační systém. Každý úkol je nekonečnou smyčkou a může být v kterémkoli z pěti stavů (nečinný, připravený, spuštěný, přerušený nebo nevyřízený). Priority úkolů se mohou pohybovat od 0 (nejvyšší priorita) do maximálně 255 (nejnižší možná priorita).
Plánování každý s každým
Pokud mají dva nebo více úkolů stejnou prioritu, jádro umožňuje spuštění jednoho úkolu po předem stanovenou dobu s názvem a kvantová, a poté vybere jiný úkol. Tento proces se nazývá plánování každý s každým nebo krájení času. Jádro dává kontrolu nad dalším úkolem v řadě, pokud:
- Aktuální úkol nemá během svého časového úseku co dělat, nebo
- Aktuální úkol je dokončen před koncem jeho časového úseku, nebo
- Časový úsek končí.
Jádra
Funkce jádra pro μC / OS-III je stejná jako pro μC / OS-II.
Správa úkolů
Správa úloh také funguje stejně jako u μC / OS-II, μC / OS-III však podporuje multitasking a umožňuje aplikaci mít libovolný počet úkolů. Maximální počet úkolů je omezen pouze počtem Paměť (kód i datový prostor), které má procesor k dispozici.
Úkol lze implementovat pomocí spustit až do dokončení plánování, ve kterém se úloha po dokončení sama smaže, nebo typičtěji jako nekonečná smyčka, čekání na události a jejich zpracování.
Správa paměti
Správa paměti se provádí stejným způsobem jako v μC / OS-II.
Správa času
μC / OS-III nabízí stejné funkce pro správu jako μC / OS-II. Poskytuje také služby aplikacím, takže úlohy mohou pozastavit jejich provádění pro uživatelem definovaná časová zpoždění. Zpoždění jsou specifikována počtem budíků hodin nebo hodin, minut, sekund a milisekundy.
Komunikace mezi úkoly
Úkol nebo ISR někdy musí sdělit informace jinému úkolu, protože tomu tak je nebezpečný pro dva úkoly pro přístup ke stejným konkrétním datovým nebo hardwarovým prostředkům najednou. To lze vyřešit přenosem informací, který se nazývá komunikace mezi úkoly. Informace lze mezi úkoly komunikovat dvěma způsoby: prostřednictvím globálních dat nebo zasíláním zpráv.
Při použití globálních proměnných musí každý úkol nebo ISR zajistit, aby měl výhradní přístup k proměnným. Pokud je zapojen ISR, jediným způsobem, jak zajistit výhradní přístup k běžným proměnným, je zakázat přerušení. Pokud dva úkoly sdílejí data, každý může získat exkluzivní přístup k proměnným buď deaktivací přerušení, uzamčením plánovače, použitím semafor, nebo nejlépe pomocí a vzájemné vyloučení semafor. Zprávy lze odesílat buď na zprostředkující objekt zvaný a fronta zpráv, nebo přímo k úkolu, protože v μC / OS-III má každý úkol vlastní předdefinovanou frontu zpráv. Pokud má čekat na zprávy více úkolů, použijte externí frontu zpráv. Pokud přijatá data zpracuje pouze jedna úloha, odešlete zprávu přímo úkolu. Zatímco úkol čeká na doručení zprávy, nevyužívá žádný čas CPU.
Přístavy
Port zahrnuje tři aspekty: CPU, OS a kód specifický pro desku (BSP). μC / OS-II a μC / OS-III mají porty pro nejoblíbenější procesory a desky na trhu a jsou vhodné pro použití v kritické z hlediska bezpečnosti vestavěné systémy jako letectví, lékařské systémy a jaderná zařízení. Port μC / OS-III zahrnuje zápis nebo změnu obsahu tří souborů specifických pro jádro: OS_CPU.H
, OS_CPU_A.ASM
, a OS_CPU_C.C
. Je nutné zapsat nebo změnit obsah tří souborů specifických pro CPU: CPU.H
, CPU_A.ASM
, a CPU_C.C
. Nakonec vytvořte nebo změňte balíček podpory desky (BSP) pro použitou vyhodnocovací desku nebo cílovou desku. Port μC / OS-III je podobný portu μC / OS-II. Existuje podstatně více portů, než je zde uvedeno, a porty podléhají neustálému vývoji. Jak μC / OS-II, tak μC / OS-III jsou populárně podporovány SSL / TLS knihovny jako např wolfSSL, které zajišťují zabezpečení napříč všemi připojeními.
Změna licence
Po akvizici společností Silicon Labs se Micrium v roce 2020 změnilo na licenční model Open Source v únoru 2020. To zahrnuje uC / OS III, všechny předchozí verze, všechny komponenty (USB, souborový systém, GUI, TCP / IP atd.).
Dokumentace a podpora
Kromě typického fóra podpory je k dispozici řada dobře napsaných knih. Knihy jsou k dispozici ve formátu PDF zdarma nebo pro levný nákup jako pevné knihy. Řada knih je přizpůsobena konkrétní architektuře / vývojové platformě mikrokontroléru. Placená podpora je k dispozici od společnosti Micrium a dalších.
Reference
- ^ „NiosII GCC s MicroC / OS“. School of Electrical and Computer Engineering. Cornell University. Červen 2006. Citováno 25. dubna 2017.
- ^ Labrosse, Jean J. MicroC / OS-II: Jádro v reálném čase (Druhé vydání.). p. 77.
- ^ Wikiversity: Operační systémy / Modely jádra # Monolitické jádro
- ^ Labrosse, Jean J. MicroC / OS-II: Jádro v reálném čase (Druhé vydání.). p. 39.
- ^ A b Labrosse, Jean J. MicroC / OS-II: Jádro v reálném čase (Druhé vydání.). p. 40.
- ^ Labrosse, Jean J. MicroC / OS-II: Jádro v reálném čase (Druhé vydání.). p. 42.
- ^ Liu, Chung Lang; Layland, James W. (1973). "Plánování algoritmů pro multiprogramování v náročném prostředí v reálném čase". Deník ACM. 20 (1): 46–61. CiteSeerX 10.1.1.36.8216. doi:10.1145/321738.321743.
- ^ Bovet, Daniel. „Porozumění jádru Linuxu“. Archivovány od originál dne 2014-09-21.
- ^ Labrosse, Jean J. MicroC / OS-II: Jádro v reálném čase (Druhé vydání.). str. 45–49.
- ^ Labrosse, Jean J. MicroC / OS-II: Jádro v reálném čase (Druhé vydání.). str. 273–285.
- ^ Labrosse, Jean J. MicroC / OS-II: Jádro v reálném čase (Druhé vydání.). str. 145–152.
- ^ „Porovnání funkcí μC / OS-II a μC / OS-III“. Micrium.
- ^ „μC / OS-III - přehled“. Micrium.
Zdroje
- Podpora protokolu pro μC / OS-II od Fusion Embedded
- Ruční 1. vydání Micrium-uCOS-III-Users
- uC / OS-III: Jádro v reálném čase pro Renesas RX62N