Programowanie Systemów Wbudowanych

Podobne dokumenty
Programowanie Systemów Wbudowanych

Programowanie Systemów Wbudowanych

Uruchomienie Raspberry Pi

K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko

Komputery przemysłowe i systemy wbudowane

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Konfiguracja i kompilacja jądra Linux. Based on Free Electrons

Embedded GNU/Linux. Krzysztof Mazur

Programowanie Systemów Wbudowanych

Spis treści. Wstęp... 10

Tomasz Greszata - Koszalin

Technologia informacyjna. Urządzenia techniki komputerowej

EMBEDDED LINUX ON ARM9 CORE EMBEDDED LINUX NA PROCESORACH Z RODZINY ARM9

1.Wstęp. 2.Generowanie systemu w EDK

BF20 JTAG dla ARM ów z interfejsem USB Instrukcja obsługi

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

PAMIĘĆ OPERACYJNA...107

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Programowanie Systemów Wbudowanych

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

1) Czym jest architektura systemu Windows 7 i jak się ją tworzy? 2) Jakie są poszczególne etapy uruchomienia systemu Windows 7?

Zespól Szkół Ponadgimnazjalnych Nr 17 im. Jana Nowaka - Jeziorańskiego Al. Politechniki 37 Windows Serwer 2003 Instalacja

Podstawowe zagadnienia

Kernel Kompilacja jądra

System komputerowy. System komputerowy

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Uruchomienie Raspberry Pi

OPTIMA PC v Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA ELFON. Instrukcja obsługi. Rev 1

Narzędzie konfiguracji rozruchu

TECHNIKA MIKROPROCESOROWA II

Komputery Przemysłowe i Systemy Wbudowane

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Q E M U.

URZĄDZENIA WEJŚCIA-WYJŚCIA

DLACZEGO DYSTRYBUCJE NIE OBSŁUGUJĄ MOJEGO URZĄDZENIA? Marcin Juszkiewicz Software Engineer

Projektowanie z użyciem procesora programowego Nios II

MAGISTRALE ZEWNĘTRZNE, gniazda kart rozszerzeń, w istotnym stopniu wpływają na

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Obudowa zewnętrznego dysku USB 2.0, 2.5" (6.35cm)

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

BF30 OCDLINK/USBASP ARM-JTAG/AVR-ISP Programmer-debugger Instrukcja obsługi

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Budowa systemów komputerowych

SPIS TREŚCI: KARTY GRAFICZNE... 15

System czasu rzeczywistego

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Ogłoszenie o zamówieniu w trybie przetargu 1

EM8247 Elfin Module Board

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

VamLoader wersja Opis programu

PR P E R Z E E Z N E T N A T C A JA C JA KO K RP R O P RA R C A Y C JN Y A JN ACTINA DATA MANAGER

Automatyczna instalacja oraz zmiana konfiguracji w ramach całego klastra.

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

Vinculum scalony host USB

Typy plików. Oznaczenie f -

router wielu sieci pakietów

Viper Linux Lite, oprogramowanie Linux

Podstawy Techniki Komputerowej. Temat: BIOS

Programowanie procesora Microblaze w środowisku SDK

Elementy składoweµc - przypomnienie

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2017 CZĘŚĆ PRAKTYCZNA

Podstawy technologii informacyjnej. Beata Kuźmińska

SYSTEMY OPERACYJNE. na przykładzie. MS Windows XP

dokument DOK wersja 1.0

Wykład 2. Mikrokontrolery z rdzeniami ARM

GRUB (GRand Unified Bootloader) - jest bootloaderem instalowanym standardowo w Ubuntu, potrafiącym obsłużyć kilka systemów jednocześnie (Multiboot).

61 Topologie wirtualne

Programowanie mikrokontrolerów AVR

