Marcin Stanowski – Embedded Linux na procesorach z rodziny ARM9

Transkrypt

Marcin Stanowski – Embedded Linux na procesorach z rodziny ARM9
Marcin Stanowski – V rok
Koło Techniki Cyfrowej
dr inż. Wojciech Mysiński – opiekun naukowy
EMBEDDED LINUX ON ARM9 CORE
EMBEDDED LINUX NA PROCESORACH Z RODZINY ARM9
Keywords: embedded, operating system, linux, arm
Słowa kluczowe: systemy wbudowane, linux, arm
The article is about porting Linux on ARM9 core. Linux operating system can be run on many
architectures, including the most popular in embedded application – ARM architecture. Linux
supports innumerable amount of devices what makes it easy to apply. It also has already
implemented TCP/IP stack and plenty of libraries which shorten the implementation of the
programs. In the future most of devices will be using embedded operating systems and a major
part of them will run with Linux.
1. Systemy wbudowane
Systemem wbudowanym nazywamy system operacyjny przygotowany do wykonywania
określonych zadań. Najczęściej takie układy spotykane są w małych obudowach o ograniczonych
interfejsach. Często nie posiadają na stałe podłączonego monitora i klawiatury. Zamiast tego
komunikacja z nimi może odbywać się poprzez sieć LAN, RS-232, RS-422, RS-485, CAN i inne.
Systemy wbudowane już są wykorzystywane w bardzo wielu aspektach życia
codziennego. Odtwarzacze mp3, telewizory, konsole do gier, kamery cyfrowe, telefony
komórkowe czy też nawigacje GPS, wszystkie one działają dzięki systemom wbudowanym.
Występują one także w przemyśle. Praktycznie każda nowa maszyna, która jest sterowana
cyfrowo (np. tokarki CNC) posiada wbudowany system operacyjny.
2. Linux
Słowo Linux mówione potocznie jest wieloznaczne. Może odnosić się do systemu
operacyjnego, dystrybucji lub jądra. Jest to darmowy system operacyjny, z rodziny Uniksów,
stworzony przez Linusa Torvalds’a na początku lat 90-tych. Od początku istnienia Linux bardzo
się rozwinął. Obecnie dostępny jest w wielu wydaniach na różne architektury sprzętowe. Oprócz
platformy x86, Linuksa można zainstalować na systemach z procesorami 32 bitowymi takimi jak
ARM, MIPS, PowerPC, Sun SPARC, Motorola 68000, AVR32 i wiele innych.
Linux wśród systemów wbudowanych zajmuje wysoką pozycję. Ma na to wpływ wiele
czynników, z których decydującą jest otwartość kodu, co sprawia, że jest to system bezpłatny.
Pewne jest też, że będzie zdobywał coraz większą część rynku.
Rysunek 1. Ankieta przeprowadzona wśród developerów zapytanych o poprzedni użyty system w
projekcie i następny, jaki zamierzają wykorzystać.
Do tej pory bez problemów zwyciężał nawet z systemami komercyjnymi takimi jak
Windows CE a także z komercyjnymi dystrybucjami Linuksa.
3. Architektura ARM
ARM (Advanced RISC Machine) jest najbardziej popularną architekturą 32 bitową.
Procesory z rdzeniem ARM stanowią około 75% układów 32 bitowych. Rocznie sprzedaje się
około 4mld tych mikroprocesorów. Dla porównania układów z architekturą x86 sprzedaję się
około 500 mln sztuk rocznie.
Firma ARM zajmuję się projektowaniem rdzenia, a nie produkcją procesorów. Licencje
na ich wytwarzanie sprzedaje takim firmom jak Atmel czy NXP, które wytwarzają i sprzedają
gotowe chipy. Rdzeń jest tylko częścią układu procesorowego zwanego System on Chip (SoC),
w zależności od wersji producenci wyposażają układ w różne interfejsy.
Platforma
Rysunek 2. System on Chip
4. Budowa i możliwości układu
Jednym z procesorów z rodziny ARM9 jest układ AT91SAM9260 firmy Atmel. Chip ten
działa z częstotliwością 200MHz. Do zewnętrznej magistrali EBI (Extended Bus Interface)
podłączone zostały pamięci 1GB NAND Flash i 64MB SDRAM.
Rysunek 3. Procesor AT91SAM9260 i jego peryferia
Dodatkowo dostępne są interfejsy sieci Ethernet, I2C, SPI, porty szeregowe i
USB. Na Linuksie zostały zaimplementowane systemy protokoły sieciowe, co umożliwia
utworzenie usług sieciowych takich jak serwer WWW, ftp lub ssh. Ponadto do portów
USB można podłączyć dyski przenośne lub inne urządzenia takie jak karty wi-fi czy
drukarki.
Rysunek 4. Moduł MMnet1002 z procesorem AT91SAM9260 stanowi bardzo dobrą bazę dla
Linuksa
5. Linux na ARMie
Proces startowania systemu na platformie z ARM9 składa się z kilku etapów. Na
początku Bootprogram, który zawarty jest w pamięci ROM procesora sprawdza czy w podłączonej
pamięci NAND Flash znajduję się program, a następnie ładuję go.
Ten pierwszy program nazywa się AT91Bootstrap. Jest to bootloader pierwszego
poziomu. Jego zadaniem jest wstępna inicjalizacja procesora oraz załadowanie drugiego
bootloadera U-boota. Jest to już znacznie bardziej rozbudowany program. Z jego poziomu
możemy załadować system z różnych źródeł. Mogą nimi być zarówno pamięć Flash jak i serwer
TFTP (poprzez Ethernet).
Rysunek 5. Sekwencja uruchamiania Linuksa
Kolejnym etapem startu jest skopiowanie jądra Linuksa (inaczej zwane kernelem) do
pamięci RAM. Jądro dla wszystkich architektur jest takie samo. Odpowiedni typ procesora
wybiera się w plikach konfiguracyjnych, a następnie w specjalnych konfiguratorze ustalamy jego
składniki.
Po załadowaniu jądra, przychodzi czas na uruchomienie pierwszego procesu
systemowego, którym jest init i załadowaniu reszty systemu. System możemy przygotować sami
lub skorzystać z gotowej dystrybucji. Gdy zdecydujemy się na tworzenie własnego systemu
możemy do tego użyć narzędzi wspomagających tworzenie systemu takich jak Buildroot czy
OpenEmbedded lub samodzielnie stworzyć strukturę katalogu nadrzędnego i wybrać odpowiednie
aplikacje i biblioteki.
6. Tworzenie oprogramowania
Do tworzenia aplikacji możemy użyć wszystkich języków programowania dostępnych na
dużym Linuksie. Mogą to być np. skrypty konsoli, C/C++, Php, Python, Perl lub Java. Gdy
chcemy napisać program w C/C++ należy kod źródłowy skompilować na komputerze PC lub
laptopie z zainstalowanym systemem Linux. Do kompilacji używamy specjalnego kompilatora
zwanego cross-kompilatorem.
Rysunek 6. Kompilacja programu na platformę arm-linux
7. Przyszłość systemów Embedded
Systemy wbudowane są stosowane w coraz większej liczbie urządzeń. Większość
projektantów używa lub użyję przy następnym projekcie systemu z jądrem Linuksa. Prognozować,
więc można, że szczyt popularności systemów wbudowanych dopiero nadejdzie. Przemawia za
tym przede wszystkim łatwość pisania programów, ponieważ można korzystać z gotowych
aplikacji Open Source, a także dostępność sterowników różnych urządzeń.
8. Literatura
[1]
[2]
[3]
[4]
[5]
Bovet Daniel P, Cesati Marco: Linux Kernel, O'REILLY, 2001.
http://linux4sam.com/ , 3-3.2010.
Noty katalogowe procesora AT91SAM9260.
Ward Brian: Jak działa Linux, Helion, 2005.
Yaghmour Karim Building Embedded Linux Systems, O'REILLY, 2003.