Linux w systemach embedded

Wstęp

Zastosowanie Linuxa w urządzeniach embedded jest i staje się coraz bardziej popularne. Przykładowo występuje on w urządzeniach IoT (pełniących role gateway), routerach, telewizorach, rejestratorach video oraz jądro Linuxa używa Android. Warto również wspomnieć o zastosowaniach w branży samochodowej, medycznej i różnych gałęziach przemysłu.

Dlaczego w tego typu urządzeniach używa się systemów operacyjnych? A nie na przykład oprogramowania typu bare-metal lub z wykorzystaniem systemu czasu rzeczywistego – RTOS? Po części jest to związane ze wzrostem mocy obliczeniowej procesorów. Zarówno tych stosowanych w komputerach klasy PC jak i w systemach wbudowanych. Urządzenia embedded często wykorzystują układy scalone które mają w sobie zintegrowany procesor, pamięć oraz całą gamę układów peryferyjnych tj. JTAG, regulatory zasilania, interfejsy komunikacyjne, przetworniki analogowe cyfrowe, timery itp. Są to układy typu SoC(System on Chip).

Linux posiada dobre wsparcie dla obsługi komunikacji sieciowej, Wi-FI, Bluetooth, USB, pamięci masowej oraz sterowników do urządzeń peryferyjnych. Przyspiesza to pracę w budowie urządzeń opartych o te elementy. Linux jest przesortowany, dostosowanych do różnego rodzaju architektur MIPS, x86 ARM – tak popularnej w świecie embedded.  Większość producentów układów SoC dostarcza przygotowaną dystrybucję linuxa, która zawiera obsługę peryferii danego układu. Dodatkowo dostarczają opisy jak samemu takie lub podobne modyfikacji wykonać.

Warto też wspomnieć, że linux jest open source. Dostęp do źródeł, modyfikacji,  umożliwia dopasowania systemu do konkretnego sprzętu (np pod dany SoC) oraz pod konkretne zastosowanie. W celu zwiększenia wydajności wycina się z systemu nieużywane funkcjonalności (np. nie zawsze konieczny jest interfejs graficzny – GUI). Dostęp do kodu źródłowego jądra linuxa nie jest uzależniony od dostawcy sprzętu. 

Niestety złożoność systemu, różnorodność konfiguracji, dostępnych narzędzi, paczek czy mnogość końcowych dystrybucji może wprowadzać w zakłopotanie i trudności w zrozumieniu działania. 

Linux a RTOS

Nie w każdych urządzeniu embedded linux będzie właściwym wyborem. W bardzo małych urządzenia, z małymi procesorami będzie to niemożliwe. W takich systemach wystarczy oprogramowania typu bare-metal (czyli firmware uruchomiony bez pośrednio na procesorze bez sytemu operacyjnego) lub użycie systemu czasu rzeczywistego RTOS(real-time operation system). Zastosowanie systemu operacyjnego Linux jest ograniczone w urządzenia mocno energooszczędnych czy z restrykcjami czasowymi wykonania danych funkcji.  W takim wypadku lepiej sprawdzi się RTOS.

Warto wspomnieć o różnicach pomiędzy system operacyjnym typu Linux a  RTOS. Podstawowa różnica to  przewidywalność i zachowanie reżimów czasowych. Scheduler (planista) w tym systemach przydziela czas procesora na innych zasadach. 

Linux ma Fair Scheduling 

  • Dba o to by każdy wątek dostał odrobinę czasu procesora
  • Czas procesora przydzielany i odbierany jest w niedeterministycznych chwilach czasu

RTOS

  • W danej chwili wykonuje się jedynie najważniejszy wątek

Linux embedded części składowe

Linux embedded składa się z czterech podstawowych elementów. Są to:

  • Toolchain – zawiera zestaw narzędzi (m.in kompilator, debuger) potrzebnych do tworzenia oprogramowania dla danego urządzenia (target divice). W głównej mierze zależny od architektury procesora.
  • Bootloader – program inicjalizujący wstępną konfigurację procesora i niezbędnych peryferii oraz ładuje i startuje kernel Linuksa
  • Kernel – serce, główna część systemu, zarządza zasobami systemowymi i dostępem do sprzętu
  • Root filesystem – zawiera programy i biblioteki, które są wykorzystywane po inicjalizacji jądra

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *