Přidání poznámek z POT k mikrokontrolérům
This commit is contained in:
parent
5c4cfc644b
commit
e253e8ff68
1 changed files with 143 additions and 0 deletions
143
KIV POT/17. Mikrokontroléry.md
Normal file
143
KIV POT/17. Mikrokontroléry.md
Normal 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
|
Loading…
Reference in a new issue