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.