Systemy Czasu Rzeczywistego (SCR)



Podobne dokumenty
Systemy Czasu Rzeczywistego (SCR)

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

Czujniki obiektowe Sterowniki przemysłowe

Jądro systemu operacyjnego

Systemy wbudowane. Paweł Pełczyński

2. Architektura mikrokontrolerów PIC16F8x... 13

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

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

Szkolenia specjalistyczne

Wykład 3: Implementacja programów wbudowanych

WPROWADZENIE Mikrosterownik mikrokontrolery

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

MIKROKONTROLERY I MIKROPROCESORY

Prezentacja systemu RTLinux

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

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

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

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

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

Architektury systemów czasu rzeczywistego RTOS. Wykonał: Bartłomiej Bugański

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

Programowanie mikrokontrolerów AVR

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

System komputerowy. System komputerowy

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

Inteligentny czujnik w strukturze sieci rozległej

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

Podstawowe zagadnienia

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

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

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

Politechnika Białostocka

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Systemy Czasu Rzeczywistego (SCR)

Wstęp Architektura... 13

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

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

Wprowadzenie do systemów operacyjnych

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

SYSTEMY OPERACYJNE. kik.pcz.czest.pl/so. (C) KIK PCz Materiały pomocnicze 1 PROWADZI: PODSTAWOWA LITERATURA: ZAJĘCIA: STRONA

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

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)

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

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

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

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

UNIWERSALNA KARTA PCI RS-232

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

ISBN Copyright by Wydawnictwo BTC Legionowo 2008

Programator procesorów rodziny AVR AVR-T910

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

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

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

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

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Zestaw Startowy EvB. Więcej informacji na stronie:

PRZEWODNIK PO PRZEDMIOCIE

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

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

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

Politechnika Śląska Wydział Elektryczny Katedra Mechatroniki. Koncepcja przyłączania mikroinstalacji prosumenckich (gniazd) do laboratorium ilabepro

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

Systemy Czasu Rzeczywistego (SCR)

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

Wykład 2. Mikrokontrolery z rdzeniami ARM

dokument DOK wersja 1.0

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

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

Konstrukcja systemu telemetrycznego z zastosowaniem technologii internetowych

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

Systemy wbudowane Mikrokontrolery

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

KAmduino UNO. Rev Źródło:

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

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Programator AVR USBasp

Działanie systemu operacyjnego

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

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

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

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

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

Komputery przemysłowe i systemy wbudowane

Specjalność uzupełniająca

11.Mikrokomputeryjednoukładowe

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

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

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

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

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

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Transkrypt:

Systemy Czasu Rzeczywistego (SCR) System operacyjny czasu rzeczywistego w praktyce: - przykładowa platforma sprzętowo-programowa ZL9AVR+ Nut/OS Politechnika Gdańska Wydział Elektrotechniki i Automatyki Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok II, semestr IV Opracowanie: dr inż. Tomasz Rutkowski Katedra Inżynierii Systemów Sterowania 1

Krótka charakterystyka wybranych Systemów Operacyjnych Czasu Rzeczywistego 2

Popularne systemy SOCR QNX Neutrino QNX, to zdaniem wielu (np. AMD, IBM, Cisco Systems) najlepszy i jednocześnie najbardziej zaawansowany oraz przyszłościowy, rygorystyczny (realizujący solidne wymagania czasowe) system operacyjny czasu rzeczywistego. Jest pierwszym w historii systemem wielozadaniowym i wielodostępnym przeznaczonym dla mikrokomputerów IBM PC. Wykorzystuje architekturę mikrojądra, które od wersji 6.0 systemu zajmuje 8kB (jądro systemu UNIX to co najmniej 700kB). QNX ma strukturę modułową oraz architekturę opartą o przesyłanie komunikatów (model klient serwer). Wysoko posunięta modularność i skalowalność systemu. Komunikacja pomiędzy procesami znajdującymi się na odległych węzłach sieci jest tak samo prosta, jak w obrębie jednego komputera. 3

