Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel. 631 2720 dmakow@dmcs.pl http://neo.dmcs.p.lodz.pl/sw



Podobne dokumenty
Procesory ARM w systemach wbudowanych

Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel dmakow@dmcs.pl

Wykład 2. Mikrokontrolery z rdzeniami ARM

Wykład 2. Mikrokontrolery z rdzeniami ARM

Procesory firmy ARM i MIPS

Pamięci i urządzenia peryferyjne Wprowadzenie do przedmiotu

Szkolenia specjalistyczne

Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel

Procesory ARM w systemach wbudowanych

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Bibliografia: pl.wikipedia.org Historia i rodzaje procesorów w firmy Intel

Architektura mikroprocesorów z rdzeniem ColdFire

Rynkowe nowości, część 1

Wykład 5. Architektura ARM

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

System mikroprocesorowy i peryferia. Dariusz Chaberski

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

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

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Programowanie w asemblerze ARM wprowadzenie

Mikroprocesor Operacje wejścia / wyjścia

Metody obsługi zdarzeń

Przerwania, polling, timery - wykład 9

Architektura mikroprocesorów z rdzeniem ColdFire

Pamięci i urządzenia peryferyjne Wprowadzenie do przedmiotu

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

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Podstawy Techniki Mikroprocesorowej

Procesory rodziny x86. Dariusz Chaberski

Architektura mikroprocesorów TEO 2009/2010

Wykład 6. Mikrokontrolery z rdzeniem ARM

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Programowanie Mikrokontrolerów

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Procesory Blackfin. Część 1

Technika mikroprocesorowa. Linia rozwojowa procesorów firmy Intel w latach

PRZERWANIA. P1 - Procedura obslugi przerwania. Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1

(Rysunek z książki T.Starecki. Mikokontrolery jednoukładowe rodziny 51. NOZOMI W-wa 1996)

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Wykład 7. Architektura mikroprocesorów powtórka

Struktura i działanie jednostki centralnej

MIKROKONTROLERY I MIKROPROCESORY

Technika Mikroprocesorowa

Układy czasowo-licznikowe w systemach mikroprocesorowych

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Mikroprocesory i Mikrosterowniki

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

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

Mikrokontrolery w mechatronice. Wykład 4

Wykład 2. Przegląd mikrokontrolerów 8-bit: -AVR -PIC

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

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Architektura typu Single-Cycle

USB interface in 8-bit microcontrollers PIC18F family manufactured by Microchip.

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

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

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

2. Architektura mikrokontrolerów PIC16F8x... 13

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Przerwania w systemie mikroprocesorowym. Obsługa urządzeo wejścia/wyjścia

LEKCJA TEMAT: Zasada działania komputera.

Działanie systemu operacyjnego

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Mikroprocesory i Mikrosterowniki

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Wstęp Architektura... 13

Systemy na Chipie. Robert Czerwiński

Technika mikroprocesorowa I Wykład 2

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

Architektura systemów komputerowych

1. Wstęp Różnice pomiędzy mikrokontrolerami ST7 a ST7LITE Rdzeń mikrokontrolerów ST7FLITE... 15

Działanie systemu operacyjnego

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Hardware mikrokontrolera X51

System czasu rzeczywistego

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

LEKCJA TEMAT: Współczesne procesory.

Architektura typu multi cycle

organizacja procesora 8086

Mikroprocesory rodziny INTEL 80x86

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Architektura systemów komputerowych. dr Artur Bartoszewski

Komputery klasy PC. Dariusz Chaberski

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Budowa Mikrokomputera

Opracował: Jan Front

WPROWADZENIE Mikrosterownik mikrokontrolery

Układy czasowo-licznikowe w systemach 80x86

Architektura komputerów. Układy wejścia-wyjścia komputera

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Technika mikroprocesorowa

Działanie systemu operacyjnego

Specyfika projektowania Mariusz Rawski

Wstęp: Interfejs portu równoległego 6821 i portu szeregowego 6850 firmy Motorola

>>> Techniki rozbudowy systemów wbudowanych >>> Systemy wbudowane. Name: Mariusz Naumowicz Date: 29 maja 2019 [~]$ _ [1/32]

Transkrypt:

Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel. 631 2720 dmakow@dmcs.pl http://neo.dmcs.p.lodz.pl/sw 1

Zakres przedmiotu Systemy mikroprocesorowe, systemy wbudowane Rodzina procesorów ARM Asembler Urządzenia peryferyjne Programy wbudowane na przykładzie procesorów ARM Metodyki projektowania systemów wbudowanych Interfejsy w systemach wbudowanych 2

Od Acorn Computers Ltd. ARM do ARM Ltd. Acorn Firma utworzona w 1990 roku, Powstała z firmy produkującej komputery Acorn Computers, Firma ARM nie produkuje procesorów, Projektuje i sprzedaje licencje projektów tzw. rdzeni (Intellectual Property Cores) procesorów ARM oraz urządzeń peryferyjnych, Produkuje narzędzia, płyty prototypowe, narzędzia do debugowania, standardy. 3

