Wykład 3: Implementacja programów wbudowanych

Podobne dokumenty
Prezentacja systemu RTLinux

Podstawowe zagadnienia

Systemy wbudowane. Wykład 4: Systemy operacyjne dla systemów wbudowanych. Obsługa przez przerwania. Z wywłaszczaniem zadań:

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

Funkcje zawarte w bibliotece < io.h >

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Funkcje zawarte w bibliotece < io.h >

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

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

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

2. Code Composer Studio v4 zintegrowane środowisko projektowe... 41

Wykład 1

Programowanie mikrokontrolerów AVR

Komputery przemysłowe i systemy wbudowane

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Działanie systemu operacyjnego

Sterowniki urządzeń w systemie operacyjnym RTEMS

Systemy operacyjne II

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Jądro systemu operacyjnego

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

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

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

1. Tworzenie nowego projektu.

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)

Linux Kernel III. Character devices

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Podstawy programowania w języku C++

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Działanie systemu operacyjnego

Funkcja (podprogram) void

Działanie systemu operacyjnego

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

Pod o z d ia i ł a r yn y k n u k u ( 2004 r.). źródło: Gartner 3

Operacje wejścia/wyjścia odsłona pierwsza

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Projektowanie z użyciem procesora programowego Nios II

2 Przygotował: mgr inż. Maciej Lasota

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

Programowanie strukturalne język C - wprowadzenie

Warstwy oprogramowania wejścia/wyjścia

3. Sygnały zegarowe i ich konfiguracja, mechanizmy bezpieczeństwa... 47

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Działanie systemu operacyjnego

4. Procesy pojęcia podstawowe

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD.

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Metody optymalizacji soft-procesorów NIOS

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Organizacja oprogramowania

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Opis efektów kształcenia dla modułu zajęć

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Szablony klas, zastosowanie szablonów w programach

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Co nie powinno być umieszczane w plikach nagłówkowych:

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Tworzenie sterowników dla FreeBSD. Michał Hajduk

Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU

SYLABUS/KARTA PRZEDMIOTU

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

PMiK Programowanie Mikrokontrolera 8051

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

1 Zapoznanie się ze środowiskiem Xenomai.

MIKROKONTROLERY AVR JĘZYK C WYDAWNICTWO ATNEL PODSTAWY PROGRAMOWANIA. Miros aw Kardaś. Szczecin Mojej Żonie Kasi

Podstawy programowania komputerów

Dzisiejszy wykład. Klasa string. wersja prosta wersja ze zliczaniem odwołań. Wyjątki Specyfikator volatile Semafory

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Systemy operacyjne III

Systemy Czasu Rzeczywistego (SCR)

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wstęp do programowania

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Informatyka I : Tworzenie projektu

Systemy operacyjne III

Struktury czyli rekordy w C/C++

