**Wykłady** * {{:studia:przedmioty:systemy_wbudowane:sw01.pdf|Wykład 1}} * {{:studia:przedmioty:systemy_wbudowane:sw02.pdf|Wykład 2}} * {{:studia:przedmioty:systemy_wbudowane:sw03.pdf|Wykład 3}} * {{:studia:przedmioty:systemy_wbudowane:sw04.pdf|Wykład 4}} * {{:studia:przedmioty:systemy_wbudowane:sw05.pdf|Wykład 5}} * {{:studia:przedmioty:systemy_wbudowane:sw06.pdf|Wykład 6}} * {{:studia:przedmioty:systemy_wbudowane:sw07.pdf|Wykład 7}} * {{:studia:przedmioty:systemy_wbudowane:sw08.pdf|Wykład 8}} * {{:studia:przedmioty:systemy_wbudowane:sw09.pdf|Wykład 9}} * {{:studia:przedmioty:systemy_wbudowane:sw10.pdf|Wykład 10}} * {{:studia:przedmioty:systemy_wbudowane:sw11.pdf|Wykład 11}} * {{:studia:przedmioty:systemy_wbudowane:sw12.pdf|Wykład 12}} * {{:studia:przedmioty:systemy_wbudowane:sw13.pdf|Wykład 13}} * {{:studia:przedmioty:systemy_wbudowane:sw14.pdf|Wykład 14}} **Uzupełnienie zagadnień egzaminacyjnych 2011/2012:** **A.1. Wyjaśnić pojęcie systemu wbudowanego. Podać podstawowe różnice pomiędzy systemami wbudowanymi a innymi typami systemów komputerowych.** • System wbudowany (embedded system) – komputer wbudowany w urządzenie, którym steruje i jest wyspecjalizowany do realizowania określonych funkcji. http://pl.wikipedia.org/wiki/System_wbudowany • Często jest częścią większego systemu. • Typowe cechy: o silnie zintegrowany, o niewielkie rozmiary, o często mocno ograniczone interfejsy komunikacji z ludźmi (brak GUI), o pożądane: niezawodność, trwałość, energooszczędność, o bezobsługowy • System optymalizowany dla danej aplikacji – zwykle system czasu rzeczywistego Różnice: System wbudowany spełnia określone wymagania, zdefiniowane do zadań, które ma wykonywać. Z tego względu systemem wbudowanym nie można nazwać wielofunkcyjnego komputera osobistego. W przeciwieństwie do komputerów osobistych, wiele systemów wbudowanych przeznaczona jest do komunikacji z innymi urządzeniami, a nie z ludźmi. Przykłady • PDA, telefon komórkowy, GPS, • telewizor, • WLAN access-point, • sprzęt AGD, • komputery pokładowe pojazdów, • aparatura medyczna, • infrastruktura telekomunikacyjna. **A.2. Podać metody implementacji współczesnych systemów wbudowanych.** • System on chip (SoC) - układ scalony zawiera kompletny system elektroniczny (układy cyfrowe, analogowe, analogowo-cyfrowe). Typowy układ SOC składa się z: -pojedynczego mikroprocesora,mikrokontrolera lub rdzenia DSP, -bloku pamieci (RAM, ROM, EEPROM, FLASH), -ukladu czasowo-licznikowego, -kontrolera transmisji szeregowej lub równoległej(UART, SPI, PCI, USB, Ethernet), http://pl.wikipedia.org/wiki/System-on-a-chip -może zawierać też dodatkowe, wyspecjalizowane układy peryferyjne (np. szyfrujące) -producenci SoC: AMCC, Freescale, Marvell, Texas Instruments • System on programmable chip (SoPC) -jest to system mikroprocesorowy stworzony w jezyku opisu sprzetu (VHDL,Verilog), przeznaczony do implementacji w ukladach FPGA. Programowanie takiego systemu odbywa sie za pomoca Assemblera, C lub C++, mozliwe jest uzycie dowolnej (ograniczonej zasobami ukladu) liczby komponentów http://en.wikipedia.org/wiki/PSoC • Wieloprocesorowe SOC (MPSoC) - odmiana architektury SoC, zawierająca wiele procesorów (rdzeni). Wykorzystywana w platformach zawierających wiele jednostek obliczeniowych wyspecjalizowanych dla różnych zastosowań. Rdzenie są połączone ze sobą. Wykorzystywana w zastosowaniach wymagających dużej mocy obliczniowej, takich jak multimedia i bezpieczeństwo sieciowe. • System on a board (SoB) - poszczególne składowe systemu są montowane na przygotowanej wcześnie płytce drukowanej (Printed-Circuit Board; PCB). • Network on Chip (NoC) - nowy, rozwojowy sposób projektowania systemów wbudowanych wysokiej skali integracji (VLSI), w którym system wbudowany zaprojektowany jako sieć komunikujących się modułów. Stosuje teorię sieci i metody komunikacji znane z sieci komputerowych, przez co komunikacja jest znacznie lepsza (łatwiejsza do zrównoleglenia, elastyczna, skalowalna) niż w tradycyjnym podejściu stosującym magistrale. -Komunikacja poprzez routery -Moze byc wiele mozliwych tras -Routing statyczny lub dynamiczny -Transmisja pakietowa lub „wormhole” -Topologie regularne lub specjalizowane http://en.wikipedia.org/wiki/Network_On_Chip Dla architektur wieloprocesorowych, NoC wydaje się być najodpowiedniejszym podejściem. Prowadzi się badania nad NoC stosującymi komunikację optyczną - Optical NoC (ONoC). **A.3 omówić popularne modele stosowane w modelowaniu systemów wbudowanych.** Najbardziej popularne modele obliczeniowe: - FSM (Final State Machine): http://en.wikipedia.org/wiki/Finite-state_machine - KPN (Kahn Process Networks): http://en.wikipedia.org/wiki/Kahn_process_networks - CSP (Communicating Sequential Processes) http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII8.0/ptII/ptolemy/domains/csp/doc/main.htm - SR - SDF(Synchronous Dataflow) **A4 omówić poziomny abstrakcji modelowania systemów wbudowanych** Poziomy abstrakcji projektowania systemów HW/SW Poziom RTL (1) 1. RTL 2. Cycle Accurate 3. Bus Cycle Accurate 4. Timed Functional 5. Untimed Functional 6. Algorythmic 2-5 Poziomy TLM. Poziom RTL odwzorowuje zgodność z sygnałami w układzie Poziom TLM: Odzwierciadla przepływ i magazynowanie danych w układzie. Wraz ze wzrostem poziomu abstrakcji rośnie szybkość symulacji, ale zmniejsza się dokładność. **A.5.Typy procesów specyfikowane w środowisku SystemC**. Każdy proces jest aktywowany w momencie pojawienia się zdarzenia, na które dany proces jest “wrażliwy”. Wyróżniamy nasępujące typy procesów: • SC_METHOD(m1); - wątek sekwencyjny o Wykonywany zawsze do konca o Po każdej aktywacji wykonuje się od początku do końca, nie ma możliwości jego zawieszenia. • SC_THREAD(m2); - wątek współbieżny o Moze byc zawieszany instrukcja wait() o Proces ten jest wykonywany współbieżnie z innymi, z możliwością zawieszenia i kontynuacji wykonywania po następnej aktywacji procesu • SC_CTHREAD(m3,clk.pos()) - synchroniczny wątek współbieżny o Zawieszany instrukcja wait() oczekujaca na sygnał zegarowy o Proces, który może być aktywowany tylko zboczem sygnału zegarowego, może być zawieszany i kontynuowany. Taki typ procesu implementuje model obliczeniowy FSM, stosowany do opisu komponentów sprzętowych na poziomie RTL i zwykle na poziomie systemowym nie jest stosowany. Procesy mogą być tworzone w sposób statyczny lub dynamiczny. W przypadku systemów wbudowanych liczba procesów jest znana, dlatego w specyfikacji takich systemów stosuje się tylko procesy statyczne. **A.6.Metody aktywacji procesów w SystemC.** • SC_CTHREAD: o tylko clk • SC_METHOD, SC_THREAD: o sensitive << sygnał << sygnał ; o next_trigger(parametry jak w wait) o czas kolejnej aktywacji aktualnego procesu tylko dla SC_METHOD **A.7.Metody synchronizacji pomiędzy procesami w SystemC.** • Semafory • Muteksy • Zdarzenia/sygnały o sc_event e1; o e1. notify(), e1.notify(czas) - generacja zdarzenia o e1.cancel() - zaniechanie zdarzenia o sygnał.value_changed_event() – zdarzenie zwiazane ze zmiana sygnału o sygnał.posedge_event(), sygnał.negedge_event() – zdarzenia zwiazane z wybranymi zboczami zmian sygnałów (tylko jednobitowe) (odpowiednio rosnącym (positive) i opadającym (negative)) Synchronizacje procesów umożliwiają zdarzenia sc_event oraz funkcja wait(). Funkcja wait() powoduje zawieszenie procesu aż do chwili spełnenia warunku przez nią okreslonego. Możliwe jest zawieszenia aż pojawią się wszystkie zdarzenia z podanej listy, lub kiedy pojawi się dowolne zdarzenie, na które proces jest wrażliwy. Możliwe jest również zdefiniowanie czasu, po którym proces automatycznie się wznawia (niezależnie od innych warunków). Na zdarzeniach można wykonać operacje notify() i cancel(), odpowiednio generujące i usuwające zdarzenie, Po czym usuwać można tylko zdarzenia oczekujące, tzn. zdarzenia, które wystąpią w przyszłości. **A.8.Metody komunikacji pomiędzy procesami w SystemC.** • Kanały o Kanały proste:  Klasa bazowa: sc_prim_channel  Udostępniają funkcje komunikacyjne wywoływane przez komunikujące się procesy o Kanały hierarchiczne:  Klasa bazowa: sc_module  To moduły zawierające własne procesy realizujące komunikację o Każdy kanał moze implementowac wiele interfejsów! • Porty o Klasa bazowa:  sc_port o Przyłaczanie portu do kanału:  moduł.port(kanał)  (*moduł)(kanał1, kanał2,…) • Mailbox - przesyłanie komunikatów • Kolejki komunikatów (np. FIFO) **A.9.Omówić algorytm symulacji stosowany w środowisku SystemC.** 1. Tsim=0. Inicjalizacja wszystkich procesów (z wyjatkiem procesów z wykluczona inicjalizacja). 2. Tsim=czas wystapienia najbliszego zdarzenia. 3. Realizacja wszystkich zdarzen zachodzacych dla Tsim. 4. Wykonanie procesów na wejsciach których zaszło zdarzenie w chwili Tsim: o Procesy SC_METHOD: wykonywane do konca, o Procesy SC_THREAD wykonywane do najbliszej instrykcji wait(), o Wygenerowane zdarzenia sa wstawiane do kolejki zdarzen, zdarzenia o wygenerowane dla chwili Tsim sa wstawiane do kolejki z czasem Tsim+ 5. Jesli Tsim=max czas symulacji to STOP w przeciwnym przypadku GOTO 2. Pytanie dodatkowe: Kiedy zatrzyma się symulacja? Odpowiedź: 1) Tsim=max 2) gdy zakończą się wszystkie procesy (system ustabilizowany). **A.10. Omówić topologie wieloprocesorowych systemów wbudowanych.** Magistrale: • Crossbar o Zalety:  Brak konfliktów  Proste projektowanie o Wady:  Nie nadaje sie dla dużej liczby portów • Crossbar z buforami o Zalety:  Mniejsza niż crossbar  Duża efektywnosc o Wady:  Wymaga szeregowania • Mesh o Zalety:  Prosta  Regularna o Wady:  Słaba wydajność • Wyspecjalizowana o Zalety:  maksymalne wykorzystanie połaczeń  Niski pobór mocy o Wady:  Należy ją zaprojektować • Magistrala o Zalety:  Proste  łatwe do programowania  wiele standardów o Wady  Konflikty  duże obciążenie • Siec jednoukładowa o ... **A11 porównać architektury wieloprocesorowe ze wspólną pamięcią oraz z pamięcią rozproszoną. Podać wady i zalety obu rozwiązań w odniesienuy do systemów wbudowanych** **A.12.Omówić główne cechy systemu MicroC/OSII.** • Około 5500 linii kodu w C • Przenosny • Moze byc umieszczony w ROM • Skalowalny (może być rozbudowany) • Z wywłaszczaniem • Wielozadaniowy • Deterministyczny • Zarzadzanie przerwaniami • Niezawodny **A.13. Stany procesów w systemie operacyjnym MicroC/OSII.** (Nie wiem czy dobre) • Niekatywny - OSTaskDel() na Oczekującym, Gotowym lub Trwającym • Oczekujący - Trwający z *Pend • Gotowy - powrócił z Oczekującego poprzez *Post lub *Resume / Uruchomiony wywłaszczony przez proces o wyższym priorytece • Uruchomiony (trwający) - OSStart() na Gotowym lub powrót z Obsługi przerwania - OSIntExit() • Obsługa przerwania - Trwający podczas pojawienia się przerwania **A.14. Omówić składniki programu wbudowanego.** • Kod aplikacji - • Biblioteka użytkownika - • Biblioteka systemowa - • System operacyjny - • Sterowniki urządzeń – **A.15. Na czym polega kosynteza systemów wbudowanych? Omówić zadania kosyntezy.** Kosynteza to proces jednoczesnej syntezy części softwarowej(SW) i sprzętowej (HW) systemu. Dysponując specyfikacją systemu kosynteza HW-SW systemów rozproszonych ma za zadanie: - alokację zasobów(wybór odpowiednich zasobów procesorów, wyspecjalizowanych modułów sprzętowych...); - przyporządkowanie procesów do zasobów określenie jakie procesy obliczeniowe i komunikacyjne, wymienione w specyfikacji, będzie wykonywał każdy z zasobów; - szeregowanie procesów obliczeniowych i komunikacyjnych określenie kolejności wykonywania procesów i transmisji. W wyniku kosyntezy, na podstawie specyfikacji systemu oraz ograniczeń(zasobowe, pieniężne), generowana jest archi tektura systemu, która spełnia wszystkie wymagania określone w specyfikacji.x Zadania kosyntezy: • Szeregowanie i minimalizacaj czasów oczekiwania • Alokacja tak aby zadanie nie czekały na zasoby • Podział operacji na równoległe procesy, operacje sekwencyjne w jednym procesie aby zmniejszyć liczbę transmisji • Przyporządkowanie określenie operacji wykonywanych przez po szczególne zasoby. Szeregowanie i alokacjia: • Co należy uszeregować: o obliczenia o transmisje • Wydajność silnie zależy od alokacji. Problem podziału: Granulacja: • Mało dużych procesów • Dużo małych procesów Efektywność: • Zły podział ogranicza możliwości alokacji • Jak minimalizować komunikację. Przyporządkowanie zadań do zasobów: • Silna zależność z alokacją (przy zróżnicowanych parametrach procesorów) • Wydajność programów zależy od typu procesora i połączeń • Przyporządkowanie zadań i transmisji są zależne od siebie. **A.16. Metody oszacowania kosztu i wydajności implementacji procesów.** • Software: o Estymacja metoda częściowej kompilacji o Estymacja metoda benchmarkowania • Hardware: o Metody syntezy wysokopoziomowej • Suma kosztów komponentów: o Bloków funkcjonalnych o Rejestrów o Połaczeń • Współdzielenie zasobów o może zmniejszyć możliwość zrównoleglenia obliczeń **A.17. Przedstawić wybraną metodę kosyntezy jednoprocesorowego systemu wbudowanego.** • Vulcan (9) o Specyfikacja w HardwareC o Architektura: CPU + ASIC o Podział specyfikacji na watki obliczeniowe o znanym czasie wykonania o Watki komunikuja sie poprzez kolejki komunikatów o Oszacowania kosztu i wydajnosci dla kazdego watku o Rozwiazanie poczatkowe: wszystkie watki bez ograniczen czasowych w CPU, pozostałe w sprzecie o Przenoszenie kolejnych watków ze sprzetu do CPU: o Jesli przeniesienie nie naruszy ograniczen czasowych to zmiana jest akceptowana o Krok jest powtarzany dla nastepników przeniesionego watka • COSYMA(4) o Specyfikacja w C* o Specyfikacja podzielona na bloki o Bloki sa przenoszone do sprzetu wg największego przyspieszenia o Algorytm simulated anealing (symulowane wyżażanie)  Komunikacja poprzez współdzielona pamiec **A.18.Omówić cechy procesorów stosowanych w systemach wbudowanych.** • Architektura zoptymalizowana dla aplikacji danego typu • Duza wydajnosc • Niski pobór mocy • Mały rozmiar kodu • Wydajny system zarzadzania pamiecia • Przewidywalnosc (moliwosc przewidzenia czasu wykonania) • Bezpieczenstwo • Dostepnosc w formie modułu IP • Procesory RISC: o zredukowana ilość rozkazow o praktycznie zawsze maja potok, Dzięki przetwarzaniu potokowemu (ang. pipelining) wszystkie rozkazy wykonują się w jednym cyklu maszynowym. o Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Do przesyłania danych pomiędzy pamięcią, a rejestrami służą dedykowane instrukcje (load, store) . o Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze o Przykłady:  ARM  AM7: 3-etapowy potok, ARM9: 5-etapowy potok,  ARM11: 8-etapowy potok,  MIPS  4K: 5-etapowy potok,  4KE: rozszerzenia DSP,  4KS: elementy ochrony  PowerPC  Seria 400, MPC7410: 2 potoki instrukcji, 970FX: 16-etapowy potok • Procesory DSP o Operacje multiply-accumulate: x=a*b+c o Architektura harwardzka: Charakteryzują się rozdzielonymi pamięciami programu i danych, możliwością równoczesnego odczytu instrukcji i danych, sprzętowym dostosowaniem do wykonywania operacji najczęściej występujących przy przetwarzaniu sygnałów. BY WIKI o Pierwszy procesor: DSP16 AT&T o Przykłady:  TI C5x DSP  40-bitowe ALU  Układ przesuwający  Mnożarka 17x17  Komparator dla kodera/dekodera Viterbi  2 generatory adresów  Szybki układ obliczajacy wykładniki w operacjach arytmetycznych  3 koprocesory do przetwarzania obrazów i kompresji video. **A.19. Metody szeregowania zadań w systemach wbudowanych.** • Statyczne (tzw. heurestyczne metody kosyntezy) o Metody konstrukcyjne - Algorytmy konstrukcyjne [DLJ97, BAP98, DJ98a, NB01 -] działaja na zasadzie tworzenia rozwiazania poprzez stopniowa rozbudowe systemu w celu implementacji kolejnych zadan i transmisji -Głównym problemem w tych metodach jest oszacowanie wpływu decyzji podejmowanych w każdym kroku na ostateczna jakosc rozwiazania. Do tego celu wykożystywane są równe miary dokonujace oceny moliwych decyzji projektowych. - Algorytm ten uwzględnia tylko sumę kosztów wykonania poszczególnych zadan, nie uwzglednia kosztów jednostkowych, ani alokacji i kosztów kanałów komunikacyjnych . Algorytmy konstrukcyjne sa szybkie i można czasem uzyskac dobre wyniki [DLJ97], ale maja skłonnosc do zatrzymywania sie w lokalnych minimach optymalizowanych parametrów. o Metody rafinacyjne - Algorytmy rafinacyjne startuja od przyblionego rozwiazania poczatkowego i w kolejnych krokach generuja nowe rozwiazania poprzez modyfikacje poprzednich, w celu poprawy optymalizowanych parametrów. Algorytmy rafinacyjne dziela sie na: probabilistyczne i o bezposrednim wyszukiwaniu. Głównym problemem tych algorytmów jest zapewnienie ich zbienosci. • Dynamiczne o Zadania maja priorytety o Priorytety statyczne lub dynamiczne o Quasi-statyczne Jednym z intensywniej rozwijanych kierunków badan w dziedzinie kosyntezy sa systemy dynamicznie rekonfigurowalne. W wielu pracach duży nacisk położono na minimalizacje narzutów czasowych spowodowanych reprogramowaniem układu FPGA. Zaden z dotychczas zaprezentowanych algorytmów kosyntezy nie daje zadawalajacych wyników. Nie ma metody, która uwzgledniałaby wszystkie cechy istotne dla współczesnych układów i wymagan. **A 20. Główne wymagania projektowe dla systemów wbudowanych:** * Określenie specyfikacji funkcjonalnej – rodzaje wejść/wyjść, podział na procesy, wybranie metod komunikacji. * Określenie specyfikacji architektury – określenie ilości oraz parametrów procesorów, wielkości i rodzajów pamięci niezbędnych do zastosowania dla podanej aplikacji. * Określenie funkcji, jakie mają być wykonywane przez sprzęt, a jakie w aplikacji. ---- ** B.7. Metody zarządzania zadaniami w MicroC/OSII:** * Zadania są tworzone poprzez metody OSTaskCreate, OSTaskCreateExt, usuwane INT8U OSTaskDel, INT8U OSTaskDelReq. * Zarządzanie zadaniami odbywa się poprzez metody: * INT8U OSTaskChangePrio(INT8U prio) – zmień priorytet zadania * INT8U OSTaskSuspend(INT8U prio) – zawieś wykonanie zadania * INT8U OSTaskResume(INT8U prio) – wznów wykonanie zadania * INT8U OSTaskQuery – zwraca informacje o zadaniu W systemie MicroC zadania komunikują się pomiędzy sobą poprzez mailbox lub kolejki komunikatów. ----