diff --git a/KIV POT/17. Mikrokontroléry.md b/KIV POT/17. Mikrokontroléry.md new file mode 100644 index 0000000..bf48cab --- /dev/null +++ b/KIV POT/17. Mikrokontroléry.md @@ -0,0 +1,143 @@ +# Mikrokontroléry + +**Mikroprocesor** x **mikrokontrolér** +- mikroprocesor (MPU) = procesor vyrobený na jednom čipu + - používá vnější paměti a další pomocné obvody +- mikrokontrolér (MCU) = procesorové jádro + paměti + periferie + pomocné obvody na společném čipu + - periferní obvody obvykle specializované pro různé řídící aplikace + +**Charakteristiky MCU** +- MCU se vyrábí ve velkém rozpětí výkonosti (podle předpokládané aplikace) ++ délka slova CPU: **4**, **8**, **16** a **32 bitů** ++ frekvence CLK: cca **1 MHz** až **1 GHz** ++ kapacita ROM (Flash): cca **512 B** až **512 kB** ++ kapacita RAM: cca **32 B** až **128 kB** ++ pouzdro: **SOIC8 - BGA256** + +**Vývody pouzder MCU** +- většina vývodů má podle konfigurace některou z více funkcí +- základní konfigurace je obcykle binární obousměrný IO pin +- piny obvykle sdruženy do 8bitových nebo 16bitových portů +- další možné funkce + - adresní/datová sběrnice + - vývody séeiových portů, časovačů a čítačů + - ... + +**Adresní prostory MCU** +- fyzická paměť nemusí pokrývat celý a.p. + - zbývající rozsah pokryt vnější pamětí + - někdy mapovány i SFR (Special Function Registers) a někdy EEPROM ++ Hardwardská architektura + - kódová a datová paměť mají oddělené adresní prostory + - délka slova může být pro obě paměti různá + - v principu možný přístup do obou pamětí současně + - pro každý adresní prostor lze použít jen některé operace + - kódový: výběr instrukce, čtení dat + - datový: čtení dat, zápis dat +- Lineární (Von Neumannova) architektura + - všechny typy pamětí a SFR v jednom adresním prostoru + - lze zapisovat i do kódové paměti + - lze provádět program uložený v datové paměti + - u výkonných MCU lze někdy volit různé mapování pamětí do adresního prostoru + +**Konfigurace s vnější a vnitřní pamětí** +- některé MCU umožňují připojení vnější datové nebo kódové paměti +- pro vyvedení portu adresní a datové sběrnice běžně část binárních IO portů +- přístup do vnitřní paměti obvykle rychlejší (v 1 taktech CLK) než do vnější (ve 3 taktech CLK) + +**Programování vnitřních pamětí MCU** +- paralelní programování + - používá externí programátor + - vyžaduje velký počet vývodů MCU + - rychlé programování (vhodné pro sériovou výrobu) + - obtížné programování přímo v zařízení (ISP - In System Programming) +- rozhraní JTAG (Joint Test Action Group) + - sériové rozhraní pro diagnostiku + - pro programování i ladění programů +- boot loader + - CPU čte kód programu přes standardní rozhraní a zapisuje do Flash + - předpoklady + - CPU může zapisovat do kódového i adresního prostoru + - Boot program lze vykonávat i při zápisu do Flash + - výkonné MCU: možnost volby rozhraní pro boot po resetu + - program se ukládá do RAM místo Flash - boot je nutný vždy při startu + - boot lze provést z různých rozhraní (SPI, Flash, přes Ethernet, ...) + +**Ladící prostředky** +- monitor + - uložen v kódové paměti MCU + - spolupracuje s ladicím programem na počítači + - program se zavádí do Flash i s monitorem + - nevýhody: monitor potřebuje nějaké prostředky MCU +- JTAG + - některé MCU mají rozšířený soubor instrukcí JTAG pro ladění + - výpočet běží v laděné aplikaci v reálném čase + - aplikační program může bez omezení využívat prostředky MCU + +**Nízkopříkonové režimy Idle a Power** +- zapínají se programově +- Idle (IDL) + - CPU má odpojený hodinový signál - pracují jen periferní řadiče +- Power Down (PD) + - vypne se generátor hodinového signálu, nepracuje CPU ani periferní obvody + +### Mikrokontroléry na bázi ARM + +- architektura vyvíjena od roku 1990 (Advanced Risc Machine) +- postupně několik verzí procesorových jader + - ARMv4, ARMv4T (THUMB ISA) + - ARMv5, ARMv5E (Enhanced - rozšířeno o DSP) + - ARMv6, ARMv6M (Cortex-M0) + - ARMv7M, ARMv7R, ARMv7A (Cortex-M, R, A) +- mikrokontroléry n bázi ARM vyrábí několik (cca 40) výrobců (TI, ST, NXP, Toshiba, ...) +- též jako syntetizovatelná jídra pro SoC + +**Charakteristika ARM** +- 32bitová architektura RISC +- 16 ks. 32bitových registrů +- až 3 různé soubory instrukci +- v různých verzích různá standardní rozšíření základní architektury +- další periferie MCU podle různých výrobců + +**Řady procesorů** +- klasická řada: 3 rodiny + + **ARM7** - procesorové jádro ARMv4, ARMv4T + + **ARM9** - procesorové jádro ARMv4T, ARMv5, ARMv5E + + **ARM11** - procesorové jádro ARMv6 + - další číslice a písmena specifikují vybavení procesoru + - např. ARM7TDMI, ARM946E-S ++ řada Cortex: 3 rodiny + + **Cortex-M** - procesorové jádro ARMv6M resp. ARMv7M + + 4 typy procesorů + + Cortex-M0, Cortex-M1, Cortex-M3, Cortex-M4, Cortex-M7 + - nejmenší řada, nástupce 8 a 16bitových MCU + - Cortex-M1 pro implementaci v FPGA + - CLK max. 100 MHz + + **Cortex-R** - procesorové jádro ARMv7R + - 3 typy procesorů + - Cortex-R4, Cortex-R5, Cortex-R7, Cortex-R8 + - vysoký výkon pro vestavěné systémy reálného času + - optimalizované pro běh RTOS + - CLK max. 1 GHz + + **Cortex-A** - procesorové jádro ARMv7A + + 4 typy procesorů + + Cortex-A5, Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A17 + - vysoký výkon pro mobilní aplikace, multimédia (smartphone, digitální TV, ...) + - vícejádrové typy + - optimalizované pro běh OS (Linux, Symbian, Windows CE) + - CLK max. 2 GHz + +**Instrukční sady ARM** +- **ARM 32-bit** + - původní sada + - 32bitové instrukce (kódované na 32 bitech) + - nevýhodné v menších systémech +- **Thumb** + - 16bitové instrukce + - méně výkonné než ARM 32-bit + - ARM 32-bit a Thumb je nutné přepínat (lze i za chodu) +- **Thumb-2** + - nadmnožina Thumb + - kombinace 16bitových a 32bitových instrukcí + - nemusí se přepínat + - od ARMv7 \ No newline at end of file