. Flashcards
l
W zależności od typu struktury mapy pamięci, procesory rdzeniowe mogą mieć następującą architekturę:
- Architektura harwardzka -obszary adresowe pamięci danych i programu (wewnętrznych i czasami zewnętrznych) są rozdzielone. Magistrale danych i rozkazów mają różną szerokość długość słowa).
- Zmodyfikowaną architekturę harwardzką - jest rozwiązaniem pośrednim, starającym się połączyć zalety architektury harwardzkiej i Von-Neumanna. Obszary pamięci ROM i RAM są rozdzielone, ale charakteryzują się taką samą długością słowa.
- Architektura Von-Neumanna - cechuje się jednolitą przestrzenią adresową.
Architektury mikroprocesorów:
- von Neumanna, Harvard
- RISC i CISC
- VLIW i EPIC
- ARM, MIPS
CISC
- rozbudowane instrukcje
- operacje arytmetyczne bezpośrednio na lokalizacjach w pamięci
- możliwość zawansowanego programowania w języku maszynowym
- różna długość instrukcji
- często występujące instrukcje - 8 bitów
- rzadsze, rozbudowane instrukcje o większej długości
- znaczne różnice czasu wykonania poszczególnych instrukcji
RISC
- znacznie ograniczony zestaw instrukcji
- operacje ALU tylko na rejestrach
- prosty tryb adresowania - uproszczone odwołania do pamięci
- wszystkie instrukcje identycznej długości (32 bity)
- znacznie prostsza konstrukcja procesora
Cechy architektury RISC (Reduced Instruction Set Computer):
- Zredukowana liczba rozkazów. Upraszcza to znacznie dekoder rozkazów.
- Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, procesor jest zbudowany zgodnie z architekturą harwardzką,
- Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Do przesyłania danych pomiędzy pamięcią, a rejestrami służą dedykowane instrukcje (load, store) .
- Zwiększenie liczby rejestrów (np. 32, 192, 256),
- Dzięki przetwarzaniu potokowemu (ang. pipeling) wszystkie rozkazy wykonują się w jednym cyklu maszynowym.
- Zbiór realizowanych instrukcji jest ograniczony i spełnia warunki ortogonalności (symetrii).
- Procesor tego typu zamiast prostego rejestru instrukcji stosuje pamięć FIFO (first-in first-out), która gromadzi kolejkę instrukcji.
Cechy architektury von Neumanna:
- rozkazy i dane przechowywane są w tej samej pamięci,
- nie da się rozróżnić danych od rozkazów (instrukcji),
- dane nie maja przypisanego znaczenia,
- pamięć traktowana jest jako liniowa tablica komórek, które identyfikowane są przy pomocy dostarczanego przez procesor adresu,
- procesor ma dostęp do przestrzeni adresowej, dekodery adresowe zapewniają mapowanie pamięci na rzeczywiste układy.
Cechy architektury Harwardzkiej:
- rozkazy i dane przechowywane są w oddzielnych pamięciach,
- organizacja pamięci może być różna (inne długości słowa danych i rozkazów),
- możliwość pracy równoległej – jednoczesny odczyt danych z pamięci programu oraz danych,
- stosowana w mikrokontrolerach jednoukładowych.
Architektura ARM Cortex-M4
Wysoce wydajna, tania i energooszczędna, wykorzystywana w milionach urządzeń
Cortex-M należy do wersji nazw ARM, ARMv7. Wcześniejsze wersje ARM: ARMv4, ARMv5, ARMv6
Cortex-M: Procesory w tych profilach są wykorzystywane do rozwoju systemów wbudowanych opartych na mikrokontrolerach. Rodzina Cortex-M: Cortex-M0, Cortex-M0+, Cortex-M1, Cortex-M3, Cortex-M4 i Cortex-M7.
Cortex-A: Procesory w tym profilu są używane w urządzeniach o wysokiej wydajności, takich jak telefony komórkowe / komórkowe.
Cortex-R: Główny rynek procesorów tego profilu znajduje się w aplikacji w czasie rzeczywistym, gdzie głównym celem jest planowanie czasu reakcji.
Mikrokontrolery rodziny AVR – architektura
Rodzina 8- i 32-bitowych mikrokontrolerów o zmodyfikowanej architekturze harwardzkiej RISC, rozwijanych i produkowanych przez firmę Atmel
Jedna z najpopularniejszych rodzin mikrokontrolerów wykorzystywanych w dydaktyce, prostych projektach amatorskich, niewielka liczba projektów komercyjnych
Dzielą się na kilka rodzin, kompatybilnych binarnie, ale różniących się znacząco rozmiarem pamięci, częstotliwością taktowania i liczbą
wbudowanych układów peryferyjnych, najpopularniejsze to: ATtiny, ATmega, ATxmega
Dostępne są również modele przewidziane do specjalistycznych zastosowań, z wbudowanym kontrolerem CAN czy obsługujące zaawansowane tryby PWM
Mikrokontrolery rodziny AVR – architektura
Zalety
- Jedna z najpopularniejszych architektur, duża liczba użytkowników zgrupowana w społecznościach, duża ilością gotowego kodu, przykładów, tutoriali i narzędzi
- Mininalna liczba elementów potrzebna do działania mikrokontrolera
- Są ławo dostępne i tanie, nie ma zróżnicowania na modele łatwiej i trudniej dostępne
- Wiele wersji programatorów, większość bardzo prostych w budowie
- Wysoka wydajność
- Bardzo duże zróżnicowanie wersji, umożliwiające wybór optymalnego mikrokontrolera do danego zastosowania
- Posiadają obudowy „przyjazne” do prototypowania
- Mogą być zasilane napięciem od 3 do 5V
- Cena i dostępność
Rodzina UC3 układy wyposażoną w rdzeń AVR32 i pamięć Flash
- Rdzeń AVR32 zaprojektowany został w oparciu o architekturę harwardzką
- Posiada Hmatrix - wielopoziomową wewnętrzną magistrale komunikacyjną, która zapewnia szybki transfer pomiędzy modułami wewnętrznymi mikrokontrolera
- Wyposażona jest w szybkie interfejsy komunikacyjne, w tym ethernet i duży stopień integracji peryferii.
- Zewnętrzna magistrala obsługuje pamięci SRAM, SDRAM, ROM, Flash oraz inne urządzenia o organizacji pamięci (LCD, FPGA)
- Realizuje jednocyklowe instrukcje DSP- mnożenie i mnożenie z akumulacją. Wyniki operacji mogą być 32-, 48- i 64-bitowe
- Przy częstotliwości taktowania 66 MHz układ UC3 pracuje z wydajnością 80 MIPS. Porównywalny z ARM 7
- Dla układów z rdzeniem AVR32 powstało środowisko programowe AVR32 Studio oraz kompilator GNU GCC (obecnie zintegrowane w ATMEL studio 7) oraz FreeRTOS
Mikrokontrolery rodziny AVR – architektura, lista rozkazów
Peryferia komunikacyjne.
- Konfigurowalny Ethernet MAC 10/100 wspiera zarówno tryb pracy MII. Ethernet MAC ma dedykowany kanał DMA.
- USB 2.0 FS 12Mbps z funkcją hosta OTG.
- TWI (I2C), 2xSPI, SSC i aż cztery USART-y ze sprzętową kontrolą transmisji.
- Jeden port USART posiada wsparcie dla: IrDA, modemu i ISO7816.
- Wielofunkcyjne linie I/O - alternatywne funkcje specjalne, np. USART i SPI, użycie jednego z nich uniemożliwia korzystanie z drugiego.
- Kontroler portów I/O zawiera osobne rejestry do ustawiania stanów wysokich, niskich oraz osobny do zmiany stanu na przeciwny.
- standardowe peryferia takie jak timery, przetwornik A/C, watchdog oraz układy nadzorujące zasilanie.
Programowanie i narzędzia
- Układy UC3A i UC3B dostarczane są z bootloaderem USB zaprogramowanym w początkowej części Flasha (8kB).
- Kolejnym sposobem jest programowanie przez interfejs JTAG, do którego można użyć JTAG ICE mkII.
Cechy mikrokontrolera ATmega32
- Architektura RISC - 131 instrukcji procesora (wykonywanych w jednym cyklu zegara), 32 ×8 -bitowych rejestrów ogólnego przeznaczenia,
- Nieulotna pamięćprogramu i danych - 32kB pamięci programu, ISP, z opcją Bootloadera, 1024 bajty pamięci danych EEPROM, 2kB wewnętrznej pamięci SRAM,
- Peryferia - 8-bitowe i 16-bitowy timery/liczniki z opcją preskalera, cztery kanały PWM, 8×10 − bitowych przetworników ADC, interface Two-wire, programowalny Serial USART, interface Master/Slave SPI, programowalny Watchdog, komparator analogowy,
- Inne cechy - wewnętrzny generator RC, wewnętrzne i zewnętrzne źródła przerwań, układy oszczędności energii, zasilanie 4.5 − 5.5V, częstotliwość pracy zegara do 16MHz.
Pamięć danych EEPROM mikrokontrolera AVR ATmega32
ATmega32 posiada nieulotną pamięć danych o rozmiarze 1024 bajty, zorganizowanej w osobnej przestrzeni adresowej.
W przestrzeni tej mogą być zapisane lub odczytane pojedyncze bajty.
Dostęp do tej pamięci możliwy jest za pomocą rejestrów EEARH, EEARL, EEDR i EECR. Rejestry te pełnią następujące funkcje: EEARH i EEARL - adres, EEDR - wpisywane lub odczytywane dane, EECR - rejestr kontrolny.
PamięćEEPROM data jest chroniona przed zniszczeniem, które może powodować zbyt niskie napięcie zasilania VCC .
Pamięć urządzeń wejścia/wyjścia mikrokontrolera AVR ATmega32
Do wszystkich peryferii mikrokontrolera AVR ATmega32 odwołuje się za pomocą rejestrów I/O umieszczonych w tej samej przestrzeni adresowej co Rejestry ogólnego przeznaczenia i pamięćSRAM (ścieżka danych),
Używając mnemoników IN lub OUT należy używać adresów $00 − $3F, w przypadku, gdy odwołujemy siędo nich używając instrukcji LD i ST należy dodać $20H E X tj. 3210 do ich adresu (gdyż poprzedzają je 32 rejestry ogólnegoprzeznaczenia).
Niektóre rejestry I/O, w zależności od pełnionej funkcji w urządzeniach peryferynych, sąchronione przed zapisem. Do niektórych rejestrów można się odwołać dopiero po ustawieniu odpowiedniej flagi (patrz dokumentacja).
Struktura portu – AVR
Wszystkie porty AVR mają funkcjonalność : Read/Modify/Write
Każdy pin w porcie może być modyfikowany selektywnie
Rejestrom przydzielono trzy adresy w pamięci We/Wy
dla każdego portu:
* rejestr danych — PORTx (odczyt/zapis)
* rejestr kierunku danych — DDRx (odczyt/zapis)
* piny wejściowe portu – PINx (odczyt)
Cechy portu – AVR
Port jako wejście:
Port jako wyjście:
Port jako wejście:
* histereza (około 50 mV), pozwalająca na eliminację błędów przy sygnałach wolnozmiennych i zaszumionych,
* przy odczycie portu po jego zapisaniu należy odczekać około 1 takt zegara (wewnętrzny układ synchronizujący).
Port jako wyjście:
* stan pinu może się pojawiać z opóźnieniem jednego taktu zegara przy zmianie PORTxn,
* typowe obciążenie linii portu wynosi 20mA, maksymalnie 40mA
Timery/Liczniki - AVR
- 2 liczniki 8-bitowe
- licznik impulsów wewnętrznych i zewnętrznych, odczytanie i zapisanie wartości licznika
- ustalenie zakresu licznika
- porównanie bieżącej wartości licznika z zadaną wartością, przełączenie napięcia portu binarnego
- 1 licznik 16-bitowy - dodatkowo
- porównanie wartości licznika z dwoma zadanymi wartościami
- rejestracja wartości licznika w momencie pojawienia się impulsu zewnętrznego
Timery/Liczniki – AVR: 8-mio bitowy licznik czasomierz T0 z funkcją PWM
Cechy
- Licznik z pojedynczym komparatorem
- Tryb CTC (Clear Timer on Compare)
- Tryb PWM z korekcją fazy
- Tryb PWM (fast PWM)
- Zewnętrzny licznik zdarzeń
- 10-bitowy Prescaler (1, 8, 64, 256, 1024)
- Flagi przerwań TOV0 – flaga przepełnienia; OCF0 – flaga porównania (komparatora)
System przerwań - AVR
- Zmiana stanu pewnych wejść (przerwania INT0, INT1, INT2, ICP1).
- Określony stan pewnych wejść (przerwania INT0, INT1).
- Przepełnienie licznika (TIMER0 OVF, TIMER1 OVF, TIMER2 OVF).
- Osiągnięcie przez licznik zadanej wartości (TIMER0 COMP, TIMER1 COMPA, TIMER1 COMPB, TIMER2 COMP).
- Zakończenie przetwarzania analogowo-cyfrowego (ADC).
- Zakończenie transmisji przez interfejs szeregowy (SPI STC, USART TXC, TWI).
- Odebranie danych przez interfejs szeregowy (USART RXC).
- Gotowość pamięci EEPROM (EERDY).
- Zmiana stanu wyjścia komparatora (ANACOMP).
System przerwań – AVR: Tablica przerwań
- W standardowej konfiguracji mikrokontrolera 42 najniższe adresy w pamięci programu zajmuje tablica przerwań.
- Im mniejszy adres, tym wyższy priorytet przerwania.
- Najwyższy priorytet ma RESET, potem przerwanie zewnętrzne INT0 itd.
- Przerwania są numerowane od 1 do 21.
- Obsługując przerwanie o numerze x, mikrokontroler ładuje do licznika programu wartość 2(x – 1)
- Powoduje to wykonanie rozkazu spod tego adresu w pamięci programu.
- Najczęściej jest to skok (rjmp lub jmp) do właściwej procedury obsługi przerwania.
- Uwaga: ATmega16 i ATmega32 obsługują ten sam zbiór przerwań, ale są one inaczej ponumerowane.
- sei() – uaktywnia obsługę przerwań
- cli() – wyłącza obsługę przerwań (domyślnie po sygnale RESET)
Port szeregowy synchroniczny-asynchroniczny USART
- Możliwość pracy synchronicznej i synchronicznej
- Ramka od 5 do 9 bitów
- 1 lub 2 bity stopu
- Dwa rodzaje kontroli parzystości
- Wykrywanie błędu ramki
- Eliminacja szumów
- Możliwość współpracy wieloprocesorowej
Układy peryferyjne mikrokontrolera AVR – zarządzanie energią
Programowe sposoby zarządzania energią
zredukowanie częstotliwościzegara,
wykorzystania trybów wstrzymania (sleep modes).
Wstrzymywanie systemu możliwe przy użyciu instrukcji SLEEP
Interakcje w mikrokontrolerze:
nie pracuje jednostka centralna,
pamięć danych zachowywana,
rejestry wejścia wyjścia zachowywane,
układy peryferyjne pracują w zależności od trybu uśpienia.
TABLICE
Tablicę definiuje się pisząc kolejno: typ danych, nazwę tablicy i objętą parą nawiasów kwadratowych [] liczbę elementów tablicy. Definicję należy zakończyć średnikiem.
Elementami tablic mogą być wartości typów: char, int, float, double oraz: struktury, unie, pola bitowe i wskaźniki.
Elementami tablicy mogą być też same tablice; w taki sposób tworzy się w języku C tablice wielowymiarowe.
Interfejsy programowania i uruchomieniowe
AVRISP mkII
Podstawowe cechy:
- programowanie pamięci Flash i EEPROM,
- ustawianie/kasowanie fuse bitów i lock bitów,
- funkcja aktualizacji oprogramowania celem współpracy z nowymi mikrokontrolerami,
- praca w zakresie napięć 1,8-5,5V,
- regulacja szybkości programowania (od 50 Hz do 8 MHz),
- kompatybilny z interfejsem USB 2.0 (full speed, 12 Mbps),
- zasilany z USB, przez co nie wymaga dodatkowego źródła zasilania,
- zabezpieczenie interfejsu programowanego mikrokontrolera, zabezpieczenie przeciwzwarciowe.
AVR Dragon Podstawowe cechy:
- wspierane interfejsy: SPI, JTAG, PDI, HVSP, PP, aWire,
- do 3 sprzętowych breakpointów,
- do 32 programowych breakpointów,
- wbudowane 128 kB pamięci SRAM,
- wysoka szybkość (256 Kb w 60 s dla XMEGA przez JTAG),
- funkcja aktualizacji oprogramowania celem współpracy z nowymi mikrokontrolerami,
- kompatybilny z interfejsem USB 2.0 (full speed, 12 Mbps),
- wspiera NanoTrace,
- zasilany z USB,
- może zasilać zewnętrzne układy,
- miejsce na wbudowanie podstawek do programowania równoległego (HVSP, PP).
AVR JTAGICE mkII
- programowanie mikrokontrolerów AVR zarówno 8-bitowych, jak i 32-bitowych
Podstawowe cechy: - do 3 sprzętowych breakpointów,
- obsługuje złożone typy zmiennych wraz z zakresem ich dostępności,
- do 128 programowych breakpointów,
- wbudowane 512 kB pamięci SRAM,
- praca w zakresie napięć 1,8-5,5 V,
- wysoka szybkość (256 Kb w 30 s dla XMEGA przez JTAG),
- kompatybilny z interfejsem USB 2.0 (full speed, 12 Mbps), zasilany z USB, przez co nie wymaga dodatkowego źródła zasilania
JTAGICE 3
JTAGICE 3 jest następcą popularnego JTAGICE mkII i przeznaczony został do prac rozwojowych systemów opartych na mikrokontrolerach AVR i AVR32.
Podobnie jak poprzednik, jest w pełni funkcjonalnym programatorem układów tinyAVR, megaAVR, XMEGA i UC3.
Narzędzie obsługuje wszystkie interfejsy wykorzystywane do debugowania i programowania AVR i AVR32 (JTAG, SPI, dWire, PDI).
Zwiększono również odporność urządzenia na wszelkiego rodzaju zakłócenia i uszkodzenia pochodzące z układu programowanego (ESD, odwrotna polaryzacja złącza, zbyt wysokie napięcie zasilania).
Architektura RISC (Reduced Instruction Set Computers)
- ograniczona lista wykonywanych rozkazów,
- ograniczona ilość trybów adresowania,
- operacje wykonywane na rejestrach (brak rozkazów operujących na pamięci – poza rozkazami LOAD i STORE)
- operacje na danych w pamięci wykonywane są według schematu Read-Modify-Write,
- proste kody rozkazów -> uproszczenie dekodera rozkazów,
- prosta budowa rdzenia -> mniejsza ilość elementów -> zmniejszony pobór prądu.
Rdzeń ARMv4T (ARM7)
Rejestry mikrokontrolerów RISC
- zwiększona liczba rejestrów roboczych,
- wszystkie rejestry są 32-bitowe.
Architektura von Neumana Rdzeń ARMv4T (ARM7)
- brak podziału pamięci na pamięć danych i programu
- możliwość wykonywania kodu programu zarówno z pamięci Flash jak i RAM (możliwość modyfikacji kodu w trakcie wykonywania programu).
- 32-bitowa magistrala danych – możliwość jednoczesnego odczytu i zapisu danych, jednostkami 8, 16 lub 32-bitowymi (problem wyrównywania danych).
Rdzeń ARMv4T (ARM7)
Wyjątki obsługiwane przez rdzeń ARM7TDMI
- SWI – napotkanie specjalnej instrukcji SWI
- Abort – próba wykonania instrukcji, przy pobieraniu której wystąpił błąd w dostępie do pamięci lub próba zapisu/odczytu niewyrównanych danych,
- Undefined – napotkanie instrukcji, której rdzeń nie jest w stanie zdekodować,
- nIRQ – przerwanie – pojawienie się na linii wejściowej nIRQ stanu niskiego,
- nFIQ – przerwanie o wyższym priorytecie od nIRQ – wykorzystywane tam gdzie konieczna jest szybka reakcja,
Tryby pracy rdzenia
- tryby zależne od rodzaju obsługiwanego wyjątku (np. po wystąpieniu wyjątku Abort rdzeń pracuje w trybie Abort),
- tryby pracy w czasie wykonywania programu głównego: Supervisor, System, User (różnią się poziomem praw dostępu do zasobów oraz obszarów pamięci mikrokontrolera),