Systemy Czasu Rzeczywistego (SCR)

Podobne dokumenty
Systemy Czasu Rzeczywistego (SCR)

SYSTEMY CZASU RZECZYWISTEGO (SCR)

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

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

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

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S]

Systemy czasu rzeczywistego

2. Architektura mikrokontrolerów PIC16F8x... 13

Systemy wbudowane. Paweł Pełczyński

ZL8AVR. Płyta bazowa dla modułów dipavr

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

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

ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

Wykład 3: Implementacja programów wbudowanych

Szkolenia specjalistyczne

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

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

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

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)

ZASTOSOWANIE PLATFORM CYFROWYCH ARDUINO I RASPBERRY PI W NAUCZANIU STEROWANIA OBIEKTEM PNEUMATYCZNYM

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

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

ZL5PIC. Zestaw uruchomieniowy dla mikrokontrolerów PIC16F887

Prezentacja systemu RTLinux

MIKROKONTROLERY I MIKROPROCESORY

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

Wstęp Architektura... 13

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

KAmduino UNO. Rev Źródło:

dokument DOK wersja 1.0

Konstrukcja systemu telemetrycznego z zastosowaniem technologii internetowych

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

ZL11ARM. Uniwersalna płytka bazowa dla modułów diparm

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

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL6ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC213x. Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC213x

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1

ISBN Copyright by Wydawnictwo BTC Warszawa Redaktor techniczny: Delfina Korabiewska Redaktor merytoryczny: mgr Anna Kubacka

E-TRONIX Sterownik Uniwersalny SU 1.2

Zestaw Startowy EvB. Więcej informacji na stronie:

Programowanie mikrokontrolerów AVR

Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC2100, które można zastosować w zestawie ZL3ARM.

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

ISBN Copyright by Wydawnictwo BTC Legionowo 2008

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1.

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

High Speed USB 2.0 Development Board

ISBN. Copyright by Wydawnictwo BTC Legionowo 2010

Politechnika Białostocka

Opis funkcjonalny i architektura. Modu³ sterownika mikroprocesorowego KM535

Specjalność uzupełniająca

Inteligentny czujnik w strukturze sieci rozległej

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Programator procesorów rodziny AVR AVR-T910

ZL5ARM. Zestaw uruchomieniowy dla mikrokontrolerów LPC2119/2129 (rdzeń ARM7TMDI-S) Kompatybilność z zestawem MCB2100 firmy Keil

WPROWADZENIE Mikrosterownik mikrokontrolery

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

MultiTool instrukcja użytkownika 2010 SFAR

Systemy Wbudowane. Założenia i cele przedmiotu: Określenie przedmiotów wprowadzających wraz z wymaganiami wstępnymi: Opis form zajęć

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

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

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

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

ZL10PLD. Moduł dippld z układem XC3S200

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

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Instrukcja obsługi. PROGRAMATOR dualavr. redflu Tarnów

Instrukcja użytkownika KRISTECH, 2016

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

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

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

Systemy wbudowane Mikrokontrolery

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Wykład 2. Mikrokontrolery z rdzeniami ARM

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

Sygnały DRQ i DACK jednego kanału zostały użyte do połączenia kaskadowego obydwu sterowników.

ZL6PLD zestaw uruchomieniowy dla układów FPGA z rodziny Spartan 3 firmy Xilinx

Instytut Teleinformatyki

Systemy Czasu Rzeczywistego (SCR)

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Systemy Czasu Rzeczywistego (SCR)

1. Tworzenie nowego projektu.

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

1.10 MODUŁY KOMUNIKACYJNE

Moduł nie może być zasilany z PoE. Nie ma wbudowanej przetwornicy PoE, a posiada tylko wyprowadzenie pinów RJ45 na płytkę PCB

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

Cyfrowy rejestrator parametrów lotu dla bezzałogowych statków powietrznych. Autor: Tomasz Gluziński

Systemy Wbudowane. Arduino, AVR. Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler. Mikrokontroler Platforma Arduino. Arduino IDE: Arduino C:

Transkrypt:

Systemy Czasu Rzeczywistego (SCR) Wykład 14: System operacyjny czasu rzeczywistego w praktyce - przykładowa platforma sprzętowo-programowa ZL9AVR + Nut/OS SKiTI2017 WYDZIAŁ ELEKTROTECHNIKI I AUTOMATYKI KATEDRA INŻYNIERII SYSTEMÓW STEROWANIA Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok II, semestr IV dr inż. Tomasz Rutkowski 2017

ZL9AVR+ Nut/OS Platforma sprzętowa SCR 2017 2

Platforma sprzętowa SCR 2017 3

