Linux w systemach embedded – rozmowa z Marcinem Bisem, wykładowcą i autorem książki o systemie Linux

Linux w systemach embedded – rozmowa z Marcinem Bisem, wykładowcą i autorem książki o systemie Linux

Marcin Bis (z prawej strony) z Linusem Torvaldsem

Rozmowa z Marcinem Bisem, programistą i szkoleniowcem prowadzącym kursy poświęcone aplikacjom Linuksa, który od 2007 roku zajmuje się zastosowaniami tego systemu operacyjnego w urządeniach embedded. Jest on także autorem pierwszej w języku polskim książki o zastosowaniach Linuksa w systemach embedded, która ukazała się nakładem Wydawnictwa BTC w roku 2011 (Linux w systemach embedded). Z programem autorskich szkoleń przygotowanych przez Marcina Bisa można się zapoznać na stronie bis-linux.com, są one dostępne w języku angielskim i polskim.

 

Konstruktorom i programistom zainteresowanym poznaniem możliwości Linuksa w praktycznych aplikacjach polecamy warsztaty przygotowane przez Marcina, które odbędą się w ramach corocznej imprezy Designing with Freescale, która odbędzie się w czerwcu 2013 w Warszawie.

Szczegółowe informacje o linuksowej sesji warsztatowej, przygotowanej na Designing with Freescale są dostępne tu.

 

 

 

uC: Jest Pan jednym z czołowych promotorów Linuksa w Polsce. Kiedy zainteresował się Pan tym systemem i co było impulsem do tego?

MB: Tak, staram się popularyzować Linuksa i Wolne Oprogramowanie. Występuję na konferencjach, odpowiadam na maile moich czytelników, doradzam moim klientom i prowadzę szkolenia. Zacząłem interesować się Wolnym Oprogramowaniem około roku 2000. Postanowiłem zainstalować dystrybucję Linuksa na komputerze PC, który wtedy posiadałem i zoptymalizować jej działanie (czyli skompilować część systemu samodzielnie, ze źródeł – w tym jądro). Po miesiącu ciągłego dostosowywania opcji, rekompilacji, zmian w kodzie – system wreszcie działał szybko, w miarę stabilnie i – co najważniejsze – obsługiwał wszystkie podzespoły mojego PC. W Linuksie spodobało mi się to, że można go samodzielnie modyfikować i nie jest się uzależnionym od jednego dostawcy oprogramowania. Wydało mi się to interesujące, mimo, że wtedy jeszcze nie znałem terminu vendor lock-in. Kilka lat później poznałem działanie jądra systemu, dostępnych w nim aplikacji oraz obsługę sieci na tyle, że zatrudniłem się jako administrator systemów Linux/UNIX. Pozwoliło mi to zgłębiać technologię na bazie prawdziwych wdrożeń i rzeczywistych potrzeb użytkowników. Nieco później doszedłem do wniosku, że oprócz budowania rozwiązań z gotowych elementów (konfiguracja), równie ciekawe jest budowanie własnych (programowanie w systemie i jądrze). Szczególnie w takich komputerach, których na pierwszy rzut oka nie widać… czyli systemach embedded. Współczesne dystrybucje Linuksa, zarówno te przeznaczone do komputerów PC, jak i te dla systemów wbudowanych, są zupełnie innymi produktami niż na początku XXI wieku. Linux ewoluował od stworzonego w 1992 przez Linusa Torvaldsa, hobbystycznego projektu, do dojrzałego systemu, którego z powodzeniem można użyć w urządzeniach przemysłowych.

 

uC: Jakie przewagi ma Linuks nad systemami komercyjnymi?