Wybrane firmy produkujące procesory zgodne z architekturą ARM Agi lent, AKM, Alcatel, Altera, Atmel, Broadcom, Chip Express, Cirrus Logic, Digital Semiconductor, esilicon, Fujitsu, GEC Plessey, Global UniChip, HP, Hyundai, IBM, Intel, ITRI, LG Semicon, LSI Logic, Lu cent, Matsushita, Micrel, Micronas, Mitsubishi, Freescale, NEC, OKI, Philips, Qu alcomm, Rockwell, Rohm, Samsung, Samsung, Sanyo, Seagate, Seiko Epson, Sharp, Sony, STMicroelectronics, Symbios Logic, Texas Instru ments, Xilinx, Yamaha, Zeevo, ZTEIC,... 4

Zastosowanie procesorów ARM 5

Historia mikroprocesorów ARM 1985 Sophie Wilson and Steve Furber projektują pierwszy procesor RISC w firmie Acorn Computers Limited, Cambridge, ARM = Acorn (Advanced) RISC Machine 1985 prototypowe procesory ARM 1 (wersja architektury v1) 1986 procesory ARM 2 opuszczają fabrykę (32-bit, 26-bit adres, 16 rejestrów 16 bitowych, 30.000 tranzystorów, wersja architektury v2/v2a, 8 MHz) 1990 Apple Computer i VLSI Technology rozpoczynają współpracę nad kolejną wersja rdzenia procesora ARM (ARMv3) 1990 wyłania się nowa firma Advanced RISC Machines Ltd. odpowiedzialna za dalszy rozwój procesorów ARM 1991 pojawia się pierwszy procesor będący wynikiem współpracy z firmą Apple procesor z jądrem ARM 6 (stosowany w jako procesor ARM 610 w Apple Newton PDA, wersja architektury v3, 33 MHz) 1995 firma ARM wprowadza na rynek bardzo udany model procesora z rdzeniem ARM7TDMI (architektura ARMv4T) oraz StrongARM (Intel, 233 MHz) 2001 firma ARM wprowadza kolejny model procesora z rdzeniem ARM9TDMI (architektura ARMv5TEJ, 220 MHz) 2003 procesory serii ARM 11 (architektura rdzenia ARMv6, 1 GHz, technologia 65 nm) 2004 procesor z rdzeniem Cortex M3 (ARMv7-M, 100 MHz) 2008 kolejny model procesora ARM Cordex A8/A9 (architektura ARMv7, 2 GHz), Cortex-R/M 6

Dostępne wersje architektury rdzenia ARM Liczba oraz rodzaj instrukcji, które realizują jednostki wykonawcze dostępnych rdzeni procesorów ARM zależą od wersji rdzenia (V1 - V7). Dostępne procesory AMR budowane są w oparciu o następujące wersje architektury: Układy z rdzeniami ARM7, wykorzystywane w aplikacjach o niskim poborze energii, wykorzystują podstawowy zestaw instrukcji udostępniany przez wersję 4T, Układy z rdzeniami ARM9 (ARM926EJ-S, ARM1026EJ-S) zbudowane są w oparciu o architekturę w wersji 5 (instrukcje DSP, rozbudowane instrukcje arytmetyczne MLA, itd...), Układy z rdzeniem ARM11 wykorzystują architekturę instrukcji w wersji 6 (instrukcje operujące na bajtach, instrukcje ułatwiające operacje graficzne), Układy z rodziny Cortex A8/A9, M3, R4 zbudowane są w oparciu o listę instrukcji w wersji 7 (nowy zestaw instrukcji 16 bitowych Thumb 2, rozbudowany system oszczędzania energii oraz bezpieczeństwa). 7

Rodzina procesorów ARM oraz ich zastosowanie 8

Architektury i dostępne rdzenie procesorów ARM 9

Porównanie wydajności procesorów 10

ARM silna dominacja na rynku Firma ARM sprzedaje obecnie ponad 10 milionów rdzeni procesorów każdego dnia (szacuje się, że wyprodukowano ponad 15 miliardów procesorów z rdzeniami ARM). Procesory ARM z rdzeniem w wersji ARMv7 (Cortex): Procesory do zastosowań komputerowych (Application Processors): Cortex-A silne procesory przeznaczony do obsługi systemów operacyjnych (cyfrowe dekodery, np. HDTV, DVD, komputery Netbook, telefony komórkowe, PDA, smartofony, cyfrowe ramki do zdjęć, itd...), Procesory do zastosowań wbudowanych (Embedded Processors): Cortex-R procesory przeznaczone do zastosowań w systemach czasu rzeczywistego (Real-time Applications, niski pobór mocy, szybka reakcja na zdarzenia zewnętrzne, np. motoryzacja: ABS, urządzenia peryferyjne komputera PC, sterowanie HDD, Ethernet, sterowniki drukarek), Cortex-M procesory będące odpowiednikami mikrokontrolerów (niski pobór mocy, niska cena, np. sterowanie procesami przemysłowymi, inteligentne czujniki, motoryzacja sterownie procesami innymi niż RT, M3 - tylko Thumb2). 11

ARM Cortex A9 w konfiguracji MPCore Technologia MPCore pozwala na budowę SoC cztery rdzenie procesorów A9 12

