>>> Techniki rozbudowy systemów wbudowanych >>> Systemy wbudowane Name: Mariusz Naumowicz Date: 29 maja 2019 [~]$ _ [1/32]
>>> Treści wykładu I 1. Systemy wbudowane 2. Podział procesorów 3. Tryby User mode System mode Supervisor mode Abort mode Undefined mode IRQ mode FIQ mode Hyp mod Monitor mode Vector Table Memory Management 4. Stosowane technologie 5. Płyta prototypowa [~]$ _ [2/32]
>>> Wspólne składniki systemu wbudowanego [1. Systemy wbudowane]$ _ [3/32]
>>> Diagram systemu wbudowanego [1. Systemy wbudowane]$ _ [4/32]
>>> Rdzenie x y z Opis Przykład 7 ARM7 core version ARM7 9 ARM9 core version ARM9 10 ARM10 core version ARM10 11 ARM11 core version ARM11 1 Cache, write buffer and MMU ARM710 2 Cache, write buffer and MMU, Process ID support ARM920 3 Physically mapped cache and MMU ARM1136 4 Cache, write buffer and MPU ARM940 5 Cache, write buffer and MPU, error correcting memory ARM1156 6 No cache, write buffer ARM966 7 AXI bus, physically mapped cache and MMU ARM1176 0 Stadard cache size ARM920 2 Reduced cache size ARM1022 6 Tightly Coupled Memory ARM1156 8 As for ARM966 ARM968 [2. Podział procesorów]$ _ [5/32]
>>> Atrybuty Atrybut Opis D Wsparcie debuggowania przez JTAG, automatyczny atrybut dla ARMv5 i wyższych E Wsparcie DSP, automatyczny atrybut dla ARMv6 i wyższych F Sprzętowe wsparcie dla instrukcji zmiennoprzecinkowych dzięki koprocesorowi VFP. I Wsparcie sprzętowe dla breakpoint i watchpoint, automatyczny atrybut dla ARMv5 i wyższych J Wsparcie dla Jazelle Java acceleration technology M Wsparcie dla długich instrukcji mnożenia, automatyczny atrybut dla ARMv5 i wyższych T Wsparcie dla zestawu instrukcji Thumb, automatyczny atrybut dla ARMv5 i wyższych -S procesor używa resyntezowalną elektronikę. [2. Podział procesorów]$ _ [6/32]
>>> Rejestry procesora ARM User Supervisor Abort Undefined IRQ FIQ R0 R0 R0 R0 R0 R0 R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R7 R7 R7 R7 R7 R7 R8 R8 R8 R8 R8 R8 FIQ R9 R9 R9 R9 R9 R9 FIQ R10 R10 R10 R10 R10 R10 FIQ R11 R11 R11 R11 R11 R11 FIQ R12 R12 R12 R12 R12 R12 FIQ R13 R13 SCV R13 abt R13 und R13 IRQ R13 FIQ R14 R14 SCV R14 abt R14 und R14 IRQ R14 FIQ R15 R15 R15 R15 R15 R15 [2. Podział procesorów]$ _ [7/32]
>>> Tryby * User Mode * System Mode * Supervisor Mode * Abort Mode * Undefined Mode * IRQ Mode * FIQ Mode * Hyp Mode * Monitor Mode [3. Tryby]$ _ [8/32]
>>> User mode Zazwyczaj uruchamia programy. W tym trybie pamięć jest chroniona (pod warunkiem, że procesor posiada jednostkę MMU lub MPU). Większość programów i aplikacji całkowicie działa w tym trybie. Jeżeli program musi używać innego trybu musi wykorzystać SVC. Zewnętrze zdarzenia takie jak np. przerwania mogą także zmieniać tryb. [3. Tryby]$ _ [9/32]
>>> System mode Tryb ten może być uruchomiony jedynie przez wywołanie specyficznej instrukcji, która ustawi odpowiedni bit w rejestrze CSPR. Tryb ten wykorzystuje rejestry trybu User mode i używa ich do uruchomienia zadań, które wymagają uprzywilejowanego dostępu do pamięci i koprocesorów bez ograniczeń wywołujących wyjątki. Często wykorzystywany jest do obsługi zagnieżdżonych wyjątków oraz wywołań SVC. [3. Tryby]$ _ [10/32]
>>> Supervisor mode Supervisor mode jest uprzywilejowanym trybie który jest uruchamiany wtedy gdy CPU jest resetowany oraz kiedy zostaje wykonana instrukcja SVC. Jądra systemów są uruchamiane w tym trybie w celu konfiguracji urządzeń wymagających uprzywilejowanych stanów, przed uruchomieniem aplikacji, które nie wymagają uprzywilejowanych stanów. Niektóre programy typu bare metal zazwyczaj całkowicie korzystają z tego trybu. [3. Tryby]$ _ [11/32]
>>> Abort mode Abort mode jest uprzywilejowanym trybem wywoływany jest wtedy gdy wystąpią wyjątki Prefetch Abort lub Data Abort. Oznacza to, że procesor nie miał dostępu do jakiś zasobów pamięciowych z jakiegoś powodu. [3. Tryby]$ _ [12/32]
>>> Undefined mode Undefined mode jest uprzywilejowanym trybie, który występuje gdy nastąpi wyjątek Undefined Instruction. Normalnie występuje gdy rdzeń ARMa poszukuje instrukcji w złym miejscu (uszkodzony PC) lub jest pamięć jest uszkodzona. Zdarza się także gdy ARM nie wspiera specyficznej instrukcji, dla przykładu gdy wykonuje instrukcję VFP na rdzeniu nieobsługujących instrukcji VFP. Niezidentyfikowana instrukcja jest wyłapywana i uruchamiana programowo, poprzez emulację VFP. Undefined mode może również wystąpić przy błędzie koprocesora - koprocesor jest obecny ale nieuruchomiony. [3. Tryby]$ _ [13/32]
>>> IRQ mode IRQ mode jest uprzywilejowanym trybem uruchamianym podczas akceptacji przerwania IRQ przez procesor. [3. Tryby]$ _ [14/32]
>>> FIQ mode FIQ mode jest uprzywilejowanym trybem uruchamianym podczas uruchamiania obsługi przerwania FIQ. W trybie tym rejestry r8 do r12 są zachowywane, oznacza to, że są dostępne do użytku bez wcześniejszego zapisywania ich zawartości. Przy powróci to poprzedniego trybu, zawartość rejestrów jest przywracany do ich oryginalnego stanu. Posiadanie prywatnych rejestrów pozwala na oszczędzenie czasu podczas przełączania kontekstu. [3. Tryby]$ _ [15/32]
>>> Hyp mod Hyp mode został wprowadzony w ARMv7-A dla procesorów Cortex-A15 (oraz późniejszych) wprowadzając sprzętową wsparcie wirtualizacji. [3. Tryby]$ _ [16/32]
>>> Monitor mode Monitor mode jest specjalnym trybem używanym do debuggowania, zaletą tego trybu jest niecałkowite zatrzymanie rdzenia. [3. Tryby]$ _ [17/32]
>>> Vector Table I Tabela ta jest częścią pamięci zarezerwowaną dla procesora szukającego informacji podczas wejścia w specyficzny tryb pracy. Klasyczny model jest używany w wersjach przed Cortexami oraz obecnych Cortex-A/R. W miejscu o adresie 0 zawiera kilka adresów do podprogramów uruchamiających dany tryb. Typowa tablica wektorów wygląda następująco: 00000000 LDR PC, = Reset 00000004 LDR PC, = Undef 00000008 LDR PC, = SVC 0000000 C LDR PC, = PrefAbort 00000010 LDR PC, = DataAbort 00000014 NOP 00000018 LDR PC, = IRQ 0000001 C LDR PC, = FIQ W procesorach Cortex-M wygląda to trochę inaczej. Wektor zawiera adresy a nie instrukcje. Pierwsze wpisy w tablicy wektorów w Cortex-M mogą wyglądać następująco: [3. Tryby]$ _ [18/32]
>>> Vector Table II Vectors DCD initial_ sp ; Top of Stack DCD Reset_ Handler ; Reset Handler DCD NMI_ Handler ; NMI Handler DCD HardFault_ Handler ; Hard Fault Handler DCD MemManage_ Handler ; MPU Fault Handler DCD BusFault_ Handler ; Bus Fault Handler DCD UsageFault_ Handler ; Usage Fault Handler To oznaczna, że Cortex-M może wykorzystywać całą przestrzeń pamięci, a nie tylko pamięć ograniczoną do wykonywania komend skoku. [3. Tryby]$ _ [19/32]
>>> Memory Management I Zarządzanie pamięcią jest wykonywana przy pomocy Memory Management Unit (MMU), która umożliwia kontrolowania mapowania pamięci pomiędzy adresami wirtualnymi, a adresami fizycznymi, pozwalającymi na przezroczysty dostęp do różnych części pamięci. Adres generowany przez procesor ARM nazywany jest adresem wirtualnym. The MMU wtedy adresuje ten adres na adres fizyczny dając procesorowi dostęp do pamięci. Pamięci może być mapowana "płasko", czyli adres wirtualny jest wtedy równy adresowi fizycznemu. [3. Tryby]$ _ [20/32]
>>> JTAG Debug (D) The Joint Test Action Group (JTAG) była grupą formującą się w 1985, której głównym celem było opracowanie metody testowania układów po wyprodukowaniu. Od tego czasu wielopowłokowe obwody drukowane stawały się normą, a testowanie było ekstremalnie skomplikowane ponieważ większość ścieżka była niedostępna do pomiarów. JTAG był spełnioną obietnicą do testowania obwodów i wykrywania wadliwych połączeń. W 1990, Intel wypuścił na rynek procesor 80486, ze zintegrowanym wsparciem JTAG, został on szybko zaadoptowany do innych rozwiązań. Jednakże JTAG oryginalnie był zaprojektowany do testowania kart komputerowych, w późniejszym czasie rozpoczęły się pracę nad innym zastosowaniem, szczególnie debuggowaniem. [4. Stosowane technologie]$ _ [21/32]
>>> Enhanced DSP (E) I Z czasem jak ARM stawały się coraz popularniejsze w cyfrowych urządzeniach multimedialnych, konieczne stało się przyspieszenie instrukcji procesora ARM przez dodanie instrukcji DSP, równie konieczne jak instrukcji SIMD. Cyfrowe przetwarzanie sygnału (DSP) jest matematyczną manipulacją informacji modyfikującą bądź polepszającą ja w jakiś sposób. Celem DSP jest zazwyczaj pomiar, filtrowanie, i/lub kompresją/dekompresją rzeczywistych sygnałów świata analogowego. Dla przykładu, DSP jest używane w odtwarzaczach muzyki, nie tylko konwertując skompresowane dane cyfrowy w muzykę analogową, ale także konwertuje analogowy dźwięk do formatu cyfrowego w studiach muzycznych. Typowymi aplikacjami są kompresja audio cyfrowe przetwarzanie obrazu, przetwarzanie mowy oraz ogólna komunikacja cyfrowa. Użycie instrukcji SIMD pozwala na osiągnięcie 75 procentowego wzrostu wydajności. [4. Stosowane technologie]$ _ [22/32]
>>> Vector Floating Point (F) Vector Floating Point został wprowadzony w celu wspierania i przetwarzania sprzętowego liczb zmiennoprzecinkowych połowicznej, pojedynczej i podwójnej precyzji. Nazwa jednostki wzięła się z tego, że była ona przeznaczona do operacji wektorowych w systemach autonomicznych związanych z ruchem i kontrolą. Pierwszą wersją była wersja VFPv1, szybko zastąpiona przez VFPv2 w rdzeniach ARMv5TE, ARMv5TEJ, i ARMv6. VFPv3 jest opcjonalnie dostępna w ARMv7-A i ARMv7-R, używana nie tylko w instrukcjach ARM ale także w Thumb i ThumbEE. Syntezowalna wersja jest dostępne pod nazwą VFP9-S, jako koprocesor w rodzinie ARM9E. [4. Stosowane technologie]$ _ [23/32]
>>> EmbeddedICE (I) EmbeddedICE jest potężnym środowiskiem przeznaczonym do debbugowania, rdzenie wspierające technologię EmbeddedICE zawierają makrokomórkę wewnątrz rdzenia. Makrokomórka EmbeddedICE zawiera dwie jednostki watchpoint czasu rzeczywistego real-time, które zatrzymują wykonywania instrukcji przez rdzeń. Jednostki watchpoint mogą być programowane w taki sposób, aby przerwać działania zgodnie z jakimś warunkiem, kiedy wartość odpowiada wartości szyny adresowej lub czyny danych, bądź innych sygnałów. [4. Stosowane technologie]$ _ [24/32]
>>> Jazelle (J) Jazelle DBX (Direct Bytecode execution) technologia umożliwiająca uruchamianie kodu Java przez procesor ARM. Pierwsza implementacja tej technologi została wprowadzona w architekturze ARMv5TEJ, wraz z pierwszym procesorem ARM 926EJ-S. [4. Stosowane technologie]$ _ [25/32]
>>> Long Multiply (M) Warianty M rdzenia ARM posiadają rozbudowane sprzętowe mnożenie. Wprowadza to trzy udoskonalenia względem poprzednika: * Użycie 8-bitowego algorytmu Booth a, oznaczającego przyspieszenie wykonywania mnożenia szybciej w maksymalnie 5 cyklach * Zastosowanie metody szybszego zakończenia, oznaczające szybsze zakończenie mnożenia dzięki zastosowaniu specyficznych warunków * 64-bitowe mnożenie dwóch liczb 32-bitowych stało się możliwe dzięki zapisowi rezultatów w parze rejestrów. Technologia stała się standardem rdzeni ARM dla wersji ARMv4 i wyższych, a w ARM9 wprowadzono szybszy 2 cyklowy układ mnożący. [4. Stosowane technologie]$ _ [26/32]
>>> Płyta prototypowa SAM3U-EK [5. Płyta prototypowa]$ _ [27/32]
>>> Komponenty i interfejsy I * układ SAM3U4E * 12 MHz rezonator * 32.768 KHz rezonator * opcjonalne złącze SMB * PSRAM * NAND Flash * Bateria zegara * kolorowy, dotykowy wyświetlacz TFT 2.8 cala * port UART * port USART * złącza we/wy audio * obsługa interfejsu SD/MMC * akcelerometr 3-D * sensor temperatury * przyciski Reset oraz Wake-Up [5. Płyta prototypowa]$ _ [28/32]
>>> Komponenty i interfejsy II * programowalne przyciski Lewo oraz Prawo * port High Speed USB * port JTAG * regulacja zasilania na płycie * Dwie programowalne diody LED * Dioda LED zasilania * złącza BNC do sygnałów dla ADC * potencjometr podłączony do ADC * złącze ZigBee * 3x32 bit złącze PIO (PIOA, PIOB, PIOC) [5. Płyta prototypowa]$ _ [29/32]
>>> Procesor * ARM Cortex-M3 revision 2.0 running at up to 96 MHz * Memory Protection Unit (MPU) * zestaw instrukcji Thumb-2 * 256 KB Flash, 128 bitowa szyna * 48 KB wbudowanej pamięci SRAM * 16 KB ROM z wbudowanymi procedurami bootowania (UART, USB) [5. Płyta prototypowa]$ _ [30/32]
>>> GameBoy Advanced * ARM7tdmi 16.78 MHz * 240x160 15bit kolorowy LCD * 6 kanałowy dźwięk * 10 przycisków * 14 przerwań sprzętowych [5. Płyta prototypowa]$ _ [31/32]
>>> References Andrew Sloss, Dominic Symes, and Chris Wright. ARM System Developer s Guide: Designing and Optimizing System Software. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2004. [5. Płyta prototypowa]$ _ [32/32]