Popularne systemy RTOS QNX Neutrino (cd.) QNX daje możliwość zdeterminowania czasu reakcji na zdarzenia występujące w systemie. QNX dzięki rozbudowanym możliwościom definiowania priorytetów, jest stosowany jako system służący do sterowania automatyką przemysłową, gdzie pewne zdarzenia są krytyczne (np. otwarcie zaworu bezpieczeństwa w zbiorniku kiedy gwałtownie wzrasta ciśnienie) i muszą być zawsze obsłużone na czas. Na bazie QNX opracowywane są również systemy SCADA. QNX jest również wykorzystywany jako platforma dla baz danych. 4

Popularne systemy RTOS VxWorks- Jeden z najbardziej profesjonalnych systemów czasu rzeczywistego firmy Wind River Systems. Należy do grupy nowoczesnych systemów operacyjnych opartych na koncepcji wielozadaniowości, komunikacji między zadaniami, mikrojądrze oraz procedurach obsługi przerwań. Posiada zaimplementowane funkcje komunikacji sieciowej. Możliwość rozwoju systemu docelowego zgodnie ze standardem ANSI C i C++ oraz POSIX. Bogaty zestaw dodatkowych pakietów oprogramowania: wykorzystanie wieloprocesorowości, biblioteki graficzne, narzędzia do testowania i uruchamiania aplikacji, wirtualne maszyny Javy, symulator środowiska docelowego. 5

Popularne systemy SOCR RTLinux Występuje w dwóch wersjach, komercyjnej RT Linux PRO i w ogólnodostępnej GPL RTLinux (darmowy i udostępniany wraz z całym kodem źródłowym). Jego cechą charakterystyczną jest to, że współistnieją w nim: jądro czasu rzeczywistego RTCore i jądro Linuksa. RTLinux szybko potrafi obsługiwać przerwania w warunkach dużego obciążenia obliczeniami, przy jednoczesnych znikomych operacjach dyskowych. Architektura RTLinux wymusza jednak pewien styl programowania (podział na dwie części: obliczeniową i operacje dyskowe, sieciowe). Typowa aplikacja składa się z zadań czasu rzeczywistego, które współpracują bezpośrednio ze sprzętem, a zadania Linuxa wykonują obliczenia nie wymagające reżimu czasu rzeczywistego. 6

Popularne systemy SOCR OS-9 To wielozadaniowy system operacyjny opracowany przez firmę Microware dla wbudowanych systemów sterujących opartych o procesory rodziny Motorola. System OS-9 ma strukturę warstwową, złożoną z jądra, niezależnej od sprzętu warstwy podprogramów zarządzającej zbiorami (plikami) oraz warstwy podprogramów sterujących pracą urządzeń zewnętrznych. Jedynym obowiązkowym elementem systemu jest jądro. Podstawowymi językami programowania aplikacji są C i asembler, dodatkowo są dostępne kompilatory Basic i Pascal. OS-9 nie można zakalikować do systemu rozproszonego ponieważ mechanizmy komunikacji i synchronizacji zadań są ograniczone do pojedynczego komputera. 7

Popularne systemy SOCR Windows CE Systemem czasu rzeczywistego Microsoftu o słabych wymaganiach czasowych. Posiada architekturę modułową. Zoptymalizowany dla urządzeń o niewielkiej ilości pamięci jądro systemu wymaga do uruchomienia około 1MB RAM. Microsoft opracował dedykowaną wersję systemu do układów elektronicznych urządzeń instalowanych w samochodach (np. zarządza sprzętem audio auta) Szerokie pole do popisu wszędzie tam, gdzie konieczne jest wykorzystanie wszelkich najnowszych technologii, a zwłaszcza tych związanych z multimediami. Można tworzyć bardzo wydajne konsole służące do gier oraz instalować w nich różne pakiety biurowe. 8

Popularne systemy SOCR Windows XP Embendded Windows XP Embedded, nie jest zasadniczo przeznaczony do przetwarzania w czasie rzeczywistym. Jego budowa jest jednak tak zorganizowana, że łatwo można go wzbogacić o takie możliwości. Służą do tego specjalne komponenty oraz rozwiązania firm trzecich. Windows XP Embedded składa się dokładnie z tych samych plików binarnych, co jego brat, przeznaczony na komputery typu desktop, tyle że niektóre zostały nieznacznie zmodyfikowane lub uproszczone. Posiada architekturę modułową. Znajduje zastosowanie u producentów bankomatów, terminale graficzne, urządzeń przenośnych, konsoli do gier oraz tych którzy wykorzystują najnowsze technologie multimedialne. 9