Procesory z rdzeniem ARM Procesory ARM są szeroko stosowane w systemach wbudowanych i systemach o niskim poborze mocy, ze względu na energooszczędną architekturę Procesor ARM jest jednym z najczęściej stosowanych procesorów na świecie. Jest używany w dyskach twardych, telefonach komórkowych, routerach, kalkulatorach a nawet w zabawkach dziecięcych Obecnie zajmuje ponad 75% rynku 32-bitowych CPU dla systemów wbudowanych Najbardziej udanym projektem ARM był procesor ARM7TDMI szeroko stosowany w systemach wbudowanych Moc obliczeniowa procesorów ARM umożliwia instalację na tym procesorze systemu operacyjnego, z zaimplementowanymi mechanizmami wielowątkowości, z możliwością wykorzystania zawartego w systemie stosu TCP/IP, systemu plików (np. FAT32). Systemy operacje: dystrybucje Embedded Linux (Embedded Debian, Embedded Ubuntu), Windows CE, Symbian, NUTOS (Ethernet),... 13

Zastosowanie procesorów ARM 14

Porównanie wybranych procesorów ARM Architecture Version ARM6 ARMv3 ARM7 ARMv3 ARM7TDMI ARMv5TEJ StrongARM ARMv4 Family ARM8 ARMv4 ARM9TDMI ARM9E ARM10E XScale ARM11 ARMv4T ARMv5TEJ ARMv5TE ARMv5TE ARMv6 Cortex ARMv7-A Core Feature ARM610 ARM7500FE ARM7EJ-S SA-110 Cache, no coprocessor Integrated SoC. "FE" Added FPA and EDO memory controller. Jazelle DBX, Enhanced DSP instructions, 5-stage pipeline 5-stage pipeline, MMU 5-stage pipeline, static branch prediction, double-bandwidth ARM810[7] memory ARM920T 5-stage pipeline ARM926EJ-S Jazelle DBX, Enhanced DSP instructions ARM1020E VFP, 6-stage pipeline, Enhanced DSP instructions PXA27x MMX and SSE instruction set, four MACs, ARM1136J(F)-S SIMD, Jazelle DBX, VFP, 8-stage pipeline Application profile, VFP, NEON, Jazelle RCT, Thumb-2, 13-stage Cortex-A8 superscalar pipeline Cache (I/D)/MMU Typical MIPS @ MHz 4K unified 4 KB unified 8 KB 16 KB/16 KB, MMU 17 MIPS @ 20 MHz 55 MIPS @ 56 MHz 120 MIPS @ 133 MHz 235 MIPS @ 206 MHz 8 KB unified, MMU 1.0 DMIPS/MHz 16 KB/16 KB, MMU variable, TCMs, MMU 32 KB/32 KB, MMU 32 Kb/32 Kb, MMU variable, MMU variable (L1+L2), MMU+TrustZone 245 MIPS @ 250 MHz 220 MIPS @ 200 MHz 300 MIPS @ 325 MHz 800 MIPS @ 624 MHz 740 @ 532-665 MHz >1000 MIPS@ 600 M-1 GHz 15

Rdzeń procesora ARM 16

Architektura ARM (1) Rdzeń procesora ARM procesor zgodny z architekturą ARM zaprojektowany w języku opisu sprzętu (najczęściej VHDL lub Verilog) dostarczony jako makrokomórka (ang. macrocell) lub IP (ang. Intellectual Property). Cechy rdzeni procesorów ARM: Przeznaczony do dalszej rozbudowy procesory, SoC 32-bitowy procesor zgodny z architekturą RISC Wbudowana jednostka zarządzania pamięcią MMU Zoptymalizowany pod względem niskiego poboru mocy Różne tryby pracy: 32-bitowe instrukcje ARM 16-bitowe instrukcje Thumb Instrukcje języka Java - Jazelle DBX Praca w trybie Big lub Little Endian Szybka obsługa przerwań (FIR Fast Interrupt Response), aplikacje czasu rzeczywistego Pamięć wirtualna Lista wydajnych instrukcji (zoptymalizowane na podstawie architektury RISC oraz CISC) Sprzętowe wsparcie dla języków wyższego poziomu 17

Architektura ARM (2) Rdzeń procesora ARM wykorzystuje architekturę RISC: Zredukowana liczba instrukcji, Brak bezpośredniego odwołania do pamięci tylko instrukcje operujące Load/Store na pamięci, Duża liczba dostępnych rejestrów ogólnego przeznaczenia, Architektura superskalarna. Różnice w odniesieniu do klasycznych procesorów RISC: Instrukcje wzbogacone o dodatkowe funkcje: Instrukcje Thumb/Thumb2, Instrukcje DSP, Warunkowe wykonywanie instrukcji, 32 bitowy przesuwnik bitowy, Instrukcje umożliwiające operacje na wielu rejestrach, Tryby adresowania z auto-dekrementacją i auto-inkrementacją. 18

Architektura ARM (3) Nomenklatura: ARM {x} {y} {z} {T} {D} {M} {I} {E} {J} {F} {S} x rodzina rdzenia y zarządzanie pamięcią/ochrona pamięci (opcjonalnie) z pamięć cache (opcjonalnie) T Thumb, rdzeń może wykonywać 16-bitowe rozkazy D Debug, rdzeń wyposażony w moduł JTAG umożliwiający debugowanie M Multiplier, wyposażony w sprzętowy układ mnożący (32x32 = 64 bit) I ICE, moduł pozwalający na debugowanie w układzie (ang. In-Circuit Emulator, breakpoints) E Enhanced DSP instructions, instrukcje przydatne podczas przetwarzania sygnałów J Jazelle, F Floating-point, moduł wspomagający obliczenia zmiennoprzecinkowe S Synhesizible version, wersja sytezowalna dostępne kody źródłowe dla narzędzi EDA Przykłady: ARM7TDMI ARM9TDMI-EJ-S 19