WOJEWÓDZKI KONKURS INFORMATYCZNY DLA UCZNIÓW DOTYCHCZASOWYCH GIMNAZJÓW ETAP SZKOLNY BIAŁYSTOK, 22 LISTOPADA 2017 R.

INSTRUKCJA INSTALACJI

ZiMSK. Charakterystyka urządzeń sieciowych: Switch, Router, Firewall (v.2012) 1

Uruchomienie Intel Galileo

1.2. Architektura rdzenia ARM Cortex-M3...16

Technika Mikroprocesorowa

Bezpieczeństwo systemów komputerowych - wykład III i IV

INSTRUKCJA OBSŁUGI TACHOTERMINAL PRO. Firmware

Podstawy technologii tworzenia oprogramowania BSP dla systemów wbudowanych (na przykładzie systemu operacyjnego QNX oraz narzędzi Lauterbach)

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

WPROWADZENIE Mikrosterownik mikrokontrolery

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji. Sieci komputerowe Laboratorium 8

Zbieranie podstawowych śladów działalności.

Spis treści. Wstęp Rozdział 1. Zasady pracy z komputerem Rozdział 2. Budowa komputera... 20

DOS COMMAND.COM. Rys. 2. Główne moduły programowe systemu operacyjnego DOS. Interpreter poleceń. Rys. 3. Warstwowa struktura systemu DOS

1. INSTALACJA SERWERA

Architektura komputerów

Zarządzanie partycjami i dyskami w środowisku Windows.

>>> Techniki rozbudowy systemów wbudowanych >>> Biblioteki wspomagające rozbudowę systemów wbudowanych. Name: Mariusz Naumowicz Date: 29 maja 2019

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Inteligentny czujnik w strukturze sieci rozległej

ICD Wprowadzenie. Wprowadzenie. Czym jest In-Circuit Debugger? 2. O poradniku 3. Gdzie szukać dodatkowych informacji? 4

Podstawowa konfiguracja routerów. Interfejsy sieciowe routerów. Sprawdzanie komunikacji w sieci. Podstawy routingu statycznego

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Ćwiczenia z S S jako Profinet-IO Controller. FAQ Marzec 2012

Transkrypt:

Programowanie Systemów Wbudowanych OS Linux - Oprogramowanie rozruchowe Iwona Kochańska Katedra Systemów Elektroniki Morskiej WETI PG March 30, 2016

Elementy wbudowanego OS Linux Toolchain kompilator i inne narzdzia do tworzenia kodu dla urzadzeń Bootloader inicjalizuje platform sprzętowa oraz ładuje jadro systemu Kernel serce systemu, zarzadza zasobami i komunikuje się ze sprzętem Root filesystem GUT Intel 2015/16 2/35 biblioteki i programy uruchamiane w systemie

Uruchamianie systemu Linux GUT Intel 2015/16 3/35

Co to jest bootloader? Program rozruchowy inicjalizuje system ładuje jadro OS do pamięci Uruchamianie systemu polega na przejściu kilku faz, w których coraz więcej zasobów jest dostępnych dla programu rozruchowego. GUT Intel 2015/16 4/35

Co to jest bootloader? Ostateczny rezultat pracy bootloader-a to: jadro systemu operacyjnego załadowane do pamięci RAM uruchomione środowisko wykonawcze dla jadra (linia poleceń jadra systemu) jadro systemu dostaje wskaźnik do informacji o platformie sprzętowej Dodatkowo bootloader dostarcza trybu serwisowego do: aktualizacji konfiguracji procesu boot-owania, ładowania nowych obrazów programów rozruchowych do pamięci diagnostyki Kiedy j adro OS rozpoczyna wykonywanie swojego programu, bootloader nie jest dłużej potrzebny. GUT Intel 2015/16 5/35

Sekwenca rozruchowa - old days Bootloader w pamięci nieulotnej w wektorze resetu pamięć NOR flash mapowana bezpośrednio na przestrzeń adresowa GUT Intel 2015/16 6/35

