"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



powrót do strony głównej