Architektura ARM (4) Wersja 1, v1 podstawowe operacje arytmetyczno/logiczne, programowe przerwania, 8 i 32 bitowe operacje na danych, 26-bitowy adres Wersja 2, v2 jednostka mnożąca oraz mnóż i sumuj (MAC), dostępny koprocesor, operacje służące do synchronizacji wątków, 26-bitowy adres Wersja 3, v3 nowe rejestry CPSR, SPSR, MRS, MSR, dostępne dodatkowe tryby pracy Abort i Undef, 32-bitowy adres 20

Architektura ARM (5) Wersja 4, v4 pierwsza oficjalnie zatwierdzona architektura w prowadzono 16-bitowe operacje na danych tryb pracy THUMB dodatkowy uprzywilejowany tryb pracy procesora (privileged mode) możliwość inkrementacji PC o podwójne słowo (64 bit) Wersja 5, v5 ulepszona współpraca procesora pomiędzy trybami ARM/THUMB, możliwość zmiany trybu procesora w czasie wykonywania programu dodana instrukcja CLZ (Count Leading Zeros) możliwość użycia programowych pułapek wsparcie dla pracy wieloprocesorowej Wersja 6, v6 ulepszona jednostka zarządzania pamięcią MMU (Management Memory Unit) sprzętowe wsparcie dla przetwarzania dźwięku i obrazu (FFT, MPEG4, SIMD, etc...) ulepszona obsługa wyjątków (nowa flaga w rejestrze PSR) 21

Rozkazy procesora ARM Z punktu widzenia wykonywanych instrukcji procesor ARM może pracować w jednym z następujących trybów: ARM definiuje 32-bitowe instrukcje (kod programu musi być wyrównany do granicy 4 bajtów), Thumb, Thumb-2 definiuje zestaw 16-bitowych instrukcji zoptymalizowanych pod kątem (kod programu musi być wyrównany do granicy 2 bajtów, wszystkie rejestry pracują w trybie 32 bitowym), Jazelle v1 tryb pozwalający na bezpośrednie wykonywanie instrukcji zgodnych ze specyfikacją języka Java (bez użycia maszyny wirtualnej JVM, 1000 Caffeine Marks @ 200MHz) 22

Wsparcie dla języka Java Oznaczenie rdzenia procesora z literą 'J' Dynamiczne podmiana rejestrów oraz stosu Sprzętowa realizacja dekodera instrukcji nie maszyna wirtualna 23

Model programowy rejestry procesora Procesor ARM posiada łącznie 37 rejestrów (wszystkie są 32 bitowe): PC (r15) licznik programu (Program Counter) CPSR rejestr statusowy, obecny status (Current Program Status Register) SPSR rejestr statusowy, dostępne w różnych trybach uprzywilejowania (Saved Program Status Register) LR (r14) rejestr powrotu (Link Register), wykorzystywany podczas tworzenia ramki stosu (instrukcje skoku do funkcji) SP (r13) zwykle używany jako wskaźnik stosu (Stack Pointer) r0 - r12 rejestry ogólnego przeznaczenia Uwaga : Nie wszystkie rejestry są dostępne w różnych trybach uprzywilejowania procesora 24

Licznik programu W przypadku wykonywania instrukcji AMR: Wszystkie instrukcje są 32 bitowe, Wszystkie instrukcje muszą być wyrównane do granicy 4 bajtów PC wykorzystuje tylko 30 bitów (31..2). W przypadku wykonywania instrukcji Thumb: Wszystkie instrukcje są 16 bitowe, Wszystkie instrukcje muszą być wyrównane do granicy 2 bajtów, PC wykorzystuje tylko 31 bitów (31..1). W przypadku pracy w trybie Jazelle: Wszystkie instrukcje są 8 bitowe, Procesor odczytuje zawsze 4 kolejne instrukcje, PC wykorzystuje tylko 30 bitów (31..2). 25

Rejestr statusowy CPSR/SPSR procesora AMR9 31 28 27 24 N Z C V Q 23 J 16 15 8 U n d e f i n e d f Wskaźniki stanu s V przepełnienie podczas operacji ALU (overflow) C przeniesienie/pożyczka podczas operacji ALU 7 6 x Przerwania I=1 4 0 I F T mode c Przerwania IRQ wyłączone F=1 Przerwania FIQ wyłączone Wskaźniki dostępne dla arch. xt Z zerowy wynik podczas operacji ALU T=0 Tryb pracy ARM N ujemny wynik operacji ALU lub mniejszy niż T=1 Tryb pracy Thumb Wskaźniki dostępne jedynie dla architektury 5TE/J 5 Tryb pracy procesora Definiują jeden z 7 trybów J Procesor w trybie Jazelle Q Sticky Overflow wskaźnik nasycenia podczas operacji ALU (QADD, QDADD, QSUB or QDSUB, lub rezultat operacji SMLAxy or SMLAWx przekracza 32-bity) 26