Platforma sprzętowa -baza Platforma sprzętowa składa się z następujących modułów firmy Kamami: ZL9AVR płyta bazowa z dodatkowym wyposażeniem: 4 przyciski i przycisk zerowania 8 diod LED Złącze wyświetlacza wietlacza alfanumerycznego LCD (2x16 znaków) 2 porty szeregowe RS232 (gniazda DB9F) Złącze konwertera USB2RS232 Złącze JTAG Przetwornik piezoelektryczny Złącza szpilkowe dla linii I/O mikrokontrolera Pamięć SRAM o pojemności 32kB SCR 2017 4

Platforma sprzętowa -baza Źródło: http://www.kamami.pl SCR 2017 5

Platforma sprzętowa -baza ZL7AVR moduł dipavr z mikrokontrolerem ATmega-128: pamięć programu: 128 kb, pamięć danych EEPROM: 4 kb, pamięć danych SRAM: 4 kb, częstotliwość taktowania: 16 MHz, złącze do programowania Kanda ISP, wbudowany generator sygnału zerującego, możliwość zastosowania zewnętrznego źródła napięcia referencyjnego dla przetwornika A/C, liczba linii I/O: 53. SCR 2017 6

Platforma sprzętowa -baza Źródło: http://www.kamami.pl SCR 2017 7

Platforma sprzętowa -baza ZL1ETH uniwersalny interfejs Ethernet: kontroler RTL8019AS, złącze RJ-45 (Ethernet 10Base-T), 3 diody LED (Link, Rx, Tx), nieulotna pamięć konfiguracji kontrolera (EEPROM), 8-bitowa magistrala danych. SCR 2017 8

Platforma sprzętowa -baza Źródło: http://www.kamami.pl SCR 2017 9

Wyświetlacz alfanumeryczny LCD (2x16 znaków) Moduł 16-przyciskowej klawiatury matrycowej 4 4 Moduł czytnika kart SD/MMC Platforma sprzętowa - elementy dodatkowe Moduł z graficznym wyświetlaczem LCD (od telefonu Nokia 3310) zegar RTC + 8kB pamięci EEPROM) Moduł z cyfrowym czujnikiem temperatury i termostatem z interfejsem I2C SCR 2017 10

Platforma sprzętowa - elementy dodatkowe Źródło: http://www.kamami.pl SCR 2017 11

ZL9AVR + Nut/OS Platforma programowa SCR 2017 12

Czym jest Nut/OS? Platforma programowa -Nut/OS Wielowątkowy system operacyjny czasu rzeczywistego (RTOS) Opracowany został przez niemiecką firmę Egnite Kod sytemu jest objęty liberalną licencją BSD (w aplikacjach komercyjnych należy jedynie zaznaczyć że wykorzystuje się system Ethernut) Kod sytemu jest napisany modularnie w języku C z nielicznymi wstawkami asemblerowymi Jest dostępny dla kilku platform sprzętowych Współpracuje obecnie z rodzinami mikrokontrolerów: Atmel AVR (Atmega103/Atmega-128), ARM (Atmel), Renesas H8/300H Składa się z bibliotek i odpowiedniego kodu startowego, dołączanych do programu użytkownika SCR 2017 13

Platforma programowa -Nut/OS Nut/OS udostępnia typowe mechanizmy wielozadaniowego OS: Wielowątkowość z podziałem czasu procesora, Zarządzanie pamięcią, dynamiczna alokacja RAMu Synchronizacja wątków (events) Obsługa systemów plików (UROM, FAT) Sterowniki podstawowych urządzeń (GPIO, SPI, I2C) Wysokopoziomowa obsługa przerwań Powyższe mechanizmy umożliwiają uruchomienie stosu TCP/IP (Nut/Net)!!! SCR 2017 14

Platforma programowa -Nut/OS Możliwości Nut/Net: obsługa protokołów TCP/IP: ARP, IP, TCP, UDP, ICMP, PPP (modem) obsługa popularnych kontrolerów Ethernet: RTL8019AS, CS8900, LAN91C111, DM9000, wbudowany serwer WWW o sporych możliwościach: skrypty CGI, dynamiczne generowanie zawartości stron autoryzacja użytkowników, konfiguracja interfejsu sieciowego z wykorzystaniem DHCP, interfejs programistyczny przypominający pecetowe sockety. SCR 2017 15

Podstawowe biblioteki Nut/OS: Platforma programowa -Nut/OS libnutarch.a funkcje specyficzne dla używanej platformy sprzętowej (np. przełączanie kontekstu mikrokontrolera) oraz sterowniki urządzeń przeznaczone wyłącznie dla konkretnej architektury (np. UART wbudowany w mikrokontroler, kontroler Ethernet RTL8019), libnutdev.a pozostałe sterowniki urządzeń, libnutfs.a funkcje obsługi systemów plików UROM i FAT, libnutcrt.a miniaturowa wersja standardowej biblioteki języka C, zawiera takie funkcje jak printf(), malloc(), fopen() itp. libnutos.a zarządzanie wątkami, obsługa komunikacji międzyprocesowej oraz funkcje dynamicznej alokacji pamięci, libnutnet.a stos TCP/IP, funkcje obsługi gniazd sieciowych SCR 2017 16

