Operační systémy mikrokontroléru - Micro-Controller Operating Systems
| Vývojář | Micrium, Inc., Silicon Labs |
|---|---|
| Napsáno | ANSI C. |
| Rodina OS | Operační systémy v reálném čase |
| Pracovní stav | Proud |
| Zdrojový model | Open Source , 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. |
| Typ jádra | Microkernel |
| Výchozí uživatelské rozhraní | μC / GUI |
| Licence | Otevřený zdroj od roku 2020. Dříve komerční , freewarové vzdělávání. |
| Oficiální webové stránky | www |
Micro-Controller Operating Systems ( MicroC / OS , stylized as μC / OS ) is a real-time operating system (RTOS) designed by Jean J. Labrosse in 1991. Je to prioritně založené preventivní jádro v reálném čase pro mikroprocesory , napsané většinou v programovacím jazyce C . Je určen pro použití ve vestavěných systémech .
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á úloha běží s jinou prioritou a běží, jako by vlastnila centrální procesorovou jednotku (CPU). Ú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í.
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 The Real-Time Kernel od Jean J. Labrosse ( ISBN 0-87930-444-8 ). Autor zamýšlel nejprve jednoduše popsat vnitřní části přenosného operačního systému, 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é, multitaskingové jádro pro mikroprocesory a digitální signálové procesory (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 ve vysoce přenosném ANSI C s kódem specifickým pro cílový mikroprocesor napsaným v montážním jazyce . Jeho použití je minimalizováno, aby se usnadnilo přenesení do jiných procesorů.
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ězec 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 přístroje
- 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 multitaskingový 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 ( rutina přerušení služby (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ů.
Jádra
Jádro je název programu, který dělá většina domácnosti ú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. Jádro je zodpovědné za správu úkolů (tj. Za správu času CPU) a komunikaci mezi úkoly. Základní službou poskytovanou jádrem je přepínání kontextu .
Plánovač je součástí jádra odpovědné za určení, které úloha běží dál. 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 jader založených na prioritách: nepreventivní a preemptivní . Nonpreemptive jádra vyžadují, aby každý úkol udělal něco, aby se výslovně vzdal kontroly nad CPU. 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í. Úkol s nejvyšší prioritou připravený ke spuštění má vždy kontrolu nad CPU.
Zadávání úkolů
Úkoly s nejvyšší rychlostí provádění mají nejvyšší prioritu pomocí monotónního plánování rychlosti . Tento plánovací algoritmus se používá v operačních systémech v reálném čase (RTOS) s třídou plánování se statickou prioritou .
Správa úkolů
Ve výpočetní technice je úkol jednotkou provedení . V některých operačních systémech je úkol synonymem pro proces , v jiných s vláknem . V počítačových systémech s dávkovým zpracováním je úkol jednotkou provádění v rámci úlohy . 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 úkolů a kontrola zásobníku
- Smazání úkolu
- Změňte prioritu úkolu
- Pozastavte a pokračujte v úkolu
- Získejte informace o úkolu
Správa paměti
Aby se zabránilo fragmentaci , μC / OS-II umožňuje aplikacím získat paměťové bloky pevné velikosti z oddílu vytvořeného z oblasti souvislé 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 to deterministický systém .
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 režijních μC / OS-II ukládá systému. Frekvence hodinového ticku závisí na požadovaném rozlišení ticku aplikace. Zdroje klíšťat lze získat dedikováním hardwarového časovače nebo generováním přerušení ze signálu elektrického vedení se střídavým proudem (AC) (50 nebo 60 Hz). Tento zdroj periodického času se nazývá hodinový tick.
Po určení zaškrtnutí hodin mohou být úkoly:
- 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: semaforů , poštovní schránky zpráv, front zpráv, úkolů a rutin služeb přerušení (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.
μ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 multitaskingový 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
Když mají dva nebo více úkolů stejnou prioritu, jádro umožňuje, aby jeden úkol běžel po předem stanovenou dobu, pojmenoval kvantum a poté vybral 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 množstvím paměti (kódové i datové) dostupné procesoru.
Úkol lze implementovat prostřednictvím plánování spuštění až do dokončení , ve kterém se úloha po dokončení sama odstraní, nebo častěji jako nekonečná smyčka , čekání na výskyt událostí a zpracování těchto událostí.
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 klíšťat hodin nebo hodin, minut, sekund a milisekund .
Komunikace mezi úkoly
Úkol nebo ISR někdy musí sdělit informace jinému úkolu, protože pro dva úkoly není bezpečné přistupovat 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ý způsob, 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 výhradní přístup k proměnným buď deaktivací přerušení, uzamčením plánovače, použitím semaforu , nebo nejlépe pomocí semaforu vzájemného vyloučení . Zprávy lze odesílat buď do zprostředkujícího objektu zvaného fronta zpráv , nebo přímo do úkolu, protože v μC / OS-III má každá úloha vlastní předdefinovanou frontu zpráv. Pokud má čekat na zprávy více úkolů, použijte frontu externích 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 nejpopulárnější procesory a desky na trhu a jsou vhodné pro použití v bezpečnostně důležitých vestavěných systémech, jako je letectví, lékařské systémy a jaderná zařízení. UC / OS-III portu zahrnuje psaní nebo změnou obsahu specifických souborů tři jádra: OS_CPU.H, OS_CPU_A.ASMa OS_CPU_C.C. Je třeba psát nebo měnit obsah konkrétních souborů tři CPU: CPU.H, CPU_A.ASMa 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. ΜC / OS-II i μC / OS-III jsou podporovány populárními knihovnami SSL / TLS, jako je 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. Placenou podporu poskytuje společnost Micrium a další.
Reference
Zdroje
- Podpora protokolu pro μC / OS-II od Fusion Embedded
- Manuální 1. vydání pro uživatele Micrium-uCOS-III
- uC / OS-III: Jádro v reálném čase pro Renesas RX62N