Sekwenca rozruchowa - współcześnie Faza 1 kod ROM Faza 2 Secondary program loader (SPL) Faza 3 Tertiary program loader (TPL) Koniec Jadro OS w pamięci GUT Intel 2015/16 7/35

Sekwenca rozruchowa. Faza 1: kod ROM kod ROM - uruchamiany po właczeniu zasilania; zapisany w SoC (system on a chip) podczas produkcji kod ROM potrafi zaadresować mał a przestrzeń SRAM dostępnej w SoC (4kB - kilkaset kb) GUT Intel 2015/16 8/35

Sekwenca rozruchowa. Faza 1: kod ROM Kod ROM ładuje niewielki program rozruchowy do SRAM. Odczytuje go z: pierwszych stron pamięci NAND flash, pamięci flash dołaczonej przez SPI (Serial Peripheral Interface), pierwszych sektorów urzadzenia MMC (karty SD), strumienia bajtów z interfejsu Ethernet, USB lub UART; GUT Intel 2015/16 9/35

Secondary program loader (SPL). SPL uruchamia m.in. kontroler pamięci by móc załadować kolejna część programu rozruchowego (TPL) do pamięci DRAM SPL czyta program z urzadzeń jak kod ROM (z odpowiednim przesunięciem adresu) lub z pliku, np. u-boot.bin. SPL zwykle nie pozwala na żadn a interakcję z użytkownikiem, ale drukuje w konsoli informację o wersji i postępie

Sekwenca rozruchowa. Faza 3: TPL Pełny program rozruchowy (np. U-Boot lub Barebox). Prosta linia poleceń użytkownika - polecenia typu załaduj nowy obraz jadra do pamięci Efektem działania TPL jest jadro OS w pamięci W systemach wbudowanych programy rozruchowe sa usuwane z pamięci po uruchomieniu jadra OS GUT Intel 2015/16 11/35