REAL-TIME LINUX. ZGODNOŚĆ Z POSIX ( PSE51 (minimal realtime system profile)

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego - przykłady

Języki programowania. Tablice struktur, pliki struktur. Część ósma. Autorzy Tomasz Xięski Roman Simiński

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.

Podstawy programowania C. dr. Krystyna Łapin

Systemy wbudowane. Paweł Pełczyński

Inżynieria Wytwarzania Systemów Wbudowanych

Wstęp. do języka C na procesor (kompilator RC51)

PROGRAMOWANIE w C prolog

Transkrypt:

Systemy wbudowane Wykład 3: Implementacja programów wbudowanych Problemy implementacji oprogramowania wbudowanego Szeregowanie zadań System operacyjny Obsługa przerwań 10/16/2010 S.Deniziak:Systemy wbudowane 2 1

Szeregowanie w systemach czasu rzeczywistego Statyczne Metody konstrukcyjne Metody rafinacyjne Dynamiczne Zadania mają priorytety Priorytety statyczne lub dynamiczne Quasi-statyczne 10/16/2010 S.Deniziak:Systemy wbudowane 3 Ograniczenia czasowe 10/16/2010 S.Deniziak:Systemy wbudowane 4 2

Szeregowanie statyczne ASAP ALAP As Soon As Possible As Late As Possible 10/16/2010 S.Deniziak:Systemy wbudowane 5 Szeregowanie list Najczęściej stosowane 10/16/2010 S.Deniziak:Systemy wbudowane 6 3

Szeregowanie dynamiczne Każdy proces ma priorytet Proces może być w 2 stanach: aktywny i oczekujący Jako następny wybierany jest oczekujący proces o najwyższym priorytecie Priorytety mogą być stałe lub zmienne 10/16/2010 S.Deniziak:Systemy wbudowane 7 RMS(RMA) Rate Monotonic Scheduling(Analysis) Założenia: Nie ma zależności pomiędzy zadaniami Czas przełączania zadań jest nieistotny Czas wykonania zadania jest stały Proces rozpoczyna się na początku swojego okresu Stałe priorytety Im wyższa częstotliwość wykonywania zadania tym wyższy priorytet 10/16/2010 S.Deniziak:Systemy wbudowane 8 4

Earliest-deadline-first (EDF) scheduling Priorytet dynamiczny Proces mający mniej czasu do ograniczenia czasowego ma wyższy priorytet Aktualizacja priorytetów po każdym przełączeniu zadań Nie zapewnia poprawności uszeregowania! 10/16/2010 S.Deniziak:Systemy wbudowane 9 Szeregowanie LLF Least Laxity First Procesy mające najmniej swobody czasowej mają wyższy priorytet Uwzględnia czas wykonania (w przeciwieństwie do EDF) 10/16/2010 S.Deniziak:Systemy wbudowane 10 5

System operacyjny czasu rzeczywistego Szeregowanie procesów: Zapewnienie spełnienia ograniczeń czasowych W uniwersalnych SO celem jest równy podział czasu procesora pomiędzy zadania SO dla systemów wbudowanych: Windows CE, μclinux, MicroC/OSII, ecos itp. 10/16/2010 S.Deniziak:Systemy wbudowane 11 Zarządzanie pamięcią Rzadziej stosowana w RTOS Zastosowania: Organizacja pamięci wirtualnej (w pamięci FLASH) Rezerwacja pamięci dla zadań (np. W przypadku uruchamiania zadań zewnętrznych) Windows CE: Adresy 32-bitowe Dolne 2GB dla programów użytkownika Górne 2GB dla SO 10/16/2010 S.Deniziak:Systemy wbudowane 12 6

Mechanizmy zapewniające RT Przerwania Implementują priorytety Szeregowanie Zapewnia spełnienie wymagań czasowych 10/16/2010 S.Deniziak:Systemy wbudowane 13 Obsługa przerwań Przerwania sprzętowe: Wyższy priorytet niż przerwania programowe Obsługa (ISR) powinna być jak najszybsza Przerwania programowe: Obsługa (IST) mechanizm szeregowania 10/16/2010 S.Deniziak:Systemy wbudowane 14 7

Komunikacja i synchronizacja pomiędzy procesami Mailbox przesyłanie komunikatów Kolejki komunikatów Semafory Zdarzenia/sygnały 10/16/2010 S.Deniziak:Systemy wbudowane 15 Program wbudowany Kod aplikacji Biblioteka użytkownika Biblioteka systemowa System operacyjny Sterowniki urządzeń 10/16/2010 S.Deniziak:Systemy wbudowane 16 8

Obsługa urządzeń zewnętrznych Poprzez system operacyjny Sterowniki zgodne z wymaganiami RTOS Standardowe funkcje C (np. fread(), fwrite() ) Bezpośrednio Własne sterowniki Programowanie niskopoziomowe 10/16/2010 S.Deniziak:Systemy wbudowane 17 NIOS II EDS Hardware: procesor Nios II (32b, RISC), szyna Avalon, moduły IP: kontrolery RAM, DMA, moduły DSP, itp. automatyczna konfiguracja systemu. Software: system operacyjny MicroC/OSII, stos TCP/IP, automatyczna generacja szablonu projektu, debuger rzeczywistego systemu. 10/16/2010 S.Deniziak:Systemy wbudowane 18 9

Nios II EDS Język C/C++ System operacyjny MicroC/OS II Stos NicheStack TCP/IP System plików RO ZIP Debugger 10/16/2010 S.Deniziak:Systemy wbudowane 19 Struktura systemu (1) Kod aplikacji Biblioteka aplikacji Biblioteka systemowa BSP: HAL (Hardware Abstraction Layer) NewLib C Standard Library Opcjonalne pakiety (np. TCP/IP) RTOS 10/16/2010 S.Deniziak:Systemy wbudowane 20 10

Struktura systemu (2) Bez RTOS Z systemem MicroC/OS /OS-II 10/16/2010 S.Deniziak:Systemy wbudowane 21 HAL - zadania Implementacja standardowych funkcji I/O języka C Dostęp do urządzeń I/O API dla języka C Inicjalizacja systemu Inicjalizacja urządzeń I/O 10/16/2010 S.Deniziak:Systemy wbudowane 22 11

HAL klasy urządzeń Znakowe (np. UART) Timer System plików Ethernet DMA Pamięć FLASH 10/16/2010 S.Deniziak:Systemy wbudowane 23 Tworzenie projektu Pliki tworzone przez projektanta Pliki tworzone przez NiosII IDE (BSP Settings) Pliki tworzone przez SOPC Builder (.ptf.sopc) 10/16/2010 S.Deniziak:Systemy wbudowane 24 12

Plik system.h Konfiguracje urządzeń Adresy bazowe Przerwania Nazwy symboliczne /* * sys_clk_timer configuration * */ #define SYS_CLK_TIMER_NAME "/dev/sys_clk_timer" #define SYS_CLK_TIMER_TYPE "altera_avalon_timer" #define SYS_CLK_TIMER_BASE 0x00920800 #define SYS_CLK_TIMER_IRQ 0 #define SYS_CLK_TIMER_ALWAYS_RUN 0 #define SYS_CLK_TIMER_FIXED_PERIOD 0 10/16/2010 S.Deniziak:Systemy wbudowane 25 Typy danych i funkcje I/O alt_types.h: alt_8, alt_u8, alt_16, alt_u16, Standardowe funkcje: Standardowe funkcje C (np. fopen()) Funkcje unixowe (np. open()) 10/16/2010 S.Deniziak:Systemy wbudowane 26 13

Przykład: pomiar czasu wykonania #include <stdio.h> #include "sys/alt_timestamp.h" #include "alt_types.h" int main (void) { alt_u32 time1; alt_u32 time2; alt_u32 time3; if (alt_timestamp_start() < 0) { printf ("No timestamp device available\n"); } else { time1 = alt_timestamp(); func1(); /* first function to monitor */ time2 = alt_timestamp(); func2(); /* second function to monitor */ time3 = alt_timestamp(); printf ("time in func1 = %u ticks\n",(unsigned int) (time2 time1)); printf ("time in func2 = %u ticks\n",(unsigned int) (time3 time2)); printf ("Number of ticks per second = %u\n",(unsigned int)alt_timestamp_freq()); } return 0; } 10/16/2010 S.Deniziak:Systemy wbudowane 27 Tworzenie własnych sterowników Utworzenie pliku nagłówkowego Implementacja sterownika Testowanie kodu Integracja z HAL 10/16/2010 S.Deniziak:Systemy wbudowane 28 14

Plik nagłówkowy <altera_inst>\ip\sopc_builder_ip\<component>.\inc\<component>_regs.h IORD_<component>_<register>(adres_bazowy) IOWR_<component>_<register>(adres_bazowy, dane) IOADDR_<component>_<register>(adres_bazowy) <component>_<register>_<field>_msk <component>_<register>_<field>_ofst 10/16/2010 S.Deniziak:Systemy wbudowane 29 Sterowniki dla urządzeń znakowych Utworzenie instancji urządzenia: typedef struct { alt_llist llist; /* for internal use */ const char* name; int (*open) (alt_fd* fd, const char* name, int flags, int mode); int (*close) (alt_fd* fd); int (*read) (alt_fd* fd, char* ptr, int len); int (*write) (alt_fd* fd, const char* ptr, int len); int (*lseek) (alt_fd* fd, int ptr, int dir); int (*fstat) (alt_fd* fd, struct stat* buf); int (*ioctl) (alt_fd* fd, int req, void* arg); } alt_dev; Rejestracja urządzenia: int alt_dev_reg (alt_dev* dev) 10/16/2010 S.Deniziak:Systemy wbudowane 30 15

Integracja sterowników z HAL Struktura kartoteki: <component> HAL inc - <component>.h src - component.mk inc 10/16/2010 S.Deniziak:Systemy wbudowane 31 Inicjalizacja alt_sys_init.c alt_sys_init(): #include component.h <component>_instance (NAME, dev) <component>_init(name, dev) 10/16/2010 S.Deniziak:Systemy wbudowane 32 16

Koniec 10/16/2010 S.Deniziak:Systemy wbudowane 33 17