Model programowy dostępne tryby pracy procesora Tryb pracy procesora (operating mode) - określa jakie zasoby procesora są dostępne, np. dostępne rejestry, obszary pamięci, urządzenia peryferyjne. Procesory ARM mogą pracować w jednym z siedmiu trybów pracy: User tryb użytkownika (nieuprzywilejowany) przeznaczony do wykonywania programów użytkownika, FIQ tryb obsługujący przerwania i wyjątki o wysokich priorytetach (szybki) IRQ obsługa przerwań z niskim priorytetem (low/normal priority) Supervisor tryb pracy superużytkownika, dostęp do wszystkich zasobów procesora (dostępny po resecie lub przerwanie programowe) Abort obsługa wyjątków związanych z pamięcią (memory access violations) Undef obsługa nieznanych/błędnych rozkazów System tryb pracy superużytkownika, dostęp do rejestrów takich jak w trybie User jednak możliwy dostęp do różnych obszarów pamięci 27

Model programowy rejestry dostępne w trybie User oraz System Current Visible Registers User Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) Banked out Registers FIQ IRQ SVC Undef Abort r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) spsr spsr spsr spsr spsr cpsr 28

Model programowy rejestry dostępne w trybie FIQ Current Visible Registers FIQ Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr spsr Banked out Registers User IRQ SVC Undef Abort r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) spsr spsr spsr spsr 29

Model programowy rejestry dostępne w trybie IRQ Current Visible Registers IRQ Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr spsr Banked out Registers User FIQ SVC Undef Abort r13 (sp) r8 r9 r10 r11 r12 r13 (sp) r13 (sp) r13 (sp) r13 (sp) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) spsr spsr spsr spsr 30

Model programowy rejestry dostępne w trybie Supervisor Current Visible Registers SVC Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr spsr Banked out Registers User FIQ IRQ Undef Abort r13 (sp) r8 r9 r10 r11 r12 r13 (sp) r13 (sp) r13 (sp) r13 (sp) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) spsr spsr spsr spsr 31

Model programowy rejestry dostępne w trybie Abort Current Visible Registers Abort Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr spsr Banked out Registers User FIQ IRQ SVC Undef r13 (sp) r14 (lr) r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) spsr spsr spsr spsr 32

Model programowy rejestry dostępne w trybie Undef Current Visible Registers Undef Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr spsr Banked out Registers User FIQ IRQ SVC Abort r13 (sp) r8 r9 r10 r11 r12 r13 (sp) r13 (sp) r13 (sp) r13 (sp) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) spsr spsr spsr spsr 33

Model programowy podsumowanie dostępnych rejestrów User r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) FIQ User mode r0-r7, r15, and cpsr IRQ User mode r0-r12, r15, and cpsr SVC Undef Abort User mode r0-r12, r15, and cpsr User mode r0-r12, r15, and cpsr User mode r0-r12, r15, and cpsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) r13 (sp) r14 (lr) spsr spsr spsr spsr spsr T humb state L ow registers T humb state H igh registers cpsr Note: System mode uses the User mode register set 34

Rejestry procesora a GDB (gdb) info r r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 sp lr pc fps cpsr 0x2 0x20000ba4 0x57b 0x270f 0x300069 0x3122dc 0x1000 0x800bc004 0x3122c4 0x407c81a4 0x441029ab 0x313f2c 0x313f30 0x313f18 0x20000a7c 0x20000474 0x0 0x80000053 0x2 0x20000ba4 0x57b 0x270f 0x300069 0x3122dc 0x1000 0x800bc004 0x3122c4 0x407c81a4 0x441029ab 0x313f2c 0x313f30 0x313f18 0x20000a7c 0x20000474 <delay+60> 0x0 0x80000053 35

Obsługa sytuacji wyjątkowych Wyjątek (ang. exception) mechanizm kontroli przepływu danych występujący w mikroprocesorach oraz we współczesnych językach programowania służący do obsługi zdarzeń wyjątkowych, a w szczególności sytuacji błędnych. Wyjątki dzielimy na: niepowodzenia (ang. fault) błędy nienaprawialne (ang. abort) pułapki (ang. trap) przerwania (ang. interrupts) 36

Obsługa wyjątków Wystąpienie wyjątku w przypadku procesorów ARM powoduje: Wykonanie kopii CPSR do rejestru SPSR_<mode> Ustawienie odpowiednich bitów rejestru CPSR Zmiana trybu pracy do trybu ARM Przełączenie w tryb obsługi wyjątków Wyłączenie przerwań Zapisanie obecne rejestru do rejestru LR_<mode> Ustawienie rejestru PC na adres odpowiedniego wektora obsługującego dany wyjątek W przypadku powrotu z wyjątku uchwyt obsługujący dany wyjątek powinien: FIQ IRQ 0x1C 0x18 0x10 (Reserved) Data Abort 0x0C Prefetch Abort 0x08 Software Interrupt 0x04 Undefined Instruction 0x00 Reset 0x14 Vector Table Odtworzyć zawartość CPSR z SPSR_<mode> Odtworzyć rejestr PC z LR_<mode> Powyższe operacje można wykonać wyłącznie w trybie ARM Vector table can be at 0xFFFF0000 on ARM720T and on ARM9/10 family devices 37

Rdzenia procesora ARM7xxx Cechy rdzenia ARM7TDM: Architektura rdzenia ARMv4, Trójstopniowy potok wykonawczy, Procesor stałoprzecinkowy, Wykorzystywane w telefonach komórkowych, odtwarzaczach mp3, itd... 38

Struktura rdzenia ARM7TDM 39