Rozruch z programem układowym UEFI (UEFI firmware) UEFI - Universal Extensible Firmware Interface (UEFI) standard (http://www.uefi.org) Faza 1 Procesor ładuje UEFI boot manager firmware z pamięci flash. Możliwa interakcja z użytkownikiem przez interfejs tekstowy lub graficzny Faza 2 Boot manager ładuje boot firmware z EFI System Partition (ESP) lub dysku twardego/ssd (lub z serwera sieciowego przez PXE). Format partycji to FAT32. Faza 3 Bootloader ładuje jadro OS do pamięci GUT Intel 2015/16 12/35

Rozruch z UEFI TPL powinien znajdować się w pliku: < e f i _ s y s t e m _ p a r t i t i o n >/ boot / boot <machine_type_short_name >. e f i Na przykład dla maszyny x86_64: / e f i / boot / bootx64. e f i GUT Intel 2015/16 13/35

Rozruch z UEFI Programy TPL: GRUB 2 GNU Grand Unified Bootloader, wersja 2, Najczęściej stosowany z OS Linux na platformach PC https://www.gnu.org/software/grub/. gummiboot Zintegorwany z systemd (menadżer systemu i usług) Licencja LGPL v2.1 https://wiki.archlinux.org/index.php/systemd-boot. GUT Intel 2015/16 14/35

Od programu rozruchowego do jadra OS Informacje przekazywane przez program rozruchowy do jadra OS: Podstawowe informacje o wykrytym sprzęcie (rozmiar fizycznej RAM, szybkość zegara CPU) Architektury PowerPC i ARM - unikatowy numer rodzaju SoC [Opcjonalnie] lokalizacja i rozmiar binarnego drzewa urzadzeń (device tree binary, dtb) [Opcjonalnie] lokalizacja i rozmiar minimalnego systemu plików (initial RAM disk) GUT Intel 2015/16 15/35

Drzewo urzadzeń Drzewo urzadzeń (device tree) - definiuje sprzęt systemu komputerowego plik z rozszerzeniem.dts zwykle przekazywane do jadra OS przez program rozruchowy, może też być przyklejone do jadra na stałe Format - OpenBoot (Sun Microsystems) sformalizowany jako specyfikacja Open Firmware, IEEE standard IEEE1275-1994 (maszyny PowerPC, potem ARM i inne). http://devicetree.org GUT Intel 2015/16 16/35

Drzewo urzadzeń Drzewo urzadzeń reprezentuje system jako hierarchiczny zbiór komponentów Pliki źródłowe drzew urzadzeń jadro Linuxa: arch /$ARCH/ boot / dts źródła U-boot: arch /$ARCH/ dts GUT Intel 2015/16 17/35

Drzewo urzadzeń rozpoczyna się od węzła (node) root-a, reprezentowanego przez / kolejne węzły reprezentuja podzespoły sprzętowe każdy węzeł ma nazwę i właściwości w formacie name = "value" GUT Intel 2015/16 18/35

Właściwość reg Węzły pamięci i CPU maja właściwość reg, która określa zakres wykorzystywanych adresów w rejestrach Dwie wartości całkowite (32-bitowe komórki ): adres poczatku i długość Jeśli adres lub rozmiar nie może być zapisany na 32 bitach (np. gdy adresowanie jest 64-bitowe), potrzebne sa cztery liczby całkowite ( komórki ) dla właściwości reg: Inforamcja o liczbie komórek zapisana jest jako #address-cells i #size_cells w węźle nadrzędnym GUT Intel 2015/16 19/35

Właściwość reg Węzły CPU: Dla procesorów 4-rdzeniowych moga być adresowane jako 0, 1, 2 i 3. Liczba komórek dla reg (węzeł CPU): #address-cells = <1> #size-cells = <0> Węzeł-dziecko cpu@0: reg = <0>. GUT Intel 2015/16 20/35

Phandles i interrupts Phandle - połaczenie w drzewie urzadzeń między komponentem a: kontrolerem przerwań, zegarem, regulatorem napięcia. węzeł interrupt-controller: #interrupt-cells - ile 4-bajtowych liczb reprezentuje linię przerwania? węzeł serial node, interrupt-parent - kontroler przerwań, do którego węzeł jest podłaczony (phandle). GUT Intel 2015/16 21/35

Drzewo urzadzeń - pliki nagłówkowe Rozszerzenie plików nagłówkowych:.dtsi. Dołaczanie zgodnie ze standardem Open Firmware: / i n c l u d e / " vexpress v2m. d t s i " Dołaczanie zapożyczone z języka C: # i n c l u d e " am33xx. d t s i " GUT Intel 2015/16 22/35

Kompilacja drzewa urzadzeń dtc - kompilator drzewa urzadzeń Wynik: plik binarny.dtb (device tree binary lub device tree blob) Przykładowa kompilcja prostego drzewa (bez plików nagłówkowych): $ dtc simpledts 1. dts o simpledts 1. dtb DTC: dts >dts on f i l e " simpledts 1. dts " Kompilacja drzewa z plikami nagłówkowymi - kbuild GUT Intel 2015/16 23/35

Programy rozruchowe Nazwa Das U-Boot Barebox GRUB 2 RedBoot CFE YAMON Architektura ARM, Blackfin, MIPS, PowerPC, SH ARM, Blackfin, MIPS, PowerPC X86, X86_64 ARM, MIPS, PowerPC, SH Broadcom MIPS MIPS GUT Intel 2015/16 24/35

Przykład: Das U-Boot Das U-Boot Poczatkowo - program open source dla wbudowanych systemów PowerPC Następnie - w systemach ARM, MIPS, SH i x86. Utrzymywany przez Denx Software Engineering. www.denx.de/wiki/u-boot. GUT Intel 2015/16 25/35

Budowa U-Boot Kod źródłowy: $ g i t clone g i t : / / g i t. denx. de / u boot. g i t $ cd u boot $ g i t checkout v2015.07 katalog configs/ - ponad 1,000 plików konfiguracyjnych dla różnych platform sprzętowych Przykład: $ make CROSS_COMPILE=arm cortex_a8 l i n u x gnueabihf am335x_boneblack_defconfig GUT Intel 2015/16 26/35

Budowa U-Boot Wynik kompilacji: u-boot: U-Boot w formacie ELF dla debuggera u-boot.map: tablica symboli u-boot.bin: U-Boot w surowym formacie binarnym dla urzadzenia u-boot.img: u-boot.bin z nagłówkiem (dla załadowania do działajacego U-Boot) u-boot.srec: U-Boot w formacie Motoroli - do załadowania przez interfejs szeregowy MLO: Secondary Program Loader (SPL). GUT Intel 2015/16 27/35

Instalacja U-Boot Przez JTAG - ładowanie bezpośrednio do pamięci RAM Jeśli SoC ma rozruchowy ROM, może czytać program rozruchowy z różnych źródeł zewnętrznych (karta SD, interfejs szeregowy, USB) GUT Intel 2015/16 28/35

Instalacja U-Boot - karta SD Formatowanie pierwszej partycji karty jako FAT32 i oznaczenie jej jako bootowalnej: $ sudo mkfs. v f a t F 16 n boot / dev / mmcblk0p1 karta w slocie SD - widoczna jako /dev/mmcblk0 karta w czytniku kart - widoczna jako /dev/sdb, /dev/sdc, itd. Montowanie partycji i kopiowanie SPL: $ sudo mount / dev / mmcblk0p1 / media / sdcard $ cp MLO u boot. img / media / sdcard / boot Odmontowanie partycji. GUT Intel 2015/16 29/35

Format pliku obrazu dla programu rozruchowego Jak przygotować plik obrazu jadra OS dla U-Boot? U-Boot nie ma systemu plików. Używa 64-bitowych nagłówków Przygotowanie pliku dla U-Boot - program mkimage Przykład - przygotowanie pliku jadra dla procesora ARM $ mkimage A arm O l i n u x T ker nel C gzip a 0x80008000 e 0x80008000 n Linux d zimage uimage GUT Intel 2015/16 30/35

Ładowanie obrazu z pliku Ładowanie obrazu z pliku - zwykle z karty SD (sterownik mmc) lub sieci Typowa sekwencja ładowania obrazu: mmc - inicjalizuje ponownie sterownik mmc fatload - odczyt pliku w formacie FAT fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]] GUT Intel 2015/16 31/35

