Přidání poznámek z POT k mikrokontrolérům

This commit is contained in:
Filip Znachor 2023-06-12 13:02:39 +02:00
parent 5c4cfc644b
commit e253e8ff68

View file

@ -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