Rdzenia procesora ARM9xxx Cechy rdzenia ARM9TDM: Architektura rdzenia ARMv5, Pięciostopniowy potok wykonawczy, Wbudowana jednostka zarządzania pamięcią MMU (wsparcie dla systemów operacyjnych WinCE, Linux, Symbian), Rozdzielona pamięć cache dla instrukcji i programu, Procesor stałoprzecinkowy, Zestaw instrukcji ARM, Thumb, Wykorzystywane w zaawansowanych telefonach komórkowych, urządzeniach telekomunikacyjnych, itd... 40

Potok wykonawczy instrukcji, ARM7 vs ARM9 ARM7TDMI Instruction Fetch Thumb ARM decompress FETCH ARM decode Reg Select DECODE Reg Read Shift ALU Reg Write EXECUTE ARM9TDMI Instruction Fetch ARM or Thumb Inst Decode Reg Reg Decode Read FETCH DECODE Shift + ALU EXECUTE Memory Access Reg Write MEMORY WRITE 41

Rdzenia procesora ARM11xx Cechy rdzenia ARM11TDM: Architektura rdzenia ARMv6, Siedmiostopniowy potok wykonawczy, Lepsza wydajność oraz obniżony pobór mocy, Rozdzielona pamięć cache dla instrukcji i programu, Dodatkowe instrukcje DSP oraz SIMD, Wykorzystywane w PDS, smartphonach, przenośnych grach komputerowych, itd... 42

Potok wykonawczy instrukcji, ARM10 vs ARM11 ARM10 Branch Prediction Instruction Fetch FETCH ARM or Thumb Instruction Decode ISSUE Reg Read DECODE Shift + ALU Memory Access Multiply Multiply Add EXECUTE MEMORY Reg Write WRITE ARM11 Fetch 1 Fetch 2 Decode Issue Shift ALU Saturate MAC 1 MAC 2 MAC 3 Address Data Cache 1 Data Cache 2 Write back 43

Potok wykonawczy procesora Cortex-A8 44

Porty wejścia-wyjścia procesora ARM AT91SAM9263 45

Mikrokontroler AT91SAM9263 (1) Cechy mikrokontrolera AT91SAM9263: architektura typu System-On-Chip, Jądro ARM926EJ-S (220 MIPS dla 200 MHz), Jednostka zarządzająca pamięcią MMU (Memory Management Unit), Sterownik bezpośredniego dostępu do pamięci DMA (27 kanałów DMA), Wsparcie dla systemu debugowania EmbeddedICE, Dostępne instrukcje DSP (Digital Signal Processing) oraz wsparcie dla j. Java, Bogate urządzenia peryferyjne: Sterownik wyświetlacza LCD TFT/STN (2D graphics co-processor, 2048x2048), Sterownik camery cyfrowej, Układ dostarczany w obudowie BGA 324 (wyprowadzenia), 46

47

Mikrokontroler AT91SAM9263 - dokumentacja 48

Mikrokontroler AT91SAM9263 porty I/O Źródło: ATMEL, doc6249.pdf, strona 425 49

Schemat blokowy 32-bitowego portu I/O Advanced Peripheral Bus 50

Zegar, a pobór energii 51

Rejestry sterujące portem I/O 52

Mapa pamięci rejestrów 53

Opis rejestów w dokumentacji 54

Schemat blokowy portu I/O PIO_ODR = 1 Port I/O PIO_ODSR (Output Data Status Reg.) PIO_CODR (clear) D Q PIO_SODR (set) D Q PIO_OER PIO_OSR Clk Clk PIO_OER Output Enable Register Clk PIO_ODR Output Disable Register PIO_OSR Output Status Register PIO_PDSR (Pin Data Status Register) 55

Schemat blokowy portu I/O sterowanie wyjściem Output Enable Reg. Pull-Up Enable Reg. 100 k Periph. A status Reg. PIO Enable Reg. Multi-driver Enable Reg. (OpenDrain) Set Output Data Reg. 56

Schemat blokowy portu I/O odczyt stanu wejścia Pin Data Status Reg. Interrupt Status Reg. Input Filter Diss. Reg. Interrupt Enable Reg. Interrupt Mask Reg. 57

Sygnał cyfrowy Sygnał cyfrowy charakteryzują następujące parametry: f częstotliwość (okres), A amplituda. Układ cyfrowy może reagować na: Poziom sygnału (powyżej lub poniżej określonej wartości), Zbocze sygnału (zmiana wartości logicznej sugnału z '0' na '1' lub z '1' na '0'). 58

Przebiegi czasowe podczas sterowania portem I/O 1 cykl zegarowy opóźnienia, gdy wyjście sterowane jest rejestrami SODR/CODR. 2 cykle opóźnienia podczas zapisu całego portu (32 bit, ustwione bity rejestru PIO_OWSR) 59

Odczyt stanu przełącznika Interrupt Polling loop IRQ Sygnał asynchroniczny 60

Zarządzanie sygnałem zegarowym urządzeń peryferyjnych PMC Peripheral Clock Enable Register Register Name:PMC_PCER Address: 0xFFFFFC10 write_register(pmc_pcer,0x00000110); // Peripheral clocks 4 and 8 are enabled. write_register(pmc_pcdr,0x00000010); // Peripheral clock 4 is disabled. 61

