Rynek urządzeń elektronicznych nie jest tak jednolity, jak rynek komputerów biurowych. Trudno sobie wyobrazić zastosowanie złożonego systemu operacyjnego w bardzo prostych urządzeniach przeznaczonych do jednego zadania. Coraz częściej spotyka się jednak skomplikowane systemy pozwalające na łączność z Internetem, przechowujące duże ilości danych, korzystające z dużych zewnętrznych pamięci i jednocześnie obsługiwane za pomocą rozbudowanych interfejsów graficznych.
W tym przypadku często okazuje się, że zastosowanie droższego, ale bardzo wydajnego mikroprocesora i budowanie aplikacji na bazie systemu operacyjnego może być bardzo atrakcyjną alternatywą. Zalet jest bardzo wiele: systemy operacyjne zawierają stosy różnych protokołów (Ethernet, Bluetooth, USB itp.), obsługują różne systemy plików oraz różne urządzenia peryferyjne.
Oprogramowanie to jest bardzo stabilne i przetestowane w najróżniejszych warunkach. Okaże się, że lepiej jest dokładnie poznać istniejące rozwiązanie i ewentualnie dopasować je do naszych potrzeb, niż pisać wszystko od początku. Liczba urządzeń, dla których istnieją sterowniki do Linuxa jest ogromna i stale wzrasta. Nawet jeśli producent nie zadbał o wsparcie dla tego systemu (co jest już rzadkością) to niemal na pewno istnieje grupa osób, które sterowniki napiszą dla własnych potrzeb.
W tym przypadku rozszerzenie funkcjonalności naszego urządzenia o np. komunikację Bluetooth, obsługę dźwięku, kamery czy myszki wymagać będzie tylko załadowania odpowiedniego sterownika oraz podłączenia urządzenia przez port USB, tak jak w zwykłym PC. Trzecią bardzo ważną, choć nie zawsze bezdyskusyjną zaletą będzie możliwość programowania w rożnych językach.
Małe specjalizowane systemy programowane są najczęściej w języku Ansi C. Programy dla systemu operacyjnego można pisać w każdym języku, dla którego powstał kompilator. Aplikacje dla urządzenia wbudowanego będą mogli pisać zarówno programiści Ansi C, C++, jak i Javy, Pythona czy PHP. Wybór będzie w małym stopniu zależał od możliwości technicznych platformy, a bardziej od cech i przeznaczenia samego języka.
Jednak system Linux ma również kilka wad. Pewne jest to, że nakład pracy, jaki trzeba zainwestować w poznanie jego technologii i struktury jest duży. W przypadku darmowych rozwiązań konieczne jest bardzo dokładne zapoznanie się z nim, gdyż nie można liczyć na wsparcie twórców. W standardowym procesie firma decydując się na dany mikroprocesor, kompilator, środowisko programistyczne, czy komercyjny system operacyjny płaci za pełny zestaw dość duże pieniądze.
W ramach tej umowy osoby używające zestawu narządzi mogą spodziewać się szybkiej i konkretnej pomocy w przypadku napotkania trudności. Można wtedy także liczyć na wsparcie i szkolenia mające na celu wydajne wykorzystywanie nabytych narzędzi. W przypadku darmowego systemu nie ma takiej możliwości. Nawet, jeśli programista znajdzie ewidentny błąd w wykorzystywanej przez niego aplikacji, nie ma gwarancji, że ktokolwiek ją szybko zlokalizuje i naprawi. Należy być świadomym tego, że oferowany za darmo produkt jest dostarczany bez żadnej gwarancji i bez jakiegokolwiek wsparcia, co zresztą jest zapisane w warunkach licencyjnych.
Bardzo ważną sprawą na etapie poszukiwania darmowego rozwiązania jest zapoznanie się z dostępnymi licencjami. Darmowe oprogramowanie, nawet jeśli jest dostępne w sieci w postaci kodu źródłowego, nie zawsze może być zastosowane w dowolny sposób.
W gąszczu licencji
W 1985 roku, a więc jeszcze przed powstaniem Linuksa, założona została Fundacja Wolnego Oprogramowania (Free Software Fundation). Organizacja ta ma na celu promowanie i wspieranie rozwoju wolnego oprogramowania, a w szczególności koordynację i weryfikację nowych licencji. Podstawowe cechy wolnego oprogramowania opublikowane przez FSF to:
- wolność uruchamiania programu w dowolnym celu (wolność 0),
- wolność analizowania, jak program działa i dostosowywania go do swoich potrzeb (wolność 1),
- wolność rozpowszechniania niezmodyfi kowanej kopii programu (wolność 2),
- wolność udoskonalania programu i publicznego rozpowszechniania własnych ulepszeń, dzięki czemu może z nich skorzystać cała społeczność (wolność 3).
Są to cztery podstawowe cechy, jakie musi spełniać licencja, aby starać się o status Open Source.
Wybrane licencje open source
GNU General Public License (GPL) - jest najbardziej rozpowszechnioną licencją. Ponad 70% kodu opublikowanego na Source Forge jest udostępnianych na licencji GPL. Większość licencji wolnego oprogramowania jest kompatybilna z GPL. Oznacza to, że kod napisany w oparciu o inne licencje może być dołączany do GPL, która ponadto nazywana jest często "licencją wirusową". Wynika to z faktu, że każdy projekt zawierający moduły na licencji GPL musi sam zostać opublikowany w ramach licencji z nią zgodnej. Dyskusyjną i nierozstrzygniętą dotąd sprawą jest prawo dynamicznego linkowania obcego oprogramowania z bibliotekami GPL.
The GNU Lesser General Public License (LGPL) - wcześniej rozwijana jako GNU Library General Public License. Przeznaczona jest głównie do bibliotek, choć używana często przez aplikacje składające się z wielu współpracujących modułów (np. OpenOffice). Jest kompromisem pomiędzy restrykcyjną licencją GPL, a bardziej liberalnymi licencjami, takimi jak BSD czy X11. Nakłada obowiązek upowszechniania i dostępności dla części plików składowych, podczas gdy część projektu może pozostać zamknięta. Dzięki temu pozwala na stworzenie projektu, w skład którego wchodzą moduły nie objęte licencją LGPL lub GPL.
BSD/X11 - Berkeley Software Distribution License powstała na Uniwersytecie Kalifornijskim w Berkley. Licencja jest bardzo liberalna i bardzo przyjazna do zastosowań w przemyśle. Pozwala na dowolne modyfikowanie i rozprowadzanie kodu, a nawet używanie kodu w produktach zamkniętych i nieudostępnianie go. Jedynym warunkiem, jaki musi spełnić produkt korzystający z oprogramowania BSD jest dołączenie do produktu informacji o autorach oryginalnego kodu oraz treści licencji.
Oryginalna licencja BSD wymagała dołączania dodatkowo tzw. klauzuli ogłoszeniowej (listy podziękowań dla autorów), jednak w obliczu nadmiernego rozrastania się tej części zrezygnowano z tego wymagania w zmodyfikowanej licencji BSD. Flagowymi produktami opartymi na tej licencji są systemy FreeBSD, NetBSD i OpenBSD. Aplikacje użytkownika oparte o BSD to np. Chrome firmy Google, OpenSSH lub PostgreSQL. Licencja X11 nakłada te same obowiązki i daje te same prawa, co zmodyfikowana licencja BSD (bez klauzuli ogłoszeniowej).
Domena publiczna (Public Domain) - istnieje niezależnie od licencji Fundacji Wolnego Oprogramowania, ale jest używana do określania praw (a właściwie ich braku) do oprogramowania. Włączenie efektów swojej pracy do domeny publicznej oznacza zrzeczenie się wszelkich praw do niej oraz zezwolenie na dowolne ich przetwarzanie i wykorzystywanie. Pojęcie domeny publicznej powstało równolegle z rozwojem patentów i praw autorskich dla określenia warunków, w jakich te one wygasają.
Darmowe systemy operacyjne
Lista darmowych systemów operacyjnych jest bardzo długa. Decydując się na jeden z nich powinno się w szczególności wziąć pod uwagę ograniczenia i obowiązki wynikające z licencji oraz ilość dostępnej dokumentacji. Przedstawiona lista zawiera krótkie opisy bardziej rozpowszechnionych systemów, poczynając od największych, które wymagają jednostki MMU, a kończąc na prostym systemie, który można uruchomić na mikroprocesorze ATtiny 2313.
OpenWrt
Bardzo intensywnie rozwijana dystrybucja działająca na bazie jądra Linuksa w wersji 3.10. Stworzona przez firmę Linksys i udostępniona za darmo na jej stronach internetowych (licencja GPL). Udostępnienie pełnego oprogramowania zwiększyło sprzedaż routerów firmy Linksys i pozwoliło na dowolne modyfikacje sprzętu. Dystrybucja ma także grupę zwolenników i użytkowników w Polsce (www.openwrt.org, polska strona www.openwrt.pl pozostaje bez aktualizacji od 2012 roku).
Na rodzimym rynku dostępna jest płyta Mmnet1002 oferowana przez firmę Propox. Produkt sprzedawany jest z wgranym systemem OpenWRT i umożliwia wygodne podłączenie dodatkowych urządzeń (wprowadzone porty IO). Pracę z systemem OpenWRT można też zacząć kupując bezprzewodowy router pozwalający na wgranie tego systemu. W tym przypadku konieczna jest jednak modyfikacja sprzętu i dolutowywanie wyprowadzeń. Obsługiwane architektury to: ARM9, MIPS, AVR32, PowerPC, MIPS64, x86 i i386.
µClinux
Jądro systemu Linux w formie znanej z komputerów PC, wykorzystujące mechanizmy pamięci wirtualnej i przez to wymagający jednostki MMU. System µClinux (licencja GPL) jest wersją Linuksa przystosowaną do pracy w systemach z prostszymi mikroprocesorami (np. ARM7). Powstał na bazie jądra w wersji 2.0 i dzięki dużej popularności zaczął rozwijać się równolegle z główną linią odmianą systemu. µClinux-dist jest pełnym pakietem oprogramowania zawierającym biblioteki, aplikacje i narzędzia. Obsługiwane architektury to: ARM7, ARM9, Freescale M68k, Renesas H8, Intel i960, Intel i386, MIPS, NEC V850E i PowerPC. www.uclinux.org
FreeRTOS
Free RTOS (licencja zmodyfikowana GPL) jest najbardziej rozwiniętym i najlepiej opisanym systemem pracującym na małych platformach, nawet 8-bitowych. Powstało wiele aplikacji na różne platformy i rozwiązania sprzętowe, które można pobrać ze strony projektu, często wraz z dokładnym opisem konfiguracji sprzętowej. Można polecić przykładową aplikację FreeRTOS stworzoną dla mikroprocesora ATMega32. 2 kB pamięci RAM dostępnej w tym mikroprocesorze pozwala na uruchomienie 10 zadań, co raczej nie umożliwi stworzenia bardzo wartościowego produktu, ale ułatwia szybkie zapoznanie się z możliwościami systemu.
Zmodyfikowana licencja GPL pozwala na zamknięcie tych części kodu, które jedynie korzystają z API FreeRTOS. Wszelkie zmiany wprowadzone do samego systemu muszą być udostępnione. Obsługiwane architektury to: ARM7, ARM9, AVR32, AVR Atmega, MSP430, PIC18, PIC24, PIC32, Freescale M68k, Renesas H8, Intel i960, Intel i386, MIPS, NEC V850E oraz PowerPC. www.freertos.org
AvrX
W porównaniu z poprzednimi systemami ciężko jest nazwać AvrX (licencja LGPL) systemem operacyjnym, jednak spełnia on jego podstawowe funkcje. Rdzeń systemu, napisany w asemblerze mikroprocesorów firmy Atmel, zajmuje w zależności od konfiguracji od 500 do 700 rozkazów. Po skompilowaniu pełnej wersji zajmuje 1,5 kB pamięci Flash i wymaga ok. 512 bajtów pamięci operacyjnej. Pozwala na uruchomienie ok. 10 równoległych zadań. Na stronie Larrego Barello - twórcy systemu - dostępny jest projekt robota, w którym wykorzystano mikroprocesor ATtiny 2313 z 2 kB pamięci Flash i 125 B pamięci RAM, pracujący w oparciu o system AvrX. Obsługiwane architektury procesorów: AVR Atmega i ATtiny.
Wnioski
Pojawienie się wolnego oprogramowania było wielkim przełomem. W momencie, kiedy bogate korporacje prześcigały się w tworzeniu nowych funkcji i coraz bardziej finezyjnych gadżetów duża rzesza użytkowników komputerów zapragnęła tanich narzędzi, zapewniających podstawowe funkcje użytkowe. Takie oczekiwania zaspokaja najczęściej wolne oprogramowanie.
Procesy, które zachodzą na rynku oprogramowania użytkowego pokazują, że otwarty kod nie zastąpi całkowicie produktów płatnych. Specjalizowane systemy, takie jak Altium Designer (projektowanie płytek PCB), Catia (projekty mechaniczne), czy Autocad (projekty architektoniczne) nie znikną z rynku i nie zostaną zastąpione przez produkty darmowe. Jednak możliwe jest, że wolne oprogramowanie wymusi na producentach systemów komercyjnych większe starania na zaspokajanie potrzeb rynku i większej specjalizacji oferowanych pakietów.
Bartłomiej Grześkowiak
GPL jest nazywana "licencją wirusową", gdyż każdy projekt zawierający moduły na licencji GPL musi sam zostać opublikowany w ramach licencji z nią zgodnej.