MB: Żaden inny system nie działa na tylu różnych platformach sprzętowych. Linux dostarcza to samo spójne i przemyślane środowisko pracy na klastrach obliczeniowych, komputerach PC i urządzeniach typu SoC. W dużych projektach, istotną zaletą jest na pewno dostępność wielu mechanizmów debugowania i profilowania systemu. A także możliwość specjalizacji i oddzielenia funkcji członków zespołu. Programista interfejsu użytkownika, czy rozwiązań sieciowych, nie musi specjalizować się w szczegółach architektury sprzętowej ani sterownikach urządzeń. Pozwala to lepiej zaplanować prace i znacznie skrócić time to market projektu. Indywidualnym programistom, praca z Linuksem daje niesamowitą satysfakcję uczestniczenia w największym współcześnie otwartym projekcie. Jednocześnie programy, sterowniki, skrypty i inne tworzone przez nich rzeczy będą działały nie „na mikrokontrolerze” (konkretnego producenta), ale „w Linuksie”, czyli wszędzie tam, gdzie ten system da się uruchomić. Aktualizacja hardware-u, czy nawet zmiana jego dostawcy staje się o wiele prostsza.

 

uC: Aktywnie uczestniczy Pan w życiu linuksowego świata i to nie tylko w Polsce. Jak Pan ocenia pozycję i perspektywy Linuksa na naszym rynku?

MB: Globalizacja sprawia, że nasz rynek nie odbiega znacznie od reszty świata. Obecnie w dziedzinie informatyki, elektroniki i w wielu innych pokrewnych, szeroko pojęta znajomość Linuksa jest równie istotna i konieczna, jak znajomość języka angielskiego. Ceny komponentów potrzebnych do osadzenia na nich Linuksa ciągle spadają. Równocześnie rosną możliwości mikroprocesorów. Pozwala to budować coraz bardziej skomplikowane i specjalistyczne urządzenia. W pewnym momencie użycie uniwersalnego systemu operacyjnego i gotowych, działających pod jego kontrolą programów, staje się prostsze niż integrowanie ich przy pomocy klasycznego RTOS-a.

 

uC: Prowadzi Pan szkolenia dla użytkowników Linuksa i programistów piszących aplikacje na ten system. Kto z nich najczęściej korzysta i na jakie problemy napotykają najczęściej?

MB: Szkoliłem już zarówno inżynierów z wielkich korporacji, jak i pracowników małych firm. Na przykład produkujących specjalistyczny sprzęt pomiarowy lub medycznych, zarówno w Polsce i za granicą. Moje szkolenia (bis-linux.com) skierowane są zarówno dla indywidualnych inżynierów i programistów, jak i dla firm, które chciałyby podnieść kwalifikacje zespołu. Przez praktyczne ćwiczenia, uczę całego zakresu zagadnień związanych z pracą z systemem. Od doboru narzędzi i dystrybucji, przez budowanie systemu, programowanie sterowników urządzeń w jądrze systemu Linux oraz dobre praktyki postępowania. Po zrozumieniu architektury wbudowanego Linuksa i opanowaniu narzędzi, uczestnicy: inżynier, czy programista, mogą skupić się nad kluczowymi dla nich elementami projektu linuksowego. Mają pewność, że reszta elementów po prostu działa lub mogą ją zbudować z gotowych elementów.

 

uC: W ramach działań promujących system Linux napisał Pan bardzo popularną książkę o tym systemie. Z czego wynika orientacja tej książki w kierunku systemów embedded?

MB: Uważam, że to bardzo perspektywiczny temat. Systemy embedded to w tej chwili główny segment rynku komputerów. Rozwój sprzętu, napędzany przez wielkich graczy – producentów tabletów i smartfonów, pozwala nam budować coraz bardziej skomplikowane urządzenia wbudowane coraz taniej, szybciej i lepiej. Równocześnie oprogramowanie systemów wbudowanych posiada specyficzny czar początków informatyki. Program ma bezpośrednią kontrolę nad sprzętem, może wchodzić w interakcję ze światem zewnętrznym. W komputerach PC, obudowanych coraz bardziej skomplikowanymi interfejsami, czynność tak prosta, jak podłączenie i sterowanie LED-em już dawno stała się bardzo skomplikowana.

 

uC: Dużą uwagę przykłada Pan do szeroko rozumianych systemów embedded. Czy Linux jest właściwym – jeśli tak, to dlaczego – wyborem dla platform tego typu?