Ładowanie obrazu z sieci TFTP - Trivial File Transfer Protocol (TFTP) Wymagane: uruchomienie demona TFTP, tftpd konfiguracja firewall-i między komputerem a urzadzeniem (transmisja UDP, port 69) Kopiowanie plików: do katalogu /var/lib/tftpboot Dalsza konfiguracja (PC i urzadzenia maja przydzielone IP): GUT Intel 2015/16 32/35

Zapis obrazu do pamięci flash Zapis obrazu jadra do pamięci flash: Odczyt obrazu jadra z pamięci flash (do pamięci RAM): GUT Intel 2015/16 33/35

Uruchomienie jadra Linuxa adres jadra - konieczny, adresy ramdisk i dtb - opcjonalne kiedy nie ma ramdisk: U Boot# bootm 82000000 83000000 GUT Intel 2015/16 34/35

Rozruch automatyczny Automatyzacja procesu rozruchu - poprzez zmienne środowiskowe bootcmd - zmienna zawierajaca skrypt, który jest uruchamiany po N sekundach od właczenia zasilania (można przerwać odliczanie i prześć w tryb interakcji z użytkownikiem) zapis w bootcmd polecenia ładowania obrazu j adra z pamięci flash i uruchomienia go: GUT Intel 2015/16 35/35