Operační systémy
Vestavné systémy často nepotřebují plnohodnotný operační systém. Některé používají speciálně vytvořené malé a jednoduché operační systémy, které se spouštějí velmi rychle, jiné je nepotřebují vůbec. Vestavěné systémy se nepřizpůsobují tak snadno, ale jsou konstruovány tak, aby své úkoly plnily mnohem spolehlivěji. Protože jsou hardwarově jednodušší, jsou také často levnější na sestavení a pracují rychleji.
Na rozdíl od toho musí být univerzální počítač připraven na nové ovladače zařízení a software pro provoz hardwaru, o kterém ještě neví, jako jsou nové tiskárny nebo pevné disky. Potřebuje spouštět různé aplikační programy.
S tím, jak se vestavné systémy zvětšují, se věci, které se dříve používaly pouze v univerzálních počítačích nebo dokonce v mainframech, nyní běžně používají ve vestavných systémech. Patří sem chráněný paměťový prostor a otevřené programovací prostředí včetně Linuxu, NetBSD atd.
Některé příklady operačních systémů, od jednoduchých po složité:
- Jednoduchá řídicí smyčka - časovač a smyčka slouží k opakovanému volání různých podprogramů. U menších systémů ji často vytváří jeden člověk.
- řízené přerušením - úlohy jsou spouštěny různými druhy událostí. Událostí může být něco časově omezeného (například každých deset sekund) nebo stisknutí tlačítka či přijetí dat.
- nepreemptivní multitasking - každá úloha se dostane na řadu, a když skončí, zavolá plánovač v operačním systému, aby spustil další úlohu.
- preemptivní multitasking neboli vícevláknový - úlohu lze po určité době zastavit a nechat chvíli běžet jinou úlohu. Žádná úloha nemůže zahlcovat systém. Na této úrovni je systém považován za jádro "operačního systému" a může spouštět úlohy paralelně. Tento typ operačního systému se obvykle kupuje od společnosti, která se zabývá pouze vestavnými operačními systémy.
Operační systémy reálného času zahrnují produkty jako MicroC/OS-II, Green Hills INTEGRITY, QNX nebo VxWorks. Na rozdíl od systémů MacOS nebo Windows 7 tyto operační systémy většina lidí příliš nezná. Používají se však na mnoha místech, kde je čas a bezpečnost velmi důležitá. Lidé je používají každý den a ani si to neuvědomují.
Běžnými příklady větších jader jsou Embedded Linux a Windows CE. Přestože nemají tak přísné časové limity, jaké jsou potřeba pro přísný systém reálného času, jsou stále běžnější, zejména pro výkonnější zařízení, jako jsou bezdrátové směrovače a GPS. Umožňují opakované použití kódu ve veřejné doméně pro ovladače zařízení, webové servery, firewally a další kód. Vývojáři softwaru, kterým je bližší psaní aplikací pro osobní počítače, se s nimi také lépe seznámí. V případě potřeby lze použít FPGA nebo jiný speciální hardware pro věci, které potřebují přísné časové limity.
Nástroje
Stejně jako u jiného softwaru používají návrháři vestavných systémů k vývoji softwaru vestavných systémů překladače, assemblery a ladicí programy. Mohou však používat i některé specifičtější nástroje:
- U systémů využívajících digitální zpracování signálu mohou vývojáři použít matematické nástroje, jako je MATLAB, MathCad nebo Mathematica.
- Pro zlepšení optimalizace pro konkrétní hardware lze použít vlastní kompilátory a linkery.
- Vestavný systém může mít svůj vlastní speciální jazyk nebo návrhový nástroj nebo může přidat vylepšení ke stávajícímu jazyku, jako je jazyk používaný v Basicu Stamp.
Nástroje pro ladění:
- Debugger v obvodu (ICD), hardwarové zařízení, které se připojuje k mikroprocesoru prostřednictvím rozhraní JTAG. To spouští a zastavuje mikroprocesor zvenčí, zatímco běží software. Umožňuje také čtení paměti a registrů a ukládání softwarového programu do paměti.
- Externí ladění pomocí protokolování nebo výstupu sériového portu pro sledování provozu pomocí blikajícího monitoru (printfs).
- Interaktivní rezidentní ladění - pokud to operační systém podporuje, jedná se o shell na vestavěném procesoru, který spouští příkazy zadané vývojářem (například Linux).
- Obvodový emulátor nahrazuje mikroprocesor na desce a poskytuje plnou kontrolu nad vším, co mohl mikroprocesor dělat.
- Kompletní emulátor simuluje všechny funkce hardwaru a umožňuje jej ovládat a upravovat. Hardware ve skutečnosti neexistuje, ale jeho předstíraná verze ("virtuální" stroj) je na běžném počítači.
- Kontrola vnějších vedení pomocí logického analyzátoru nebo multimetru.
Pokud není omezeno externí ladění, může programátor obvykle prostřednictvím nástrojů načíst a spustit software, zobrazit kód běžící v procesoru a spustit nebo zastavit jeho činnost. Zobrazení kódu může být ve formě kódu assembleru nebo zdrojového kódu. Některé integrované systémy (například VxWorks nebo Green Hills) mají speciální funkce, jako je sledování toho, kolik místa software zabírá při svém běhu, jaké úlohy jsou spuštěny a kdy se co děje.
Způsob ladění závisí na tom, o jaký vestavný systém se jedná. Například ladění systému s jedním mikroprocesorem se liší od ladění systému, kde se zpracování provádí také na periferii (DSP, FPGA, koprocesor).