Kod startowy Nut/OS, nutinit.o: Platforma programowa -Nut/OS kod startowy systemu, uruchamiany po zerowaniu mikorkontrolera, jego główne zadania to: inicjalizacja układów peryferyjnych mikrokontrolera (m.in. zewnętrznej pamięci RAM), ustawienie stosu, uruchomienie zarządzania wątkami, po wykonaniu powyższych czynności, kod startowy skacze do funkcji main() programu użytkownika, SCR 2017 17

Platforma programowa -Nut/OS, WinAVRi AVR Studio Aby utworzyć w AVR Studio projekt wykorzystujący Nut/OS należy pamiętać by: Zainstalować na PC WinAVR i AVR Studio, Zainstalować na PC Nut/OS, przygotować biblioteki systemu na odpowiednią platformę sprzętową oraz umieścić je odpowiednio w strukturze katalogów WinAVR, Przygotować, odpowiednia edycja, plików sterujących kompilacją Makefile i Sources, Pliki Makefile i Sources umieścić w katalogu projektu AVR Studio, Projekt w AVR Studio kompilować z przygotowanym wcześniej plikiem Makefile (opcja Use external Makefile ). SCR 2017 18

Platforma programowa - Nut/OS, wątki W Nut/OS zaimplementowano: Priorytety wątków z zakresu od 0 do 254, przy czym 0 oznacza najwyższy a 254 najniższy priorytet: najwyższe priorytety (od 0 do 31) są zarezerwowane dal wątków systemu operacyjnego nowo utworzone wątki mają priorytet równy 64 Jądro systemu z wielowątkowością kooperatywną (bez wywłaszczania): jeśli pracujący w danej chwili wątek zwolni procesor, scheduler uruchomi wątek znajdujący się w stanie gotowości o najwyższym priorytecie, jeżeli żaden z wątków nie jest gotowy (oczekuje na zajście zdarzenia lub jest uśpiony) to system przełącza się na wątek jałowy idle o najniższym priorytecie SCR 2017 Przełączanie wątków w tej metodzie jest możliwe jedynie gdy obecnie wykonujący się wątek dobrowolnie zwolni procesor 19

Platforma programowa - Nut/OS, wątki W Nut/OS każdy z wątków może znajdować się w jednym z następujących stanów: TDS_RUNNING : obecnie pracujący wątek, TDS_SLEEP : wątek oczekujący na wystąpienie zdarzenia, zakończenie operacji wejścia wyjścia lub uśpiony na pewien czas (np.: przez funkcję NutSleep()), po zakończeniu okresu oczekiwania/uśpienia wątek przechodzi w stan TDS_READY, TDS_READY : wątek gotowy do wznowienia pracy, SCR 2017 20

Platforma programowa - Nut/OS, wątki (podstawowe funkcje) HANDLE NutThreadCreate(char *name, void (*fn) (void *), void *arg, size_t stacksize); Tworzy nowy wątek o nazwie name. Wątek zaczyna swoją pracę od wywołania funkcji fn z parametrem arg. Przez arg można przekazać funkcji fn dowolny wskaźnik jako argument (lub podać NULL). Wartość stacksize określa rozmiar stosu dla tworzonego wątku. Domyślna wartość to 768 bajtów (makrodefinicja NUT_THREAD_MAINSTACK). Nowo utworzony wątek ma priorytet 64. SCR 2017 21

Platforma programowa - Nut/OS, wątki (podstawowe funkcje) u_char NutThreadSetPriority(u_char level); Ustawia priorytet obecnie pracującego wątku na wartość level. Funkcja zwraca wartość priorytetu wątku przed zmianą. SCR 2017 22

void NutDelay(u_long ms); Platforma programowa - Nut/OS, wątki (podstawowe funkcje) Czeka dokładnie określoną liczbę ms milisekund. Bieżący wątek nie jest przełączany. Funkcję można stosować do precyzyjnych opóźnień. SCR 2017 23

Platforma programowa - Nut/OS, wątki Za pomocą następujących funkcji można uśpić wątek w Nut/OS: NutSleep(), NutThreadYield(), NutEventWait(), NutTcpConnect(), NutTcpAccept(), NutTcpReceive(), NutTcpSend(), lub inna funkcja blokująca operacje wejścia wyjścia na gnieździe sieciowym. SCR 2017 24

