Mikrokontrolery STM32 Praca pod kontrolą FreeRTOS
|
|
- Jadwiga Olszewska
- 8 lat temu
- Przeglądów:
Transkrypt
1 Dodatkowe materiały >> Mikrokontrolery STM32 Praca pod kontrolą FreeRTOS System operacyjny Zadaniem każdego systemu operacyjnego jest zarządzanie sprzętem w taki sposób, aby zadania stawiane przez użytkownika były wykonane przy optymalnym wykorzystaniu zasobów i mocy obliczeniowej. Z systemami operacyjnymi stykamy się praktycznie codziennie używając komputerów osobistych. Współczesne komputery mają bardzo duże zasoby sprzętowe i szybkie, wielordzeniowe mikroprocesory. W związku z tym, że pojęcie systemu operacyjnego jest najczęściej kojarzone właśnie z takimi komputerami, to trudno jest sobie wyobrazić, że tak niewielki układ jak mikrokontroler, może również pracować pod kontrolą systemu operacyjnego. Złożoność zadań, z jakimi ma do czynienia system operacyjny urządzenia embedded, jest przeważnie mniejsza, niż w przypadku komputerów osobistych. Niemniej, nawet te mocno uproszczone OS (Operating System) są bardzo zaawansowane. Z tego powodu powstało wiele firm, których głównym zadaniem jest pisanie i rozwijanie wbudowanych systemów operacyjnych. Wielozadaniowy system operacyjny czasu rzeczywistego Pracując z komputerem często korzysta się z wielu programów pracujących jednocześnie. Można mieć włączony edytor tek- Rys. 1. W przeciwieństwie do świata komputerów osobistych, gdzie panują pewne standardy, w świecie mikrokontrolerów jest ogromna różnorodność dostępnych opcji i rozwiązań układowych. W konsekwencji, każda rodzina mikrokontrolerów wymaga przygotowanej specjalnie dla niej dystrybucji systemu operacyjnego. Sytuacja jest trochę lepsza, gdy używany jest mikrokontroler z rdzeniem wykorzystywanym przez wielu producentów, czyli na przykład z rdzeniem firmy ARM. Informacje podane w artykule dotyczą przede wszystkim mikrokontrolerów STM32, wyposażonych w rdzeń Cortex M3. stu, przeglądarkę internetową, odtwarzacz muzyki itp. Z punktu widzenia sprzętu, system operacyjny ma do dyspozycji jeden procesor (współcześnie stosowane są procesory wielordzeniowe, ale w tym opisie użyjemy uproszczonej, jednordzeniowej, wersji), a zatem jak to się dzieje, że tyle zadań realizowanych jest równocześnie? Odpowiedź jest bezpośrednio związana z prędkością, z którą pracują współczesne procesory. Dzięki dużej częstotliwości taktowania rdzeni każde zadanie uruchomione w systemie otrzymuje do swojej dyspozycji procesor tylko na pewien czas. Jeśli ten czas będzie dostatecznie krótki, czyli przełączanie pomiędzy uruchamianymi zadaniami będzie dostatecznie szybkie, to użytkownik korzystający z komputera odniesie wrażenie, że wszystkie jego programy pracują jednocześnie. Na rys. 1 przedstawiono diagram pracy wielozadaniowego OS z uruchomionymi jednocześnie kilkoma zadaniami. Na rys. 1a pokazano, że wszystkie trzy zadania są pozornie wykonywane jednocześnie. Dopiero rys. 1b, który przedstawia w dużym powiększeniu zachowanie się procesów pokazuje, że każde zadanie wykonywane jest tylko przez pewien czas, a pozostałe są wstrzymane i czekają na swoją kolej. Jest to najprostsza forma systemu operacyjnego, gdzie kolejkowanie odbywa się przy pomocy algorytmu karuzelowego, omówionego w dalszej części tego artykułu. Wymagania stawiane systemom wbudowanym wymusiły powstanie systemów operacyjnych czasu rzeczywistego (RTOS Real Time Operating System). W przeciwieństwie do dużych komputerów, w systemie mikroprocesorowym często zdarza się, że wykonanie danego zadania musi mieścić się w ściśle określonym przedziale czasu. Ma to znaczenie m.in. dla procesów przemysłowych, ale przede wszystkim wszędzie tam, gdzie od maszyn zależy życie i bezpieczeństwo ludzi. RTOSy dzielą się dodatkowo na grupy, w zależności od tego, w jakim stopniu jest się w stanie ocenić czas wykonywania operacji. Z tej perspektywy można rozróżnić miękkie i twarde systemy operacyjne czasu rzeczywistego. Pierwsze pozwalają określić czas wykonywania zadania z pewną dokładnością, natomiast drugie mają do spełnienia najwyższe wymagania i muszą być całkowicie przewidywalne. System operacyjny czasu rzeczywistego z wywłaszczeniami zadań Zazwyczaj schemat pracy systemów mikroprocesorowych polega na wykonaniu instrukcji przez jakąś funkcję (zadanie) i czekaniu na wystąpienie zdarzenia. Podczas oczekiwania na zdarzenie lub upłynięcie 116 ELEKTRONIKA PRAKTYCZNA 5/2009
2 Praca pod kontrolą FreeRTOS Rys. 2. określonego czasu, mikrokontroler nie robi nic, poza wykonywaniem pustych instrukcji. W układach z wbudowanym systemem operacyjnym w czasie oczekiwania na zdarzenie będą uruchomione pozostałe, oczekujące na czas procesora, zadania. Sytuację taką przedstawiono na rys. 2. Nie można opisanego powyżej zachowania wprost nazwać wywłaszczeniem, ponieważ w tym przypadku przerywane zadanie tak naprawdę nie jest wstrzymywane, bo i tak bezproduktywnie oczekuje na jakieś zdarzenie lub po prostu odlicza określony czas. Rys. 2 ilustruje przerwanie ZADANIA A w momencie jego oczekiwania, aż upłynie Rys. 3. czas 100 ms. W tym czasie RTOS oddaje procesor do dyspozycji ZADANIA B, o niższym priorytecie, niż ZADANIE A. Można sobie to wyobrazić w taki sposób, że ZADANIE A zajmuje się sterowaniem procesu wykonawczego (np. silnika) i tutaj nie mogą wystąpić fluktuacje czasu, natomiast ZADANIE B zajmuje się interfejsem użytkownika, który nie ma narzuconych krytycznych ram czasowych i może być wykonywane w wolnych chwilach procesora. Z prawdziwymi wywłaszczeniami (preemptive) zadań mamy zaś do czynienia wtedy, gdy system operacyjny zachowuje się podobnie, jak to przedstawiono na rys. 3, a więc wtedy, gdy obsługiwane zadanie jest przerywane podczas pracy na rzecz innego zadania o wyższym priorytecie, nie tolerującego zwłoki w obsłudze. W czasie pracy mikrokontroler może nie mieć żadnych zadań do obsługi, z tego powodu w systemie operacyjnym występuje ważny proces nazywany procesem bezczynności systemu Idle task. Idle task jest uruchamiany zawsze wtedy, gdy system nie ma żadnych zadań do realizacji. Proces bezczynności systemu zajmuje się czyszczeniem pamięci po zakończonych zadaniach, oraz, gdy faktycznie nie ma nic do zrobienia, może wprowadzać tryby obniżonego poboru mocy. Zazwyczaj priorytet tego zadania jest najniższy z możliwych (rys. 4). Algorytm szeregowania Algorytm szeregowania (scheduler planista), jest częścią jądra systemu i ma za zadanie optymalnie rozdzielić czas procesora oraz zasoby systemu mikroprocesorowego pomiędzy uruchomione zadania. Uwzględnia przy tym priorytety zadań i wymagania związane z czasem ich realizacji. Implementacja dobrego algorytmu szeregowania nie należy do łatwych, a jego skomplikowanie rośnie wraz z wymaganiami stawianymi przed systemem operacyjnym. Generalnie można rozróżnić kilka podstawowych rodzajów algorytmów szeregowania. Najprostszym jest algorytm karuzelowy, którego zasadę działania przedstawiono na rys. 5. Nazwa tego rodzaju planisty bardzo dobrze oddaje jego faktyczne zachowanie. Zadania wykonywane są w ustalonej kolejności, po czym proces się powtarza, czyli mamy swoistą karuzelę. W systemach operacyjnych czasu rzeczywistego algorytm karuzelowy w swej czystej postaci nie jest specjalnie użyteczny. Zgodnie z tym, co zostało już wcześniej napisane, w RTOS krytyczne zadania nie mogą czekać na swoją kolejkę, tylko muszą być wykonywane natychmiast, czyli muszą wywłaszczać procesy o niższych priorytetach. System operacyjny FreeRTOS FreeRTOS to system operacyjny czasu rzeczywistego z wywłaszczeniami. Jest to darmowe narzędzie open source i może być wykorzystywany w aplikacjach komercyjnych. Wszystkie niezbędne informacje do Rys. 4. ELEKTRONIKA PRAKTYCZNA 5/2009 Rys
3 Rys. 6. rozpoczęcia pracy z tym systemem, aktualna wersja do pobrania oraz forum dyskusyjne są dostępne na stronie internetowej W swojej podstawowej konfiguracji system FreeRTOS składa się z trzech plików źródłowych, które są wspólne dla wszystkich architektur mikrokontrolerów. Te pliki to: tasks.c, queue.c, list.c. Powyższe pliki to jądro systemu operacyjnego. Do poprawnej pracy w docelowym mikrokontrolerze wymagane są jeszcze pliki programów zapewniających komunikację pomiędzy sprzętem, a jądrem systemu. W sumie przygotowanych jest prawie 20 dystrybucji tego systemu (każda z przykładową aplikacją). Innymi słowy FreeRTOS można zaimplementować w niemal 20 różnych mikrokontrolerach. Oprócz mikrokontrolerów STM32, przygotowane są wersje systemu FreeRTOS dla: Atmel AVR, NXP (LPC2106, LPC2124, LPC2129), Microchip (PIC18, PIC24, dspic, PIC32), Freescale (Cold- Fire), Xilinx (Microblaze, PowerPC miękkie procesory do implementacji w układach FPGA), Texas Instruments (MSP430), LuminaryMicro (LM3Sxxxx rdzeń Cortex M3). Zaletą narzędzi open source jest dostępność wszystkich kodów źródłowych i możliwość ich edycji. W takim przypadku należy jednak swój kod również publikować. Wadą jest brak pewności, co do stabilności działania i braku błędów. Argumentem przemawiającym za stosowaniem w swoich aplikacjach systemu FreeRTOS jest dostępność również jego wersji komercyjnych (OpenRTOS i SafeRTOS). Dzięki temu, jeśli projekt stanie się bardziej wymagający, można skorzystać z systemów operacyjnych z pełnym wsparciem i certyfikatami bezpieczeństwa. System FreeRTOS jest w pełni skalowalny, co oznacza, że można dopasowywać jego stopień zaawansowania do wymagań (bardziej ograniczeń) projektu. Struktura plików systemu FreeRTOS Wszystkie projekty wykorzystujące system operacyjny FreeRTOS mają podobną strukturę plików, a przynajmniej programista powinien dążyć do jej standaryzacji. Powyższa filozofia pisania aplikacji dotyczy oczywiście wszystkich prac związanych z jakimkolwiek dojrzałym projektowaniem. Standaryzacja działań projektowych zawsze pozwala zaoszczędzić mnóstwo czasu i pieniędzy. Na rys. 6 zamieszczono zrzut ekranowy przedstawiający drzewo plików projektu wykorzystującego system FreeRTOS. System operacyjny FreeRTOS w swej podstawowej formie jest niezależny od sprzętu. Aby jądro systemu mogło nawiązać współpracę z danym mikrokontrolerem należy mu zaimplementować interfejs. We wszystkich przykładach, dostępnych na stronie domowej systemu FreeRTOS, kod zapewniający poprawną pracę z daną architekturą umieszczono w pliku port. c. Również we własnych projektach i przy tworzeniu nowej dystrybucji FreeRTOSa na nową platformę, należy stosować ten sam standard. Zadaniem kodu w pliku port. c jest konfiguracja do pracy oraz obsługa przerwań i wyjątków systemowych, o których była mowa w EP04/09, a które są ściśle związane z architekturą rdzeni Cortex M3 (np. timer SysTick, wyjątek PendSV). Rys. 7. Rys. 8. Zasada działania systemu FreeRTOS. Zadania (Tasks) i współprogramy (Co-routines) Procesy w systemie FreeRTOS mogą być realizowane na dwa sposoby: za pomocą zadań (task) lub współprogramów (Co-routines). Standardowo, zadania wykorzystywane są w systemach operacyjnych czasu rzeczywistego. Są to zupełnie niezależne procesy. Każde zadanie posiada swój własny kontekst, czyli z perspektywy takiego zadania, wszystkie rejestry i stos należą tylko do niego. O tym, które zadanie jest wykonywane w danym momencie, decyduje algorytm szeregowania (scheduler). Planista kontroluje uruchomione zadania, przerywa je i wznawia, a system operacyjny dba o przełączanie kontekstów. Każde zadanie posiada swój własny stos, którego zawartość umieszczona jest w pamięci RAM. Współprogramy działają podobnie do zadań, choć są pomiędzy nimi istotne różnice. Współprogramy dzielą jeden stos, a co za tym idzie, do swego działania potrzebują mniejszej ilości pamięci RAM. Ponadto, ważne jest, że zadania i współprogramy nie mogą się komunikować między sobą za pomocą kolejek i semaforów, a zadania zawsze są ważniejsze o współprogramów. Każde z zadań występujące w systemie FreeRTOS ma określony stan. W sumie wyróżniamy cztery możliwe stany, w których zadanie może być: Wykonywane (Running), zadanie aktualnie korzysta z zasobów mikrokontrolera. Gotowe do wykonywania (Ready), może być wykonywane, ale czeka na zwolnienie zasobów przez inne zadanie. Zablokowane (Blocked), zadanie czeka na zdarzenie, przykładowo upłynięcie zadanego czasu lub zewnętrzne przerwanie. Wstrzymane (Suspended), zadanie, które zostało wstrzymane nie jest uwzględniane przez planistę, ale może być wznowione. Możliwe przejścia pomiędzy wszystkimi stanami przestawiono na rys. 7. Zadania mają przypisany priorytet, przy czym priorytet 0 jest domyślnie nadany procesowi bezczynności systemu (Idle task). Współprogramy mają trzy dozwolone stany: Gotowe do wykonywania (Ready). Wykonywane (Running). Zablokowane (Blocked). Diagram przejść pomiędzy powyższymi stanami został zamieszczono na rys. 8. Konstrukcja i uruchamianie zadania w systemie FreeRTOS W dotychczasowych rozważaniach nie podejmowaliśmy tematu konstrukcji zadań. Każde zadanie w systemie operacyjnym FreeRTOS jest zazwyczaj funkcją, która musi być napisana według określonych standardów. Przykładowy fragment kodu zawierający puste zadanie zamieszczono na list. 1. Zarówno wartość zwracana przez funkcję, jak i argument są typu void. Argument przekazywany do funkcji zadania może służyć do przekazywania informacji każdego typu. 118 ELEKTRONIKA PRAKTYCZNA 5/2009
4 Praca pod kontrolą FreeRTOS List. 1. void vtaskx(void * pvparameters) // Tutaj kod realizowanego zadania List. 2. void vstartledtasks(unsigned portbase_type uxpriority) xtaskhandle xhandletaskled; // Tworzenie zadania xtaskcreate(vtaskled, ( signed portchar * ) LED, STACK_SIZE, NULL, uxpriority, &xhandletaskled); // Usuwanie zadania vtaskdelete(xhandletaskled); List. 3. void vtaskled(void * pvparameters) // Wprowadzenie opoznienia 500ms vtaskdelay(500/porttick_rate_ms); // Zmiana stanu wyprowadzenia PC6 (LD1) na przeciwny vhtoggleled(); List. 4. void vtaskled(void * pvparameters) Rys. 9. // Wprowadzenie opoznienia 500ms vtaskdelayuntil( &xlastflashtime, 500/portTICK_RATE_MS ); // Zmiana stanu wyprowadzenia PC6 (LD1) na przeciwny vhtoggleled(); Ważnym elementem konstrukcji funkcji zadania jest jego nieskończoność. Innymi słowy, kod zadania musi być umieszczony ELEKTRONIKA PRAKTYCZNA 5/2009 w pętli nieskończonej for lub while, czyli raz wywołane zdanie nigdy samoczynnie nie powróci do miejsca swojego wywołania. Zadania tworzone są za pomocą funkcji xtaskcreate(), a usuwane po wywołaniu funkcji vtaskdelete(). Literka v przed nazwą funkcji oznacza, że nie zwraca ona żadnej wartości. Rzecz jasna, funkcje tworzenia i usuwania zadania muszą mieć przekazane odpowiednie parametry. Sposób tworzenia, a następnie usuwania zadania przestawiono na list. 2. Proces bezczynności systemu (Idle task) jest tworzony automatycznie przez algorytm szeregowania, a więc nie wymaga jawnych operacji włączania. Komentarza wymaga lista argumentów funkcji tworzącej zadanie xtaskcreate(). Licząc od lewej strony, najpierw przekazujemy nazwę funkcji zadania, w tym przykładzie jest to vtaskled. Kolejnym argumentem jest nazwa zadania, która pozwala je zidentyfikować. Następnie określamy rozmiar stosu, czy będą przekazane jakieś parametry (NUL- L=brak), priorytet, a na końcu uchwyt do zadania, który może być dalej wykorzystywany do sterowania jego pracą. Usunięcie zadania ogranicza się do wywołania funkcji vtaskdelete() z uchwytem do zadania w argumencie. Podstawowe sterowanie zadaniami Poza tworzeniem i usuwaniem zadań, dobrze by było, gdyby system udostępniał mechanizmy pozwalające na wprowadzanie opóźnień czasowych, czy też wstrzymywanie i wznawianie wykonywania zadania. System operacyjny FreeRTOS udostępnia kilka funkcji API, pozwalających na sterowanie i kontrolę nad zadaniami. W celu wprowadzenia opóźnień w wykonywanym zadaniu mogą być użyte dwie funkcje: vtaskdelay() i vtaskdelayuntil(). Funkcja vtaskdelay() przyjmuje jeden argument, który jest liczbą taktów zegara systemu operacyjnego, na jaką dane zadanie zostanie zablokowane. Czym dokładnie są takty systemu operacyjnego, to będzie opisane w dalszej części tego artykułu, przy okazji przedstawiania pliku konfiguracyjnego systemu FreeRTOS. Tutaj wystarczy wiedzieć, że jest to najmniejszy kwant czasu rozróżniany przez OS. Istotne jest, że czas zablokowania jest ściśle związany z częstotliwością wymienionego wyżej zegara systemowego i zmiana tego parametru może spowodować zmiany opóźnień. W celu zabezpieczenia się przed taką ewentualnością, do wyznaczenia liczby taktów wykorzystuje się całkowite dzielenie przez stałą porttick_rate_ms, która pozwala obliczyć opóźnienia z dokładnością do jednego taktu. Na list. 3 przedstawiono zadanie, które zajmuje się cykliczną zmianą stanu wyprowadzeń mikrokontrolera, gdzie w roli funkcji opóźnienia wykorzystano vtaskdelay(). Fizyczną zmianą stanu wyprowadzenia zajmuje się poniższa funkcja vhtoggleled(): 119
5 void vhtoggleled(void) // Zamiana stanu wyprowadzenia PC6 na przeciwny GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction) ((1-GPIO_ ReadOutputDataBit(GPIOC, GPIO_Pin_ 6)))); Tworzenie nowej funkcji dla jednej linii kodu jest uzasadnione tym, że projekt powinien być tworzony w sposób warstwowy. Przedrostek nazwy funkcji zawierający literkę h nie jest przypadkowy, a oznacza, że funkcja działa wprost na sprzęcie. Takie podejście doskonale wpływa na czytelność projektu i zabezpiecza przed przypadkowym odwołaniem się do urządzeń peryferyjnych, ponieważ wiadomo, że tylko funkcje z przedrostkiem h mogą to robić. Generalnie, wykorzystywanie funkcji vtaskdelay() do sterowania pracą zadań cyklicznych, w szczególności takich, w których opóźnienia (częstotliwość) muszą być dokładne, nie jest dobrym pomysłem. Omawiana funkcja nie gwarantuje, że opóźnienia czasowe wprowadzane za jej pomocą będą zawsze tym zaprogramowanym. W przypadkach zadań, które wymagają dokładności w generowaniu zwłok czasowych dużo lepszym rozwiązaniem jest druga z funkcji opóźniających, a mianowicie vtaskdelay- Until(). Niedoskonałość funkcji vtaskdelay() wynika z tego, że od jednego jej wywołania do drugiego mogą upływać różne czasy, co nie jest uwzględniane. Problem przedstawiono na rys. 9. Jeśli w zadaniu wykorzystywane są instrukcje warunkowe, to sam kod zadania może się wykonywać przez różny okres czasu. Druga niejednoznaczność czasu wykonywania kodu zadania może wystąpić wtedy, gdy wystąpi przerwanie lub wywłaszczenie, co przedstawiono na rys. 9c. Funkcja vtaskdelayuntil() opóźnia wykonywanie kodu o czas obliczony na podstawie dwóch przekazanych argumentów. Pierwszy jest liczbą taktów systemu od chwili uruchomienia planisty, natomiast drugi liczba taktów, na jaką wykonywanie zadania ma być wstrzymane. W ten sposób, dodając do siebie obie wartości, funkcja API otrzymuje liczbę, po której osiągnięciu przez licznik taktów systemu operacyjnego, zostanie wznowione wykonywanie zablokowanego zadania. Dzięki takiemu podejściu, osiągnięto niezależność w stosunku do czasu wykonywania kodu samego zadania, czyli nie są istotne tutaj wywłaszczenia zadania itd. Wykorzystanie funkcji vtaskdelayuntil() przedstawiono na list. 4. Liczbę taktów systemu operacyjnego otrzymuje się za pomocą wywołania funkcji xtaskgettickcount(), natomiast liczbę taktów opóźnienia wyznaczono za pomocą całkowitego dzielenia przez stałą porttick_rate_ms. Każde zadanie ma swój ustalony priorytet. Naturalną konsekwencją tego jest potrzeba istnienia w systemie mechanizmów umoż- List. 5. void vstartledtasks(unsigned portbase_type uxpriority) xtaskhandle xhandletaskled; unsigned portbase_type uxtaskledpriority; // Tworzenie zadania xtaskcreate( vtaskled, ( signed portchar * ) LED, STACK_SIZE, NULL, uxpriority, &xhandletaskled); // Ustawienie priorytetu zadania vtaskpriorityset(xhandletaskled, 3); // Odczytanie priorytetu zadania uxtaskledpriority = uxtaskpriorityget(xhandletaskled); List. 6. #define configuse_preemption 1 #define configuse_idle_hook 0 #define configuse_tick_hook 0 #define configcpu_clock_hz ( ( unsigned portlong ) ) #define configtick_rate_hz ( ( portticktype ) 1000 ) #define configmax_priorities ( ( unsigned portbase_type ) 5 ) #define configminimal_stack_size ( ( unsigned portshort ) 128 ) #define configtotal_heap_size ( ( size_t ) ( 17 * 1024 ) ) #define configmax_task_name_len ( 16 ) #define configuse_trace_facility 0 #define configuse_16_bit_ticks 0 #define configidle_should_yield 1 /* Co-routine definitions. */ #define configuse_co_routines 0 #define configmax_co_routine_priorities ( 2 ) /*Set the following definitions to 1 to include the API function, or zero to exclude the API function*/ #define INCLUDE_vTaskPrioritySet 1 #define INCLUDE_uxTaskPriorityGet 1 #define INCLUDE_vTaskDelete 1 #define INCLUDE_vTaskCleanUpResources 0 #define INCLUDE_vTaskSuspend 1 #define INCLUDE_vTaskDelayUntil 1 #define INCLUDE_vTaskDelay 1 Rys. 10. Rys ELEKTRONIKA PRAKTYCZNA 5/2009
6 Praca pod kontrolą FreeRTOS liwiających odczytywanie priorytetu zadania oraz jego ustawianie. Do realizacji powyższych zadań utworzono funkcje uxtaskpriorityget() oraz vtaskpriorityset(). Wykorzystanie w programie przedstawionych funkcji przedstawiono na list. 5. Zadaniem tego programu List. 7. #define mainflash_task_priority ( tskidle_priority + 1 ) static void prvsetuphardware( void ); int main( void ) // Konfiguracja sprzetu prvsetuphardware(); // Uruchomienie zadan vstartledtasks( mainflash_task_priority ); // Uruchomienie planisty vtaskstartscheduler(); return 0; List. 8. void vtaskled1(void*); void vtaskled2(void*); void vtaskled3(void*); void vstartledtasks(unsigned portbase_type uxpriority) xtaskhandle xhandletaskled1, xhandletaskled2, xhandletaskled3; // Tworzenie zadania migania LD1 z f = 1Hz xtaskcreate(vtaskled1, ( signed portchar * ) LED1, ledstack_size, NULL, uxpriority, &xhandletaskled1); // Tworzenie zadania migania LD2 z f = 0.5Hz xtaskcreate(vtaskled2, ( signed portchar * ) LED2, ledstack_size, NULL, uxpriority, &xhandletaskled2); // Tworzenie zadania migania LD3 z f = 0.25Hz xtaskcreate(vtaskled3, ( signed portchar * ) LED3, ledstack_size, NULL, uxpriority, &xhandletaskled3); void vtaskled1(void * pvparameters) // Wprowadzenie opoznienia 1000ms vtaskdelayuntil( &xlastflashtime, 500/portTICK_RATE_MS ); // Zmiana stanu wyprowadzenia PC6 (LD1) na przeciwny vhtoggleled1(); void vtaskled2(void * pvparameters) // Wprowadzenie opoznienia 2000ms vtaskdelayuntil( &xlastflashtime, 1000/portTICK_RATE_MS ); // Zmiana stanu wyprowadzenia PC7 (LD2) na przeciwny vhtoggleled2(); void vtaskled3(void * pvparameters) ELEKTRONIKA PRAKTYCZNA 5/2009 jest po utworzeniu nowego zadania zmiana priorytetu, a następnie jego odczyt. Wiemy już, że każde zadanie może być w jednym z kilku stanów. System operacyjny FreeRTOS umożliwia wstrzymywanie i wznawianie zadania, odpowiednio za po- // Wprowadzenie opoznienia 500ms vtaskdelayuntil( &xlastflashtime, 2000/portTICK_RATE_MS ); // Zmiana stanu wyprowadzenia PC8 (LD3) na przeciwny vhtoggleled3(); mocą funkcji: vtasksuspend() i vtaskresume(). Wstrzymywanie zadania jest bardzo proste i wymaga przekazania jedynie w argumencie do funkcji API uchwytu (nazwy) wstrzymywanego zadania. Jeśli np. chcemy wstrzymać zadanie LedTaskHandle, to wystarczy w kodzie umieścić linię: vtasksus pend(ledtaskhandle); Ciekawą możliwością jest wstrzymywanie zadania przez samego siebie. Można tego dokonać wywołując funkcję wtrzymującą z argumentem NULL: vtasksuspend(null);. Powyższy kod spowoduje wstrzymanie zadania, aż do momentu jego wznowienia za pomocą funkcji vtaskresume(), wywołanej w jakimś innym zadaniu uruchomionym w systemie. Komunikacja między uruchomionymi zadaniami, kolejki i semafory, synchronizacja procesów Podstawowym narzędziem, służącym do komunikacji pomiędzy zadaniami w systemie FreeRTOS, są kolejki (Queues). Mechanizm kolejek pozwana na przesyłanie informacji również pomiędzy zadaniami, a przerwaniami. Konstrukcja kolejek opiera się o kolejkę FIFO, co oznacza tyle, że pierwsza zapisana do niej dana będzie pierwszą odczytaną (Firt In/First Out). Zasadę działania wymiany informacji między zadaniami za pomocą kolejki ilustruje rys. 10, na którym przedstawiono proces komunikacji za pomocą kolejki czteroelementowej. ZADANIE A zapisuje bufor FIFO począwszy od pozycji zerowej (rys. 10a). Po zapisaniu trzech elementów ZADANIE B rozpoczyna odczytywanie zawartość kolejki, począwszy również od elementu zerowego. Ważne jest, że po każdym odczycie zawartość całej kolejki jest przesuwana o jedną pozycję w kierunku pozycji zerowej, co przedstawiono na rys. 10b. W ten sposób zawsze pierwszy z wpisanych do kolejki elementów będzie pierwszym odczytanym. Zarówno typ danych przechowywanych w kolejce, jak i jej rozmiar, są definiowane podczas tworzenia kolejki. Jeśli istnieje potrzeba przekazywania większych ilości danych, to można wykorzystać do tego celu wskaźniki, które będą zapisywane do kolejki, jednak w tym przypadku należy zadbać o to, aby zawsze było wiadomo, kto zapisał wskaźniki do kolejki. Tworzenie kolejki w systemie FreeRTOS może się odbywać przez wywołanie funkcji xqueuecreate(). W argumentach należy podać liczbę elementów kolejki i rozmiar każdego elementu w bajtach. Jeśli zatem przykładowo kolejka ma mieć rozmiar 5 elementów, a każdy ma mieć 2 bajty, to należy w programie umieścić kod: xqueue5x2 = xqueuecreate( 10, sizeof( unsigned portlong 2 ); 121
7 List. 9. void vhtoggleled1(void) GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction) ((1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6)))); void vhtoggleled2(void) GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction) ((1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7)))); void vhtoggleled3(void) GPIO_WriteBit(GPIOC, GPIO_Pin_8, (BitAction) ((1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_8)))); Oczywiście nie można zapominać o utworzeniu wcześniej zmiennej xqueue5x2 typu xqueuehandle. Semafory są przede wszystkim stosowane do synchronizacji zadań (lub zadań i przerwań) oraz wykluczenia nieuprawnionych dostępów. Zasadę działania semafora binarnego przedstawiono na rys. 11. Załóżmy, że nieaktywny semafor blokuje wykonywanie zadania, natomiast jego aktywacja wywołuje nadanie zadaniu statusu gotowego do wykonywania. Sytuacja, w której semafor jest nieaktywny, a zadanie jest zablokowane, przedstawiono na rys. 11a. W tym przypadku wartość semafora ustawiona jest na 0 (wartość umowna, wszystko zależy od przyjętej logiki). Jeśli teraz jakiś wyjątek, przykładowo przerwanie zewnętrzne spowoduje aktywowanie semafora, czyli ustawienie jego wartości na 1, to jest to znak dla systemu operacyjnego, aby zmienić stan zadania z zablokowanego na gotowe do wykonywania (rys. 11b) Konfiguracja systemu FreeRTOS. Plik konfiguracyjny FreeRTOSConfig.h Podstawowe ustawienia systemu, takie jak częstotliwość taktowania CPU, są ustalane w pliku konfiguracyjnym FreeRTOSConfig.h. Jego fragment zamieszczono na list. 6. Pierwsza sekcja konfiguruje parametry pracy, natomiast druga włącza lub wyłącza poszczególne funkcje API odpowiedzialne za sterowanie zadaniami. Jak nietrudno się domyślić, wartość 1 włącza możliwość korzystania z funkcji, a 0 wyłącza. Warto o tym pamiętać, bo czasem może się zdarzyć, że nie wiadomo z jakiego powodu np. funkcje opóźniające nie chcą działać, a przyczyna jest bardzo prosta nie włączono obsługi tych funkcji w pliku FreeRTOSConfig.h. Z przedstawionego na list. 6 programu wynika, że w tym przypadku włączono wszystko, poza funkcją vtaskcleanupresources(). Sekcja ustawiania parametrów systemu umożliwia dostosowanie właściwości OS do wymagań aplikacji. Ustawiane parametry pracy systemu to m.in.: configuse_preemption decyduje, czy ma być używane wywłaszczanie (preemption). configuse_idle_hook - ustawienie wartości 1 spowoduje włączenie obsługi funkcji vapplicationidlehook(), która będzie wywoływana zawsze podczas procesu bezczynności systemu. Jest to stosunkowo prosty mechanizm pozwalający na wprowadzanie mikrokontrolera w tryb obniżonego poboru mocy. configcpu_clock_hz informuje jądro systemu o częstotliwości pracy mikrokontrolera; wartość domyślna to 72 MHz. configtick_rate_hz określa zegar OS, domyślnie 1kHz. configmax_priorities definiuje maksymalną liczba priorytetów. configminimal_stack_size określa minimalny rozmiar stosu. configmax_task_name_len definiuje maksymalną długość nazwy zadania. Aplikacja wykorzystująca system FreeRTOS do obsługi wielu zadań Po tym opisie teoretycznym na temat działania wbudowanych systemów operacyjnych, a w szczególności systemu FreeRTOS, przejdziemy do prostego przykładu praktycznego, ilustrującego sposób budowania aplikacji działającej w oparciu o ten system operacyjny. Wykonany będzie prosty program mający za zadanie sterowanie trzema zadaniami, a ściślej częstotliwością migotania trzech diod: LD1, LD2, LD3. Na list. 7 przedstawiono główną funkcję programu (main()), której zadaniem jest konfiguracja systemu operacyjnego do pracy, uruchomienie zadań i przekazanie sterowania do jądra systemu FreeRTOS. Pierwszą czynnością wykonywaną przez mikrokontroler jest ustawienie wszystkich niezbędnych do poprawnej pracy, parametrów. Wykonuje to funkcja prvsetuphardware(). Jej zawartość niczym nie rożni się od stosowanej we wszystkich przykładach dostarczanych przez firmę STMicroelectronics funkcji RCC_Configuration() (EP11/08). Nazwa zmieniono, aby utrzymać konwencję przyjętą przez twórców systemu FreeRTOS. Po skonfigurowaniu sprzętu mikrokontroler przechodzi do uruchomienia zadań, a następnie aktywowany jest planista, czyli algorytm szeregowania funkcja vtaskstart- Scheduler(). Jeśli tylko aplikacja napisana jest poprawnie, to mikrokontroler nigdy nie wykona instrukcji return, następującej po włączeniu planisty. Od tego momentu, system operacyjny zajmuje się wykonywaniem uruchomionych zadań. Na list. 8 przedstawiono kod zadań sterujących pracą diod LD1, LD2 i LD3, natomiast na list. 9 funkcje obsługi wyprowadzeń dla diod LED. Diody będą migać z częstotliwością: LED1 1 Hz, LED2 0,5 Hz, LED3 0,25 Hz. Krzysztof Paprocki paprocki.krzysztof@gmail.com R E K L A M A 122 ELEKTRONIKA PRAKTYCZNA 5/2009
System operacyjny. Na rysunku przedstawiono diagram pracy wielozadaniowego OS z uruchomionymi jednocześnie kilkoma zadaniami.
System operacyjny Zadaniem każdego systemu operacyjnego jest zarządzanie sprzętem w taki sposób, aby zadania stawiane przez użytkownika były wykonane przy optymalnym wykorzystaniu zasobów i mocy obliczeniowej.
Prezentacja systemu RTLinux
Prezentacja systemu RTLinux Podstawowe założenia RTLinux jest system o twardych ograniczeniach czasowych (hard real-time). Inspiracją dla twórców RTLinux a była architektura systemu MERT. W zamierzeniach
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
FreeRTOS w PSOC5LP. Do czego służy i jak zaimplementować FreeRTOS w układach Cypress PSoC 5LP. v. 1.2 Bogdan Pankiewicz, marzec 2016, 2017
FreeRTOS w PSOC5LP Do czego służy i jak zaimplementować FreeRTOS w układach Cypress PSoC 5LP v. 1.2 Bogdan Pankiewicz, marzec 2016, 2017 1 Materiały źródłowe 2 [1] Elektronika Praktyczna, 5/2009, Krzysztof
SYSTEMY CZASU RZECZYWISTEGO - VxWorks
WZAJEMNE WYKLUCZANIE Wiele metod. Np. wyłączanie przerwań: funkcja() //... Int blokada = intlock(); // Obszar krytyczny, któremu nie możemy przerwać intunlock(blokada); wyłączanie wywłaszczania: funkcja()
Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego
System operacyjny czasu rzeczywistego (RTOS Real Time Operating System) jest programem bazowym ułatwiającym tworzenie programu użytkowego systemu mikroprocesorowego. System operacyjny czasu rzeczywistego
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Wbudowane systemy czasu rzeczywistego Wykład 14
Wbudowane systemy czasu rzeczywistego Wykład 14 Systemy operacyjne czasu rzeczywistego System czasu rzeczywistego (RTOS) to system operacyjny opracowany tak, by spełnić wymagania narzucone na czas wykonywania
Podstawowe zagadnienia
SWB - Systemy operacyjne w systemach wbudowanych - wykład 14 asz 1 Podstawowe zagadnienia System operacyjny System czasu rzeczywistego Systemy wbudowane a system operacyjny Przykłady systemów operacyjnych
3. Sygnały zegarowe i ich konfiguracja, mechanizmy bezpieczeństwa... 47
Spis treści 3 1. Rdzeń Cortex-M3...9 1.1. Firma ARM i jej wyroby...10 1.2. Rodzina rdzeni Cortex...12 1.3. Ogólne spojrzenie na architekturę rdzenia Cortex-M3...13 1.4. Rejestry podstawowe...16 1.5. Przestrzeń
2. Architektura mikrokontrolerów PIC16F8x... 13
Spis treści 3 Spis treœci 1. Informacje wstępne... 9 2. Architektura mikrokontrolerów PIC16F8x... 13 2.1. Budowa wewnętrzna mikrokontrolerów PIC16F8x... 14 2.2. Napięcie zasilania... 17 2.3. Generator
Planowanie przydziału procesora
Planowanie przydziału procesora Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Komponenty jądra związane z szeregowaniem Ogólna koncepcja planowania Kryteria oceny uszeregowania Algorytmy
Układy zegarowe w systemie mikroprocesorowym
Układy zegarowe w systemie mikroprocesorowym 1 Sygnał zegarowy, sygnał taktujący W każdym systemie mikroprocesorowym jest wymagane źródło sygnałów zegarowych. Wszystkie operacje wewnątrz jednostki centralnej
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM
SYSTEMY OPERACYJNE WYKLAD 6 - procesy
Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - procesy Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 Zasoby: PROCES wykonujący się program ; instancja programu
Archiwum DG 2016 PL-SOFT
2 1 to kompleksowe narzędzie ochrony Twoich danych genealogicznych utworzonych w programie Drzewo genealogiczne. Aplikacja nie wymaga instalacji na komputerze i jest uruchamiana bezpośrednio z dysku USB.
Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych
Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych B.1. Dostęp do urządzeń komunikacyjnych Sterowniki urządzeń zewnętrznych widziane są przez procesor jako zestawy rejestrów
Metody obsługi zdarzeń
SWB - Przerwania, polling, timery - wykład 10 asz 1 Metody obsługi zdarzeń Przerwanie (ang. Interrupt) - zmiana sterowania, niezależnie od aktualnie wykonywanego programu, spowodowana pojawieniem się sygnału
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
1.Wstęp. 2.Generowanie systemu w EDK
1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Szkolenia specjalistyczne
Szkolenia specjalistyczne AGENDA Programowanie mikrokontrolerów w języku C na przykładzie STM32F103ZE z rdzeniem Cortex-M3 GRYFTEC Embedded Systems ul. Niedziałkowskiego 24 71-410 Szczecin info@gryftec.com
Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI
Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI plan Cechy, właściwości procesów Multitasking Scheduling Fork czym jest proces? Działającą instancją programu Program jest kolekcją
1. Tworzenie nowego projektu.
Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty
Wielozadaniowość w systemie Microsoft Windows
Wielozadaniowość w systemie Microsoft Windows mgr inż. Tomasz Jaworski tjaworski@kis.p.lodz.pl http://tjaworski.kis.p.lodz.pl/ Idea wielozadaniowości Proces główny Wątki Algorytm szeregowania ustala kolejność
Planowanie przydziału procesora
Dariusz Wawrzyniak Plan wykładu Komponenty jądra związane z szeregowaniem Ogólna koncepcja planowania Kryteria oceny algorytmów planowania Algorytmy planowania (2) 1 Komponenty jądra w planowaniu Planista
1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33
Spis treści 3 1. Wprowadzenie...11 1.1. Wstęp...12 1.2. Mikrokontrolery rodziny ARM...13 1.3. Architektura rdzenia ARM Cortex-M3...15 1.3.1. Najważniejsze cechy architektury Cortex-M3... 15 1.3.2. Rejestry
Przerwania, polling, timery - wykład 9
SWB - Przerwania, polling, timery - wykład 9 asz 1 Przerwania, polling, timery - wykład 9 Adam Szmigielski aszmigie@pjwstk.edu.pl SWB - Przerwania, polling, timery - wykład 9 asz 2 Metody obsługi zdarzeń
Rozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Instrukcja użytkownika ARSoft-WZ1
05-090 Raszyn, ul Gałczyńskiego 6 tel (+48) 22 101-27-31, 22 853-48-56 automatyka@apar.pl www.apar.pl Instrukcja użytkownika ARSoft-WZ1 wersja 3.x 1. Opis Aplikacja ARSOFT-WZ1 umożliwia konfigurację i
Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne
Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...
Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.
Laboratorium 7 Wstęp Jednym z podstawowych własności Javy jest wielowątkowość. Wiąże się to z możliwością współbieżnego wykonywania różnych operacji w ramach pojedynczej wirtualnej maszyny Javy (JVM).
1.2. Architektura rdzenia ARM Cortex-M3...16
Od Autora... 10 1. Wprowadzenie... 11 1.1. Wstęp...12 1.1.1. Mikrokontrolery rodziny ARM... 14 1.2. Architektura rdzenia ARM Cortex-M3...16 1.2.1. Najważniejsze cechy architektury Cortex-M3... 16 1.2.2.
Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski
Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej Systemy wbudowane Witold Kozłowski Zakład Fizyki i Technologii Struktur Nanometrowych 90-236 Łódź, Pomorska 149/153 https://std2.phys.uni.lodz.pl/mikroprocesory/
Systemy wbudowane. Systemy operacyjne czasu rzeczywistego
Systemy wbudowane Systemy operacyjne czasu rzeczywistego Definicje System czasu rzeczywistego to taki, w którym wynik przetwarzania nie zależy tylko i wyłącznie od jego logicznej poprawności, ale również
1 second UPS. Poziom trudności: łatwy. Wersja dokumentacji: 1.3. Aktualizacja: 06.02.2015. Beckhoff Automation Sp. z o. o.
Poziom trudności: łatwy Wersja dokumentacji: 1.3 Aktualizacja: 06.02.2015 Beckhoff Automation Sp. z o. o. Spis treści 1. Wprowadzenie... 2 2. Domyślne wywołanie bloku FB_S_UPS... 3 3. Domyślne wywołanie
Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI
Inż. Kamil Kujawski Inż. Krzysztof Krefta Wykład w ramach zajęć Akademia ETI Metody programowania Assembler Język C BASCOM Assembler kod maszynowy Zalety: Najbardziej efektywny Intencje programisty są
Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski
Struktura systemu operacyjnego Schemat budowy systemu operacyjnego model warstwowy Schemat budowy systemu operacyjnego części składowe Większość systemów operacyjnych opiera się o koncepcję jądra, która
Przejrzystość, intuicyjny charakter i łatwość oprogramowania sterowników FATEK.
Darmowe oprogramowanie narzędziowe sterowników PLC FATEK. Przejrzystość, intuicyjny charakter i łatwość oprogramowania sterowników FATEK. WinProllader jest prostym interfejsem użytkownika służącym do programowania
Windows 10 - Jak uruchomić system w trybie
1 (Pobrane z slow7.pl) Windows 10 - Jak uruchomić system w trybie awaryjnym? Najprostszym ze sposobów wymuszenia na systemie przejścia do trybu awaryjnego jest wybranie Start a następnie Zasilanie i z
JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI
JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI Gdy wywołujesz daną funkcję, program przechodzi do tej funkcji, przekazywane są parametry i następuje wykonanie ciała funkcji. Gdy funkcja zakończy działanie, zwracana
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać
Programowanie współbieżne Wykład 2. Iwona Kochańska
Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas
Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Modułowy programowalny przekaźnik czasowy firmy Aniro.
Modułowy programowalny przekaźnik czasowy firmy Aniro. Rynek sterowników programowalnych Sterowniki programowalne PLC od wielu lat są podstawowymi systemami stosowanymi w praktyce przemysłowej i stały
Organizacja typowego mikroprocesora
Organizacja typowego mikroprocesora 1 Architektura procesora 8086 2 Architektura współczesnego procesora 3 Schemat blokowy procesora AVR Mega o architekturze harwardzkiej Wszystkie mikroprocesory zawierają
Materiały pomocnicze 1
JĄDRO SYSEMU Jądro systemu stanowi główny interfejs między sprzętem (surową maszyną), a systemem operacyjnym. JĄDRO SYSEMU inne elementy systemu jądro systemu surowa maszyna 2 PODSAWOWE UDOGODIEIA SPRZĘOWE
Programowanie mikrokontrolerów AVR
Programowanie mikrokontrolerów AVR Czym jest mikrokontroler? Mikrokontroler jest małym komputerem podłączanym do układów elektronicznych. Pamięć RAM/ROM CPU wykonuje program Układy I/O Komunikacje ze światem
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Struktury. Przykład W8_1
Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla
Systemy wbudowane - wykład 9. Systemy czasu rzeczywistego Notes. Systemy czasu rzeczywistego Notes. Systemy czasu rzeczywistego Notes.
Systemy wbudowane - wykład 9 Przemek Błaśkiewicz 26 maja 2017 1 / 93 Systemy czasu rzeczywistego sterowanie silnikiem rakietowym; 2 / 93 Systemy czasu rzeczywistego sterowanie silnikiem rakietowym; system
SYSTEMY OPERACYJNE WYKLAD 6 - wątki
Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - wątki Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 1. Wątki 2. Planowanie przydziału procesora (szeregowanie
Opracował: Jan Front
Opracował: Jan Front Sterownik PLC PLC (Programowalny Sterownik Logiczny) (ang. Programmable Logic Controller) mikroprocesorowe urządzenie sterujące układami automatyki. PLC wykonuje w sposób cykliczny
Planowanie przydziału procesora
Planowanie przydziału procesora Ogólna koncepcja planowania Tryb decyzji określa moment czasu, w którym oceniane i porównywane są priorytety procesów i dokonywany jest wybór procesu do wykonania. Funkcja
MONITOROWANIE WINDOWS Z NETCRUNCHEM 7 P A G E 1
MONITOROWANIE WINDOWS Z NETCRUNCHEM 7 P A G E 1 NetCrunch 7 monitoruje systemy MS Windows bez instalowania dodatkowych agentów. Jednakże, ze względu na zaostrzone zasady bezpieczeństwa, zdalne monitorowanie
Procesy, wątki i zasoby
Procesy, wątki i zasoby Koncepcja procesu i zasobu, Obsługa procesów i zasobów, Cykl zmian stanów procesu i kolejkowanie, Klasyfikacja zasobów, Wątki, Procesy i wątki we współczesnych systemach operacyjnych.
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
Programator procesorów rodziny AVR AVR-T910
Programator procesorów rodziny AVR AVR-T910 Instrukcja obsługi Opis urządzenia AVR-T910 jest urządzeniem przeznaczonym do programowania mikrokontrolerów rodziny AVR firmy ATMEL. Programator podłączany
Materiały dodatkowe. Simulink Real-Time
Katedra Inżynierii Systemów Sterowania Materiały dodatkowe Simulink Real-Time Opracowali: mgr inż. Tomasz Karla Data: Listopad, 2016 r. Wstęp Simulink Real-Time jest środowiskiem pozwalającym na tworzenie
Zarządzanie procesorem
Zarządzanie procesorem 1. Koncepcja procesu 2. Blok kontrolny procesu 3. Planowanie (szeregowanie) procesów! rodzaje planistów! kryteria planowania 4. Algorytmy planowania! FCFS! SJF! RR! planowanie priorytetowe!
3. Sieć PLAN. 3.1 Adresowanie płyt głównych regulatora pco
3. Sieć PLAN Wszystkie urządzenia podłączone do sieci plan są identyfikowane za pomocą swoich adresów. Ponieważ terminale użytkownika i płyty główne pco wykorzystują ten sam rodzaj adresów, nie mogą posiadać
Wstęp do Informatyki. Klasyfikacja oprogramowania
Wstęp do Informatyki Klasyfikacja oprogramowania Oprogramowanie komputerowe Funkcjonalność komputera jest wynikiem zarówno jego budowy, jak i zainstalowanego oprogramowania Komputer danej klasy znajduje
Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6
Zawartość Wstęp... 1 Instalacja... 2 Konfiguracja... 2 Uruchomienie i praca z raportem... 6 Wstęp Rozwiązanie przygotowane z myślą o użytkownikach którzy potrzebują narzędzie do podziału, rozkładu, rozbiórki
MIKROKONTROLERY I MIKROPROCESORY
PLAN... work in progress 1. Mikrokontrolery i mikroprocesory - architektura systemów mikroprocesorów ( 8051, AVR, ARM) - pamięci - rejestry - tryby adresowania - repertuar instrukcji - urządzenia we/wy
Logiczny model komputera i działanie procesora. Część 1.
Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 005 Plik wymiany Pamięć wirtualna 2 SO i SK/WIN Plik wymiany - rodzaj pamięci wirtualnej komputerów. Plik ten służy do tymczasowego przechowywania
Diagnostyka pamięci RAM
Diagnostyka pamięci RAM 1 (Pobrane z slow7.pl) Uszkodzenie pamięci RAM jest jednym z najczęściej występujących problemów związanych z niestabilnym działaniem komputera. Efektem uszkodzenia kości RAM są
Wykład 6. Planowanie (szeregowanie) procesów (ang. process scheduling) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB
Wykład 6 Planowanie (szeregowanie) procesów (ang. process scheduling) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Rodzaje planowania Planowanie długoterminowe. Decyzja o
Instrukcja użytkownika KRISTECH, 2016
Konwerter Ethernet na RS-232 Instrukcja użytkownika KRISTECH, 2016 www.kristech.eu ver. 27.10.2016-A 1. Wprowadzenie jest konwerterem Ethernet na port szeregowy RS-232. Konwerter umożliwia wygodny dostęp
Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)
Struktury systemów komputerowych Architektura systemu komputerowego Działanie systemu komputerowego Struktura we/wy Struktura pamięci Hierarchia pamięci Ochrona sprzętowa Architektura 2.1 2.2 Działanie
Instalacja SQL Server Express. Logowanie na stronie Microsoftu
Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy
PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec
PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych
LEKCJA TEMAT: Zasada działania komputera.
LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem
znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.
Przedstawiamy algorytmy porządkowania dowolnej liczby elementów, którymi mogą być liczby, jak również elementy o bardziej złożonej postaci (takie jak słowa i daty). Porządkowanie, nazywane również często
Licznik rewersyjny MD100 rev. 2.48
Licznik rewersyjny MD100 rev. 2.48 Instrukcja obsługi programu PPH WObit mgr inż. Witold Ober 61-474 Poznań, ul. Gruszkowa 4 tel.061/8350-620, -800 fax. 061/8350704 e-mail: wobit@wobit.com.pl Instrukcja
Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.
Sprawozdanie z projektu MARM Część druga Specyfikacja końcowa Prowadzący: dr. Mariusz Suchenek Autor: Dawid Kołcz Data: 01.02.16r. 1. Temat pracy: Układ diagnozujący układ tworzony jako praca magisterska.
Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780
Dane techniczne : Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780 a) wielkość bufora znaków (DD RAM): 80 znaków (80 bajtów) b) możliwość sterowania (czyli podawania kodów znaków) za pomocą
Czym są właściwości. Poprawne projektowanie klas
Z akcesorów get i set korzysta każdy kto programuje w C#. Stanowią one duże udogodnienie w programowaniu obiektowym. Zapewniają wygodę, bezpieczeństwo i znacząco skracają kod. Akcesory są ściśle związane
XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery
http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
Uniwersytet Mikołaja Kopernika w Toruniu. Profilowanie ruchu sieciowego w systemie GNU/Linux
Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Michał Ferliński Nr albumu: 187386 Praca magisterska na kierunku Informatyka
Metody optymalizacji soft-procesorów NIOS
POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Warszawa, 27.01.2011
Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
PROGRAMOWALNE STEROWNIKI LOGICZNE
PROGRAMOWALNE STEROWNIKI LOGICZNE I. Wprowadzenie Klasyczna synteza kombinacyjnych i sekwencyjnych układów sterowania stosowana do automatyzacji dyskretnych procesów produkcyjnych polega na zaprojektowaniu
CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM
CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM 1.1. PODSTAWOWE INFORMACJE PC to skrót od nazwy Komputer Osobisty (z ang. personal computer). Elementy komputera można podzielić na dwie ogólne kategorie: sprzęt - fizyczne
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
2.2 Opis części programowej
2.2 Opis części programowej Rysunek 1: Panel frontowy aplikacji. System pomiarowy został w całości zintegrowany w środowisku LabVIEW. Aplikacja uruchamiana na komputerze zarządza przebiegiem pomiarów poprzez
Elastyczne systemy wytwarzania
ZAKŁAD PROJEKTOWANIA TECHNOLOGII Laboratorium: Elastyczne systemy wytwarzania Załącznik do instrukcji nr 1 Opracował: Jakub Zawrotniak Poniżej przedstawiono sposób tworzenia nowego projektu/programu: a)
Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci
Laboratorium 1: Wprowadzenie do środowiska programowego oraz podstawowe operacje na rejestrach i komórkach pamięci Zapoznanie się ze środowiskiem programowym: poznanie funkcji asemblera, poznanie funkcji
Instrukcja integratora - obsługa dużych plików w epuap2
Instrukcja integratora - obsługa dużych plików w epuap2 Wersja: 1.1 Strona 1 z 18 Spis treści SPIS TREŚCI... 2 WPROWADZENIE ORAZ INFORMACJE OGÓLNE... 3 1.1 WSTĘP... 3 1.2 WARUNKI KONIECZNE DO SPEŁNIENIA
Temat: System zarządzania zadaniami i ich komunikacja (Scheduler, MessageBox).
Temat: System zarządzania zadaniami i ich komunikacja (Scheduler, MessageBox). Ćwiczenie 3. (sd 2) 1.Uruchamianie zadań / przełączanie zadań. Praca wielozadaniowa (multitasking), daje programiście aplikacyjnemu
>>> Techniki rozbudowy systemów wbudowanych >>> Biblioteki wspomagające rozbudowę systemów wbudowanych. Name: Mariusz Naumowicz Date: 29 maja 2019
>>> Techniki rozbudowy systemów wbudowanych >>> Biblioteki wspomagające rozbudowę systemów wbudowanych Name: Mariusz Naumowicz Date: 29 maja 2019 [~]$ _ [1/14] >>> Treści wykładu I 1. HAL 2. libusb 3.
Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja.
Kontrola topto Obsługa aplikacji Kontrola topto 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja. 5. Dodawanie, edycja i usuwanie przejść.
Architektura mikroprocesorów TEO 2009/2010
Architektura mikroprocesorów TEO 2009/2010 Plan wykładów Wykład 1: - Wstęp. Klasyfikacje mikroprocesorów Wykład 2: - Mikrokontrolery 8-bit: AVR, PIC Wykład 3: - Mikrokontrolery 8-bit: 8051, ST7 Wykład
Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika
Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika Model: UP3017 Model - zgodność z przepisami: UP3017t UWAGA: UWAGA oznacza ważną informację, pomocną w lepszym używaniu komputera. Copyright
Działanie i charakterystyka sterownika GE FANUC VersaMaxNano
Działanie i charakterystyka sterownika GE FANUC VersaMaxNano Sterownik wykonuje cyklicznie program sterujący. Oprócz wykonywania programu sterującego, sterownik regularnie gromadzi dane z urządzeń wejściowych,
Mechanizmy pracy równoległej. Jarosław Kuchta
Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy
Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska
Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów Iwona Kochańska Mechanizm synchronizacji wątków/procesów Wykorzystanie semaforów zapobiega niedozwolonemu wykonaniu
INDU-22. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie. masownica próżniowa
Przemysłowy Sterownik Mikroprocesorowy INDU-22 Przeznaczenie masownica próżniowa Sp. z o.o. 41-250 Czeladź ul. Wojkowicka 21 Tel. 032 763 77 77 Fax: 032 763 75 94 www.mikster.pl mikster@mikster.pl v1.1