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

Programowanie Systemów Wbudowanych

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

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

Uruchomienie Raspberry Pi

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

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

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

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

Podstawowe zagadnienia

Tomasz Greszata - Koszalin

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

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

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

Embedded GNU/Linux. Krzysztof Mazur

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

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

Uruchomienie Intel Galileo

Technologia informacyjna. Urządzenia techniki komputerowej

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

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)

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

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

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Q E M U.

Vinculum scalony host USB

Budowa systemów komputerowych

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

dokument DOK wersja 1.0

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

Elementy składoweµc - przypomnienie

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

Viper Linux Lite, oprogramowanie Linux

URZĄDZENIA WEJŚCIA-WYJŚCIA

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

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

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

Kernel Kompilacja jądra

System komputerowy. System komputerowy

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

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Programowanie mikrokontrolerów AVR

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

Podstawy technologii informacyjnej. Beata Kuźmińska

2 Tworzenie oprogramowania dla systemu wbudowanego

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

TECHNIKA MIKROPROCESOROWA II

Projektowanie z użyciem procesora programowego Nios II

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

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

System czasu rzeczywistego

Wykład 2. Mikrokontrolery z rdzeniami ARM

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

EM8247 Elfin Module Board

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

1. INSTALACJA SERWERA

Systemy na Chipie. Robert Czerwiński

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

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

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

Technika Mikroprocesorowa

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

DOS Podstawowe komendy Przygotowanie dyskietki do pracy Praca z katalogami w systemie DOS Operacje kopiowania

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Architektura i administracja systemów operacyjnych

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

Wybrane bloki i magistrale komputerów osobistych (PC) Opracował: Grzegorz Cygan 2010 r. CEZ Stalowa Wola

Narzędzie konfiguracji rozruchu

Ogłoszenie o zamówieniu w trybie przetargu 1

INSTRUKCJA INSTALACJI

Embedded Solutions Automaticon Efektywne pomiary i sterowanie przy użyciu systemu wbudowanego MicroDAQ

UNIWERSALNA KARTA PCI RS-232

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

ADuCino 360. Zestaw uruchomieniowy dla mikrokontrolerów ADuCM360/361

PAMIĘĆ OPERACYJNA...107

Pracownia Technik Obliczeniowych

router wielu sieci pakietów

Programowanie Systemów Wbudowanych

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

Instrukcja aktualizacji oprogramowania

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

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

Specjalność uzupełniająca

Systemy operacyjne i sieci komputerowe Szymon Wilk Partycjonowanie 1

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2018 CZĘŚĆ PRAKTYCZNA. Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu

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

Łagodne wprowadzenie do systemów wbudowanych. Bartłomiej Sięka

Komputery Przemysłowe i Systemy Wbudowane

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

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

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

Podstawy Techniki Komputerowej. Temat: BIOS

Specjalizacja uzupełniająca. urządzeniowo - informatyczna dla wszystkich kierunków na ETI (II st.)

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

Programowanie procesora Microblaze w środowisku SDK

Transkrypt:

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

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/33 biblioteki i programy uruchamiane w systemie

Uruchamianie systemu Linux GUT Intel 2015/16 3/33

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/33

Rezultat pracy bootloader-a 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/33

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

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/33

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ń pamięci SRAM dostępnej w SoC (4kB - kilkaset kb) SPL - secondary program loader Kod ROM ładuje niewielki program rozruchowy do SRAM 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 8/33

Sekwenca rozruchowa. Faza 2: SPL 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 GUT Intel 2015/16 9/33

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 10/33

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 11/33

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. TPL powinien znajdować się w pliku: < efi_system_partition >/ boot / boot < machine_type_short_name >. efi Na przykład dla maszyny x86_64: /efi/boot/bootx64.efi GUT Intel 2015/16 12/33

Od programu rozruchowego do jadra OS Informacje przekazywane przez program rozruchowy do jadra OS: [Zawsze]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 13/33

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 14/33

Przed drzewem urzadzeń Jadro OS zawierało cała wiedzę o sprzęcie GUT Intel 2015/16 15/33

Z drzewem urzadzeń J adro OS nie zawiera informacji o platformie sprzętowej. Osobny plik binarny: device tree blob (dtb) GUT Intel 2015/16 16/33

Drzewo urzadzeń Drzewo urz adzeń reprezentuje system jako hierarchiczny zbiór komponentów GUT Intel 2015/16 17/33

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/33

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/33

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/33

Referencja do innego węzła (phandle) Phandle (<&node>) - 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/33

Drzewo urzadzeń - pliki Pliki nagłówkowe Rozszerzenie plików nagłówkowych:.dtsi. Dołaczanie zgodnie ze standardem Open Firmware: / include / " vexpress - v2m. dtsi " Dołaczanie zapożyczone z języka C: # include " am33xx. dtsi " Plik binarny 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 file " simpledts -1. dts " Kompilacja drzewa z plikami nagłówkowymi - kbuild GUT Intel 2015/16 22/33

Problemy z pisaniem programu rozruchowego.. Uruchomienie prostego Hello World w działajacym OS - środowisko uruchomieniowe (runtime) Uruchomienie programu przez Bootloader - każdy potrzebny zasób musi być zainicjalizowany i zaalokowany Brak dostępu do pamięci operacyjnej = brak stosu Dostęp do pamięci operacyjnej - kontroler DRAM DRAM musi być sekwencyjnie odświeżana zgodnie ze schematem czasowym definiowanym przez producenta Ładowanie programu z pamięci nieulotnej (flash) do DRAM GUT Intel 2015/16 23/33

(Mniej lub bardziej) uniwersalne 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/33

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/33

Das U-Boot Pobranie kodu źródłowego: $ git clone git :// git. denx.de/u- boot. git $ cd u- boot katalog configs/ - ponad 1,000 plików konfiguracyjnych dla różnych platform sprzętowych konfiguracja dla Raspberry Pi ver. 2: $ make rpi_2_defconfig $ make all UWAGA! W systemie hosta musi być zainstalowany toolchain do kompilacji skrośnej programów dla RPi! GUT Intel 2015/16 26/33

Uruchamianie 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) W przypadku Raspberry Pi należy w pliku config.txt zapisać: kernel =u- boot. bin GUT Intel 2015/16 27/33

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) W przypadku Raspberry Pi - interfejs szeregowy GUT Intel 2015/16 28/33

Nagranie plików u-boot na kartę SD Formatowanie pierwszej partycji karty jako FAT32 i oznaczenie jej jako bootowalnej: $ sudo mkfs. vfat -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 nagranie u-boot.img $ sudo mount / dev / mmcblk0p1 / media / sdcard $ cp MLO u- boot. img / media / sdcard / boot Odmontowanie partycji. GUT Intel 2015/16 29/33

Instalacja U-Boot - Raspberry Pi Interakcja z u-boot na Rapsberry Pi (tryb ręczny rozruchu) fatload - odczyt pliku w formacie FAT. Składnia: fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]] mmc - urzadzenie pamięci masowej GUT Intel 2015/16 30/33

Format pliku obrazu jadra 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 linux -T kernel -C gzip -a 0x80008000 -e 0 x80008000 -n Linux -d zimage uimage GUT Intel 2015/16 31/33

Ł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/33

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/33