Srovnání RTOS + Linux
V současnosti jsou využity různé techniky pro dosažení real-time OS v kombinaci s Linuxem. Základní techniky jsou:
- Aplikace patche na Linuxové jádro se sníží latence ve volání jádra a zároveň je garantovány omezené latence místo neomezených. Výhodou je možnost využití stejných aplikací bez změny zdrojového kódu. Tuto cestu využívá PREEMPT_RT patch.
- Na HW je spuštěno nano jádro, které pouze přesměrovává interrupty od HW k OS s vyšší prioritou a případně k dalšímu OS s nižší prioritou. Nad tímto jádrem jsou spuštěny dva OS jeden RT a jeden non RT, které mezi sebou mohou komunikovat a přímo využívat HW. Toto řešení využívá Xenomai.
- RTOS je spuštěn na HW a v rámci RTOS je spuštěn Linux jako jeden proces s nejnižší prioritou takže lze kdykoliv přerušit zpracování na Linuxu a zpracovávat RT procesy s vyšší prioritou. Lze mezi Linuxem a RTOS komunikovat a sdílet paměť. Tento přístup využívá RTLinux.
Linux PREEMPT_RT patch
- Pouze tak 95% hard real-time (snaží se aby Linux byl co nejvíc hard real-time).
- Lze použít pro libovolnou větev Linuxu.
- Fungují všechny programy, které fungují i na normálním Linuxu. Nemusí se dělat žádné úpravy tasku pro komunikaci s mikro jádrem.
- Upravuje jádro linuxu nikoliv extra micro kernel v kterém linux beží jako jeden task.
- Rychlejší odezva jádra.
- Fully preemptible kernel
- Odstranění neomezených latencí (viz. příklad férové R/W zámky [1]).
- Interrupty spouštěny jako vlákna lze jim měnit prioritu zpracování.
- Testováno na x86, ARM, a PowerPc.
- Více informací na RT wiki [2].
Xenomai
- Real-time subsystém využívá ADEOS [3]
- Systém Xenomai má větší prioritu než Linux
- Dva kernely Xenomai a Linux pod nimi nano jádro ADEOS
- Chyba v Xenomai kernelu nenaruší běh Linuxu
- Interrupty jsou nanojádrem podle priorit OS směřovány pokud OS s vyšší prioritou pošle dál tak interrupt je předán OS s nižší prioritou atd.
- Real-time framework pro Linux
- Podporuje běžné RTOS API
- Možnost migrace vláken mezi non-real-time Linuxem a real-time Xenomai
Wind River Linux
- Využívá yocto project [4] pro tvorbu vlastního systému založeného na Linuxu pro embedded zařízení.
- Firemní standart pro embedded Linux systém
- Není zdarma pouze live evaluation verze volně k stažení
RTLinux
- Využívá RTOS microjádro v kterém běží Linux jako samostatný proces jenž je plně přerušitelný.
- Snadné sdílení dat mezi RT a non RT systémem
- Možnost sdílet pamět mezi RT a non RT systémem
- Možnost načítání kernelových modulů jenž umožňují další služby a vrstvy abstrakce.
- Vypadá dle přesměrování na Wind River, že už není aktivní vývoj.
Reference
[1] http://www.linux.com/news/featured-blogs/200-libby-clark/710319-intro-to-real-time-linux-for-embedded-developers
[2] https://rt.wiki.kernel.org/index.php/Main_Page
[3] http://en.wikipedia.org/wiki/Adaptive_Domain_Environment_for_Operating_Systems
[4] https://www.yoctoproject.org/