MB: Nie jest to system odpowiedni dla każdego projektu. W wielu wystarczy i znakomicie sprawdzi się mniej lub bardziej skompilowany mikrokontroler z aplikacją działającą bezpośrednio w nim lub pod kontrolą jednego z dostępnych RTOS-ów (np. FreeRTOS, MQX). Klasyczny RTOS ułatwia weryfikację oprogramowania, udowodnienie jego poprawności (czyli zastosowania mission-critical) oraz czas reakcji (real-time). Linux natomiast, znakomicie sprawdzi się wszędzie tam, gdzie wymagania są większe: obsługa skomplikowanych protokołów sieciowych, sieci bezprzewodowych, multimediów, „bogatych” graficznych interfejsów użytkownika. Oczywiście za elastyczność, zapłacić trzeba zwiększonym zużyciem energii oraz zapotrzebowaniem na pamięć operacyjną i ROM. Największa zaleta Linuksa jest równocześnie jego największą wadą: Linux nie zależy od jednego producenta czy dostawcy. Wraz z systemem, dostępna jest ogromna ilość programów. Sprawia to, że dość duża jest bariera „wejścia”. Nie ma standardowego IDE, jednego zestawu narzędzi deweloperskich, czy nawet metody budowania systemu. Jest bardzo wiele możliwości, łatwo na początku zabrnąć w ślepy zaułek, czy popełnić błędy, które będą rzutowały na projekt w przyszłości. Jednocześnie ilość dostępnych opcji, narzędzi, programów może przerażać użytkownika, który chciałby zacząć pracę z systemem.

 

uC: Jakie architektury sprzętowe ocenia Pan jako perspektywiczne z punktu widzenia  Linuksa?

MB: Linux działa na wszystkich dostępnych w tej chwili na rynku architekturach (oczywiście tych, które są w stanie ten system udźwignąć). Producentom procesorów zależy na oferowaniu wsparcia dla Linuksa lub opartego na nim systemu Android. Zachęca to programistów i inżynierów do wyboru danej architektury. Ze względu na powszechność, wszechstronność zastosowań i dynamikę rozwoju, interesujące są architektury RISC-owe. Czyli wszechobecne procesory z rdzeniami ARM. Wiele moich projektów oscyluje wokół zagadnień sterowania, więc szczególnie interesujące są dla mnie systemy heterogeniczne. Procesor z rdzeniem ARM jest w nich zintegrowany albo z programowalną matrycą FPGA, albo z dedykowanym mikrokontrolerem. Pozwala to równocześnie uruchamiać system Linux oferujący bogate możliwości budowy GUI i komunikacji oraz dedykowany RTOS służący do sterowania w czasie rzeczywistym.

 

uC: Przygotował Pan specjalną sekcję szkoleniową na seminarium Designing with Freescale 2013, która w całości będzie poświęcona Linuksowi. Czego mogą się po niej spodziewać potencjalni uczestnicy?

MB: Moim celem jest przekazanie uczestnikom konkretnej wiedzy o architekturze wbudowanego systemu Linux. Sposobach budowania takiego systemu i dostrojenia całości do konkretnej specyfikacji. Zrobię to na przykładzie systemu sterowania urządzeniem przemysłowym działającym w czasie rzeczywistym. Równocześnie, od takiego urządzenia będziemy wymagać graficznego interfejsu użytkownika (QT), łączności za pośrednictwem sieci TCP/IP i wielu innych funkcji. Zademonstruję różne implementacje takiego systemu. Posłużę się system Linux uruchomionym na procesorach Freescale: i.MX53, i.MX6 i Vybrid oraz mikrokontrolerami: Cortex-M i Cortex-R. Przedstawię szczegóły implementacji aplikacji wielowątkowej. Metody pomiaru opóźnień i ich wyniki. A także różne sposoby modyfikacji Linuksa do pracy w aplikacjach przemysłowych czasu rzeczywistego.

Obiecuję porcję solidnej wiedzy technicznej. Zapraszam!

O autorze