FAV-ZCU/KIV POT/17. Mikrokontroléry.md

5.8 KiB

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 MHz1 GHz
  • kapacita ROM (Flash): cca 512 B512 kB
  • kapacita RAM: cca 32 B128 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