void NutSleep(u_long ms); Platforma programowa - Nut/OS, wątki (podstawowe funkcje) Przerywa działający wątek na czas, co najmniej równy liczbie ms milisekund i przełącza go zgodnie z algorytmem schedulera. Rzeczywisty czas, na jaki wątek zostanie uśpiony zależy od rozdzielczości timera systemowego (domyślnie 62,5 milisekundy). Funkcji NutSleep nie wolno używać do odmierzania precyzyjnych opóźnień!!! SCR 2017 25

void NutThreadYield(void); Platforma programowa - Nut/OS, wątki (podstawowe funkcje) Wywołanie tej funkcji powoduje natychmiastowe przełączenie bieżącego wątku zgodnie z algorytmem schedulera. SCR 2017 26

Platforma programowa - Nut/OS, zarządzanie pamięcią Nut/OS udostępnia standardowe funkcje języka C umożliwiające dynamiczną alokację pamięci: malloc free Do dyspozycji jest 32 kb pamięci RAM SCR 2017 27

Platforma programowa - Nut/OS, zarządzanie pamięcią (podstawowe funkcje) void *malloc(size_t), free(void *); Funkcje alokujące i zwalniające pamięć zgodne ze standardową biblioteką języka C. void *NutHeapAlloc(size_t), NutHeapFree(void *); Ethernutowe odpowiedniki funkcji malloc() i free(). size_t NutHeapAvailable(); Zwraca ilość dostępnej pamięci sterty w bajtach. SCR 2017 28

Przykłady: 1) interfejs UART0 2) podstawy wątków 3) prosty serwer WWW SCR 2017 29

Przykład 1: interfejs UART0 SCR 2017 30

Przykład 1 SCR 2017 31

Przykład 1 SCR 2017 32

Przykład 1 SCR 2017 33

Przykład 1 int NutRegisterDevice(NUTDEVICE * dev, uptr_t base, u_char irq); Funkcja ta odpowiada za rejestrację i inicjalizację urządzeń w systemie Nut/OS. Parametr dev jest wskaźnikiem do struktury opisującej sterownik urządzenia. Dla sterowników wbudowanych w Nut/OS struktury te są już zadeklarowane w plikach nagłówkowych, np. DEV_DEBUG odpowiada zerowemu UART owi w mikrokontrolerze ATmega128. Przez parametry base i irq możemy przekazać adres bazowy rejestrów urządzenia i numer przerwania. Jeżeli rejestracja urządzenia przebiegnie prawidłowo, funkcja zwróci wartość 0, jeśli nie, wartość 1. SCR 2017 34

Przykład 1 FILE *freopen(const char *name, CONST char *mode, FILE * stream); Funkcja ta odpowiada za przekierowanie standardowego wyjścia (stdout) do portu szeregowego. Funkcja otwiera plik o nazwie name w trybie mode i ustalonym deskryptorze stream. W kodzie z poprzedniego slajdu: plik o nazwie DEV_DEBUG_NAME (uart0) w trybie do zapisu (w) i deskryptorze stdout (standardowe wyjście). SCR 2017 35

Przykład 1 int _ioctl(int fd, int cmd, void *buffer); Funkcja jest wykorzystywana do wykonywania niestandardowych operacji na urządzeniach wejścia wyjścia. Funkcja _ioctl odpowiada za ustawienie prędkości przesyłania danych przez port szeregowy. Parametr fd to numer deskryptora pliku urządzenia, cmd to kod polecenia a buffer to dane dla polecenia. Poprawne wykonanie funkcji jest sygnalizowane zwróceniem wartości 0, niepoprawne, wartości ujemnej. SCR 2017 36

Przykład 2: podstawy wątków SCR 2017 37

Przykład 2 SCR 2017 38

Przykład 2 SCR 2017 39

Przykład 2 SCR 2017 40

Przykład 2 SCR 2017 41

Przykład 3: prosty serwer WWW SCR 2017 42

Przykład 3 SCR 2017 43

Przykład 3 SCR 2017 44

Przykład 3 SCR 2017 45

Przykład 3 SCR 2017 46

Przykład 3 SCR 2017 47

Przykład 3 SCR 2017 48

Bibliografia: [1] P.Szymczyk(2003). Systemy Operacyjne Czasu Rzeczywistego. Uczelniane Wydawnictwa Naukowo-Dydaktyczne, Kraków. [2] J.Ułasiewicz(2007). System czasu Rzeczywistego QNX6 Neutrino. Wydawnictwo BTC, Legionowo. [3] K.Lal, T.Rak, K.Orkisz(2003). RTLinux system czasu rzeczywistego. Helion, Gliwice. [4] http://www.kamami.pl [5] http://www.ethernut.de/en [6] Elektronika Praktyczna 2006-2007 SCR 2017 49

Dziękuję za uwagę!!! SCR 2017 50