Rejestry odwzorowane w strukturze - powtórzenie typedef volatile unsigned int AT91_REG; // Hardware register definition typedef struct _AT91S_PIO { AT91_REG PIO_PER; // PIO Enable Register, 32-bit register AT91_REG PIO_PDR; // PIO Disable Register AT91_REG PIO_PSR; // PIO Status Register AT91_REG Reserved0[1]; // AT91_REG PIO_OER; // Output Enable Register AT91_REG PIO_ODR; // Output Disable Registerr AT91_REG PIO_OSR; // Output Status Register AT91_REG Reserved1[1]; // AT91_REG PIO_IFER; // Input Filter Enable Register AT91_REG PIO_IFDR; // Input Filter Disable Register AT91_REG PIO_IFSR; // Input Filter Status Register AT91_REG Reserved2[1]; // AT91_REG PIO_SODR; // Set Output Data Register AT91_REG PIO_CODR; // Clear Output Data Register AT91_REG PIO_ODSR; // Output Data Status Register } AT91S_PIO, *AT91PS_PIO; 62

Operacje na rejestrach 63

Kody liczbowe W systemach mikroprocesorowych wykorzystuje się następujące systemy liczbowe: Kod dziesiętny, np. 10d Kod binarny, np. 11b (3d) Kod ósemkowy, np. 0111U2 (49d) Kod szesnastkowy, np. 0x55h (85d) Konwersja pomiędzy systemami liczbowymi: 1110.0111b 0xE7h =14 * 16 + 7 = 231d 0xAAh 1010.1010b 2^7 + 2^5 + 2^3 +2^1 = 128 + 32 +8 + 2 = 170d 0x13h? 78d? 0111.111.1011.1100? 64

Praca domowa Proszę zapisać następujące liczby w brakujących kodach liczbowych (dec, hex, bin, oct): 1011.0111.1111.0011b? 0x1234h? 546d? 078o? 123d 0xABCDEFh? 0001.1110.0010.1101.1111.0000.1011.1010.1101.1100b? 0xABCDEF12h? 32768d? 65

Liczby ujemne Wyróżnia się dwa systemy reprezentacji liczb ujemnych: Zapis w kodzie znak-moduł, Zapis w kodzie U2. Jak zapisać liczbę w kodzie U2? Negacja liczby, zwiększenie o 1: Przykłady: -1d 1111U2 1d 0001b neg. 1110b 1111U2-55 xxxu2-127 xxxu2-128 xxxu2 66

Operacje na pamięci w języku C volatile unsigned int * DataInMemory = 0x1000; DataInMemory = 0; DataInMemory = 0x12345678; DataInMemory = 0xFFFF.FFFF; How to clear single bit? How to set single bit? 67

Operacje na rejestrach w języku C volatile unsigned char* PORTA=0x4010.000A; *PORTA = 0x1; *PORTA = 7; *PORTA = 010; *PORTA = *PORTA 0x2; *PORTA = 0x1 0x2 0x8 ; *PORTA &= ~(0x2 0x4); *PORTA ^= (0x1 0x2); *PORTA ^= 0x3; If (*PORTA & (0x1 0x4)) == 0 {...} while (*PORTA!= 0x6) {...} do {...} while (*PORTA & 0x4) 68

Operacje na rejestrach w języku C (2) #define PB0 0x1 #define PB1 0x2 #define PB2 1<<2 #define PB3 1<<3 volatile unsigned char* PORTA=0x4010.000A; *PORTA = PB1 PB2; *PORTA &= ~(PB1 PB2); *PORTA ^= (PB1 PB2); If (*PORTA & (PB1 PB2)) == 0 enum {PB0=1<<0, PB1=1<<2, PB2=1<<3, PB3=1<<3}; 69

Operacje na rejestrach w języku C (3) volatile unsigned char* PORTA=0x4010.000A; /* macro for bit-mask */ #define BIT(x) (1 << (x)) *PORTA = BIT(0); *PORTA &=~BIT(1); *PORTA ^= BIT(2); /* macro for setting and clearing bits */ #define SETBIT(P, B) (P) = BIT(B) #define CLRBIT(P, B) (P) &= ~BIT(B) SETBIT(*PORTA, 7); CLRBIT(*PORTA, 2); 70

Register Concatenation int main(void) { unsigned char reg1=0x15, reg2=0x55; unsigned char = reg3, reg4; unsigned int tmp; /* concatenation operation */ tmp = reg1; tmp = tmp<<8 reg2; /* deconcatenation operation */ reg3 = tmp>>8; /* be careful with signed numbers */ reg4 = tmp & 0xFF; } 71