Popularne systemy SOCR µc/os-ii: ecos: przenośny skalowalny, z wywłaszczeniem, wielozadaniowe jądro ładowane z ROM, platforma docelowa to m.in. MS-Win, DOS, x86, 68HC11, ARM wysoce konfigurowalny, 32 lub 64 bitowy, oparty na koncepcji kodu źródłowego (nie jest to kolejny Linux), wysoce zoptymalizowany, zawiera bogatą bibliotekę matematyczną, komunikacyjną i system plików, platforma docelowa to m. in.: Windows, Sun, Linux, x86, ARM7 Przykłady darmowych SOCR dla rodziny AVR: AvrX, EtherNut- Nut/OS, TinyOS, XMK - extreme Minimal Kernel, FreeRTOS, 10

Systemy SOCR - obecnie Obecnie dostępnych jest ponad kilkadziesiąt systemów SOCR lub mających znamiona systemów operacyjnych czasu rzeczywistego. Część z nich to kompletne systemy operacyjne, w skład których wchodzą jądro, sterowniki I/O, systemy plików, usługi sieciowe... Niektóre dostępne są na licencji GPL a niektóre odpłatnie. Ceny wahają się od kilkuset do kilkuset tysięcy zł, przy czym cena zależy od dodatkowych modułów. 11

Systemy SOCR małe zestawienie QNX Neutrino 6.2 WinCE.NET VXWorks AE 1.1 RedHat Linux 1.1 Wydajność 9 7 5 2 Instalacja i konfiguracja 8 5 4 3 Architektura (RTOS) 9 7 7 3 Ilość API 7 7 8 5 Obsługa internetu 8 9 9 8 Narzędzia 8 8 8 8 Dokumentacja i wsparcie tech. 7 5 4 2 Średni wynik 8.0 6.9 6.4 4.4 Źródło: Dedicated Systems Experts, sierpień 2002 12

ZL9AVR+ Nut/OS Platforma sprzętowa 13

Platforma sprzętowa 14

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 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 15

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

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, Platforma sprzętowa -baza możliwość zastosowania zewnętrznego źródła napięcia referencyjnego dla przetwornika A/C, liczba linii I/O: 53. 17

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

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. 19

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

Wyświetlacz alfanumeryczny LCD (2x16 znaków) Moduł 16-przyciskowej klawiatury matrycowej 4 4 Platforma sprzętowa - elementy dodatkowe Moduł czytnika kart SD/MMC 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 21

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

ZL9AVR + Nut/OS Platforma programowa 23

Czym jest Nut/OS? Wielowątkowy system operacyjny czasu rzeczywistego (RTOS) Opracowany został przez niemiecką firmę Egnite Platforma programowa -Nut/OS 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 24

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ń Platforma programowa -Nut/OS Powyższe mechanizmy umożliwiają uruchomienie stosu TCP/IP (Nut/Net)!!! 25

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. 26

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 27

Kod startowy Nut/OS, nutinit.o: kod startowy systemu, uruchamiany po zerowaniu mikorkontrolera, Platforma programowa -Nut/OS 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, 28

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 ). 29

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 Przełączanie wątków w tej metodzie jest możliwe jedynie gdy obecnie wykonujący się wątek dobrowolnie zwolni procesor 30

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, 31

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. 32

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

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

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

Platforma programowa - Nut/OS, wątki (podstawowe funkcje) void NutSleep(u_long ms); 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ń!!! 36

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

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 38

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. 39

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

Przykład 1: interfejs UART0 41

Przykład 1 42

Przykład 1 43

Przykład 1 44

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. 45

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). 46

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. 47

Przykład 2: podstawy wątków 48

Przykład 2 49

Przykład 2 50

Przykład 2 51

Przykład 2 52

Przykład 3: prosty serwer WWW 53

Przykład 3 54

Przykład 3 55

Przykład 3 56

Przykład 3 57

Przykład 3 58

Przykład 3 59

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 60

Dziękuję za uwagę!!! 61