"Embedded system" i mikrokontrolery
1. "Embedded system" (System wewnętrzny ???)
"Embedded system" - "hardware" + "software" będące częścią większego systemu funkcjonującego przy bardzo małej
interakcji z człowiekiem (inaczej mówiąc: to komputer do kontrolowania jakiegoś sprzętu o określonej funkcjonalności).
Typowy "embedded system" składa się z jakiejś jednostki liczącej i jakiejś pamięci (np. ROM), na której jest zapisany program
(jakiś system operacyjny) uruchamiający się po włączeniu systemu i kończący pracę wraz z jego wyłączeniem.
Często jedyna interakcja użytkownika (operatora) z "embedded system" odbywa się właśnie
jedynie poprzez jego włączenie lub wyłączenie (bez jakiejkolwiek ingerencji w trakcie działania systemu).
Przykładem "embedded system" może być system zarządzający robotyką w fabryce, czy sprzętem medycznym w szpitalu
ale także "mikrokontroler" (mikroprocesor + jakaś pamięć + jednostka zarządzająca pamięcią + cache + porty wejścia/wyjścia)
w jakimś małym urządzeniu (PDA - Personal Digital Assistant, kamera, telefon itp.).
2. Dlaczego linux jest dobrym SO na "embedded system" ?
* Samo mikrojądro linuxa ma niewielkie wymagania sprzętowe. Potrzebuje ono bowiem
zaledwie około 100 KB pamięci do prawidłowego działania (zwłaszcza jest to atrakcyjne w przypadku małych mikrokontrolerów,
nie posiadających dużych pamięci).
* Znacznie szybciej powstaje oprogramowanie na różnoraki sprzęt (sterowniki na różne
urządzenia) pod linuxa niż pod konkurencyjne systemy na "embedded system".
* Modułowa budowa systemu, daje możliwość niewielkiej zajętości pamięci.
* Linux dzięki swojej skalowalności oferuje wsparcie dla architektur wieloprocesorowych
(to z kolei jest zaletą głównie w przypadku większych systemów np. oprogramowania dla firmy telekomunikacyjnej).
3. Cechy linuxa 2.6 wydatnie ułatwiające tworzenie oprogramowania na "embedded system":
* Bardzo ważne jest, by oprogramowanie na "embedded system" było oprogramowaniem typu "real-time" (tzn. by było w stanie reagować
(odpowiadać) w bardzo szybkim czasie (chodzi tu najczęściej o czas rzędu kilku mikro- lub mili- sekund)).
Linux nie jest oczywiście systemem typu "real-time" ale takie
rozwiązania jak: wywłaszczalne jądro, nowy szybszy scheduler czy lepsza synchronizacja procesów
(nowe "mutexy" - wywołanie systemowe następuje tylko wtedy, gdy trzeba wstrzymać proces; samo sprawdzenie dokonuje się
z przestrzeni użytkownika) bardzo linuxa do tego przybliżają.
* Linux 2.6 dostarcza lepszy, szybszy dostęp do pamięci dla architektur wieloprocesorowych
(zwany NUMA).
* "Embedded systems" często nie muszą posiadać żadnego interfejsu użytkownika, zatem wszelkie oprogramowanie przeznaczone
do tego celu jest tylko zbędnym zajmowaniem pamięci i spowalnia maszynę. Nowy linux posiada możliwość konfiguracji tak,
by całkowicie pominąć jakiekolwiek wyświetlanie i wszelkie standardowe urządzenia wejścia np. klawiaturę czy myszkę.
4. Mikrokontrolery
Jedną z najważniejszych zmian w jądrze linuxa 2.6 jest włączenie do głównego nurtu rozwoju tegoż jądra projektu:
uClinux (czyt. "you see linux"; nazwa wywodzi się od połączenia greckiej litery "mi" (jak "micro") z angielską "C" (jak "controller")).
Projekt uClinux to projekt zajmujący się wersją jądra linuxa na mikrokontrolery niewyposażone w jednostkę MMU -
Memory Management Unit.
Aby możliwa była obsługa mikrokontrolerów nieposiadających MMU, dołączono do jądra 2.6 plik o nazwie mm/nommu.c,
który zawiera zastępczy źródłowy kod dla funkcji zakładających istnienie MMU, takich jak np. mmap(). Procesory bez MMU,
choć bezużyteczne dla normalnego użytkownika (z powodu braku ochrony pamięci), są stosowane w wielu prostych,
małych urządzeniach takich jak np: PDA (Personal Digital Assistant) czy telefon komórkowy, z powodu swojej stosunkowo niskiej ceny
(oczywiście odbywa się to kosztem obniżenia pewnej funkcjonalności, która jednak w przypadku małych,
prostych urządzeń okazuje się zbędna). Jak do tej pory Linux oferuje wsparcie dla następujących mikrokontrolerów:
Hitachi's H8/300 series, the NEC v850 processor, Motorola's line of embedded m68k processors.
Dokumentacja