Rejestry odwzorowane w strukturze Deklaracja nowego typu danych tworzy szablon układu rejestrów procesora w pamięci. Rejestrom zostają przypisane nazwy symboliczne. Utworzono nowy typ danych AT91S_PIO oraz wskaźnik *AT91PS_PIO na ten typ. Brak informacji o dostępie do rejestów (R/W) oraz wartości rejestrów po resecie. W celu uzupełnienia brakujących informacji można umieścić dodatkowe komentarze. typedef struct _AT91S_PIO { /* Register name R/W Reset val. Offset AT91_REG PIO_PER; // PIO Enable Register W - 0x00 AT91_REG PIO_PDR; // PIO Disable Register W - 0x04 AT91_REG PIO_PSR; // PIO Status Register R - 0x08 AT91_REG Reserved0[1]; // AT91_REG PIO_OER; // Output Enable Register W - 0x10 AT91_REG PIO_ODR; // Output Disable Register W - 0x14 AT91_REG PIO_OSR; // Output Status Register W - 0x18 } /* blok rejestrów portów I/O PIOA...PIOE */ #define AT91C_BASE_PIOA (AT91PS_PIO) 0xFFFFF200 // (PIOA) Base Address /* maska zerowego bitu portu PA */ #define AT91C_PIO_PA0 (1 << 0) // Pin Controlled by PA0 72

Odwołanie do rejestrów Zapis do rejestru AT91PS_PIO->PIO_OER = 0x5; Odczyt danej z rejestru volatile unsigned int ReadData; ReadData = AT91PS_PIO->PIO_OSR; Operacje bitowe AT91C_BASE_PIOA->PIO_PER = (AT91C_PIO_PA0 AT91C_PIO_PA19); AT91C_BASE_PIOA->PIO_PER = ~(AT91C_PIO_PA0 AT91C_PIO_PA19); AT91C_BASE_PIOA->PIO_ODSR ^= (AT91C_PIO_PA0 AT91C_PIO_PA19); 73

Przykład rejestu sterującego timer czasu rzeczywistego // -------- RTTC_RTMR : (RTTC Offset: 0x0) Real-time Mode Register -------#define AT91C_RTTC_RTPRES (0xFFFF << 0) // (RTTC) Real-time Timer Prescaler Value #define AT91C_RTTC_ALMIEN (0x1 << 16) // (RTTC) Alarm Interrupt Enable #define AT91C_RTTC_RTTINCIEN (0x1 << 17) // (RTTC) Real Time Timer Increment Interrupt Enable #define AT91C_RTTC_RTTRST (0x1 << 18) // (RTTC) Real Time Timer Restart 74

Definicja rejestrów pliki nagłówkowe #ifndef _PROJECT_H /*------------------------*/ /* LEDs Definition */ /*------------------------*/ #define _PROJECT_H /* * Include your AT91 Library files and specific * compiler definitions */ #include "AT91SAM9263-EK.h" #include "AT91SAM9263.h" #endif // _PROJECT_H #define AT91B_LED1 AT91C_PIO_PB8 /* DS1 */ #define AT91B_LED2 AT91C_PIO_PC29 /* DS2 */ #define AT91B_NB_LEB 2 #define AT91D_BASE_PIO_LED1 (AT91C_BASE_PIOB) #define AT91D_BASE_PIO_LED2 (AT91C_BASE_PIOC) #define AT91D_ID_PIO_LED1 (AT91C_ID_PIOB) #define AT91D_ID_PIO_LED2 (AT91C_ID_PIOC) /*--------------------------------*/ /* Push Button Definition */ /*--------------------------------*/ #define AT91B_BP1 AT91C_PIO_PC5 // Left click #define AT91B_BP2 AT91C_PIO_PC4 // Right click #define AT91D_BASE_PIO_BP AT91C_BASE_PIOC #define AT91D_ID_PIO_BP AT91C_ID_PIOCDE 75

Płyta uruchomieniowa MSC diody LED, klawiatura #define AT91B_LED1 AT91C_PIO_PB8 /* DS1 */ #define AT91B_LED2 AT91C_PIO_PC29 /* DS2 */ #define AT91B_BP1 AT91C_PIO_PC5 // Left click #define AT91B_BP2 AT91C_PIO_PC4 // Right clic 76

Konfiguracja portów I/O procesora #define AT91C_PIO_PB8 (1 << 8) #define AT91C_BASE_PIOB (AT91PS_PIO) // Pin Controlled by PB8 0xFFFFF400 // (PIOB) Base Address Konfiguracja Portu w tryb wejścia: /* Enable the periph clock for the PIO controller, This is mandatory when PIO are configured as input */ AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOCDE ); // peripheral clock enable register (port C, D, E) /* Set the PIO line in input */ AT91C_BASE_PIOD->PIO_ODR = 0x0000.000F; // 1 Set direction of the pin to input /* Set the PIO controller in PIO mode instead of peripheral mode */ AT91C_BASE_PIOD->PIO_PER = AT91C_PIO_PB8; // 1 Enable PIO to control the pin Konfiguracja Portu w tryb wyjścia: /* Configure the pin in output */ AT91C_BASE_PIOB->PIO_OER = AT91C_PIO_PB8 ; /* Set the PIO controller in PIO mode instead of peripheral mode */ AT91C_BASE_PIOD->PIO_PER = 0xFFFF.FFFF; // 1 Enable PIO to control the pin AT91C_BASE_PIOE->PIO_PER = AT91C_PIO_PB31; /* Disable pull-up */ AT91C_BASE_PIOA->PIO_PPUDR = 0xFFFF.0000; // 1 Disable the PIO pull-up resistor 77

Układy do odmierzania czasu timery procesora 78

Timery Timer urządzenie peryferyjne procesora przeznaczone do odmierzania określonych przedziałów czasu (zliczania elementarnych cykli zegarowych). Po odmierzeniu wymaganego okresu czasu timer zwykle generuje przerwanie. Timery wykorzystywane są do odmierzania czasu systemowego, przełączania wątków, generacji opóźnień. Przykładów układów służących do odmierzania czasu: Timer PIT (ang. Periodic Interval Timer, Programmable Interrupt Timer), Timer Czasu Rzeczywistego RTT (ang. Real-Time Timer), Timer PWM (ang. Pulse Width Modulation), Timer uniwersalny TC (ang. Timer Counter), Timer Watch-dog WDT. 79

Moduł timera PIT (Periodic Interval Timer) 80

Schemat blokowy timera PIT Licznik bieżący Licznik pomocniczy 81