Úvod, vestavný systém, úvod k ARM Cortex

Úvod, vestavný systém, úvod k ARM Cortex
Přednáška 1
A4B38NVS - Návrh vestavěných systémů
2015, kat. měření, ČVUT - FEL, Praha
J. Fischer
Grafický podkladový materiál k přednášce A4B38NVS
Studium tohoto materiálu nenahrazuje účast na přednášce, která mimo jiné
obsahuje výklad k prezentaci i další vysvětlení a výklad u tabule.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
1
Představení, kontakty
Jan Fischer , kat. měření, míst. 441/1 blok B3,
přednáška středa 12:45 C3 - 52,
konzultace středa od 14.15 v C3-52, (příp. domluva na další termín)
cvičení od 16.15, 18.00 kat. měření, míst. 326 blok B3
kontakty s vyučujícími E- mail, posílat pouze ze své
Fakultní E- mail adresy
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
2
Oblasti vestavných systémů
Vestavný systém – co to představuje?
„embedded system“, embedded microcontroller
Systém s mikrokontrolérem je „zabudován“ přímo v zařízení a je s ním v
přímé interakci
Zařízení s vestavným systémem (embedded) – dnes prakticky všechny
přístroje kolem nás
Doma – televizor, video, CD přehrávač, moderní radiopřijímač, mobilní telefon,
fotoaparát, “kamera“, moderní („advanced“) hodinky myčka nádobí, pračka,
(nová) lednička, GPS, „lepší“ holicí strojek, baterka - čelovka ,
Elektronické hračky el. hry, autíčka, pohyblivé hračky, panenky „s interakcí“,
Automobil – více 10, ale spíše 40+ vestav. mikrokontrolérů (řízení motoru,
ABS, AES, nastavování mechanických dílů- sedačka, el. stahování oken,
komunikace, zabudovaný radiopřijímač, navigace, řízení klimatizace,..
Dům – výtah, klimatizace, zabezpečovací a kamerový systém, přístupový
systém, protipožární systém, řízení topení a klimatizace, síťové
komunikační prvky pro Ethernet – switche, routery,
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
3
Oblasti vestavných systémů
Obchod – prodejní terminál na jízdenky, potraviny, elektronické váhy, mrazicí
boxy, elektronické cenovky (segmentový LCD zobrazovač + přenost dat),
automat na kávu,..
Dopravní prostředky – obecně - vlak, letadlo,
Malé (domácí) lékařské přístroje – osobní váha, glukometr,měřič tlaku, měřič
tepu, krokoměr
Velké lékařské přístroje – v nemocnicích – např. na operačním sále – řízení
ventilace, sledování tlaku, dýchání,….- viz. filmy
Komunikační technika – malé vysílačky (osobní, policejní, armáda,
záchranné sbory)
Existuje též pojem „deeply emebeded“ – poněkud zjednodušeně řečeno
„systém je tak hluboce vestavěn, že si to uživatel ani neuvědomí“
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
4
Oblasti vestavných systémů
Existují aplikace mikrokontrolérů a signálových procesorů přímo v řízení
pulsního napájecího zdroje – řízení spínání tranzistorů, regulace napětí,
příklad ST32F334 (s jádrem ARM Cortex M4)
mikrokontrolér pro zářivku, „úspornou“ žárovku – lighting
Nářadí – momentový klíč ( s el. indikací – tenzometr +indikace), el. vrtačka,..
baterka
Nabíječka akumulátorků („inteligentní“) – měření napětí, generace nabíjecích
proudových impulsů, měření a zobrazení velikosti dodaného náboje,
testovací funkce.
……
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
5
Příklady
Další folie (7 -32) obsahují snímky přístrojů a zařízení embedded aplikací,
z kapacitních a formálních důvodů nejsou uvedeny v PDF.
Slouží pouze pro přednášku.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
6
Příklady vestavných systémů
.Nike – Fuelband
snímání a vyhodnocení pohybové aktivity za
časový úsek
Mikrokontrolér, MEMS akcelerometr,
bezdrátový přenos dat, paměť
(pozn.- návrh čipu pro řízení LED – kde?)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
7
Příklady vestavných systémů
. Futurocube – český výrobek !!!
www.futurocube.com
www.princip.cz/projekty/kostka
popis sestavy, funkce
MEMS, mikrokontroléry (7 kusů), bezdrátový
přenos, buzení LED, generace zvuku- řeč
komentář ….
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
8
Příklady vestavných systémů
.
Bosch kávovar
mikrokontrolér –STM32
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
9
Příklady vestavných systémů
. Petzl – horolezecká čelovka („high end“)
mikrokontrolér, akceleromer, optický senzor,
řízení výkonu podle odraženého světla,
náklonu, případně pohybu hlavy,…
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
10
Příklady vestavných systémů
.
Fit bit – analýza pohybu osoby a spotřebované
energie – ( jako „krokoměr“)
mikrokontrolér, akcelerometr, bezdrátový
přenos do mobilu
http://www.fitbit.com/
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
11
Příklady vestavných systémů
. Sony SmartWatch MN2,
Mikrokontrolér STM32F429,
Grafika, bezdrát. komunikace s mobilem,
vibrace,..
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
12
Příklady vestavných systémů
.„Robotická koule“ Gosphero
Mikrokontrolér, akcelerometr, bezdrátový přenos dat z (do) mobilu akční
člen, bezdrátové indukční nabíjení
ovládání pohybu koule z mobilu, koule jako snímač pohybu- ovládač
(myš) akcelerometr, http://www.gosphero.com/
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
13
Příklady vestavných systémů
HAPIfork – vidlička, mikrokontrolér, akcelerometr,
bezdrátový přenos, logování dat, vibrace, blikání
počítání soust a intervalu mezi sousty,..
upozornění – („měl jsi již moc jídla“)
zpracování dat za den, .na trhu od 9/2013, za 99 USD
HAPItrack sledování pohybu osoby
http://www.hapilabs.com/
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
14
Příklady vestavných systémů
Příklady použití mikrokontrolérů jiných firem …
žiletkový holicí strojek, baterka
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
15
Palubní deska Octavia
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
16
Palubní deska - přední strana spoje - LED
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
17
Palubní deska - indikační LED skrytem
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
18
Palubní deska - prosvětlovací folie před LED
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
19
Palubní deska deska – zadní strana
.
konektor.
rozhr. CAN
krystal pro RTC
(hodiny)
otočné
indikátory
zvuk. sig.
zesilovač
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
procesor
20
Palubní deska- krokový motorek - stav paliva
.
krokový
motorek
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
21
Řídicí jednotka Diesel, Octavia 2 řada
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
22
Deska říd. jed.
řídicí
procesor
pam. prog.
NOR Flash
.
budiče akč.
členů
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
23
BCM – Body Control Modul
.
výkonová
relé
procesor
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
24
Parkovací asistent- ultrazvuk
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
25
Parkovací asistent- ultrazvuk
.
řídicí
procesor
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
26
Blok ovládání naklápění reflektorů - Fabia
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
27
Blok ovládání naklápění reflektorů - Fabia
.
řídicí
procesor
výkonové
stupně
ovládací
výstupy
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
kom. rozhr.
CAN
28
Deska komunikace s Bluetooth
SRAM
(NOR) Flash
.
anténa
(procesor)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
29
Multifunkční volant - Octavia
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
30
Multifunkční volant - Octavia
.
opt. snímač
enkodéru
kontakty
tlačítek
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
31
Multifunkční volant - Octavia
.
mikrořadič Infineon
TLE 9832 jádro ´51
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
32
Základní bloky vestavného systému
Obecně – vestavný systém v zařízení obsahuje
•
•
•
•
•
•
•
•
mikrokontrolér
.
ovládací prvky pro komunikaci s obsluhou (tlačítka, křížový ovládač,
klávesnice - nyní často kapacitní)
indikace ( LED,..)
zobrazovač – LED, LCD
senzory ( teplota, tlak, světlo, MEMS – zrychlení - náklon
komunikační rozhraní (sériové rozhraní – UART, USB, Ethernet, CAN,
LIN, bezdrátová komunikace- blue tooth )
ovládání akčních členů (výkonové tranzistory – bipolární, FET, IGBT, relé,
tyristory)
akční členy (motorky – stejnosměrné - DC, krokové motorky - stepper,
BLDC – brush less DC, asynchronní střídavé motory pračka,..
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
33
Náplň předmětu A4B38NVS - přednášky
•
HW návrh vestavěných systémů, komponenty a jejich využití, procesor
jako součástka
•
Logické obvody a jejich vlastnosti z hlediska spolupráce s mikrořad.
(odběr, typové řady, rychlost z hlediska spolupráce s mikroprocesorem,
spolupráce rychlých logických obvodů, vedení, odrazy, zemnění, rozvody
napájení, blokování).
•
Bloky komunikace s obsluhou (tlačítka, klávesnice, LED a LCD zobrazovače)
•
Mikrořadiče (Microcontroller) pro vestavěné systémy
•
Obvody a periferie na čipu mikrořadičů (vstupy, výstupy, rozhraní SPI, I2C,
I2S, USART převodníky A/D, převodníky D/A),
•
Vnější periferie a jejich připojování (připojení vnějších řadičů – Ethernet,..)
•
Vnější paměťové obvody a jejich připojování k mikroprocesoru
•
Dohlížecí obvody a monitorovací obvody pro zajištění spolehlivé funkce
vestavěného systému.
•
Napájení – síťové napájení, bateriové napájení vestavěných systémů,
stabilizace napájení
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
34
Náplň předmětu A4B38NVS - cvičení
•
Seznámení s IDE Keil pro ARM, pro STM32F100
•
Konfigurace výstupních bran STM32F100, ovládání výstupů a LED,
•
Generování impulsního signálu, čtení tlačítka
•
Časovací jednotka (schodišťový automat)
•
Ovládací jednotka se 7- seg. LED, ovládání posuvného registru
74HCT595, (1. hodnocená úloha) + zpráva
•
Sériová komunikace, využití UART, komunikace s RS232, zobrazení dat na
LCD a PC (terminál) (2. hodnocená úloha) + zpráva
•
Samostatný projekt: Návrh systému pro sběr dat a monitorování
3._hodnocená úloha, studie k projektu, návrh a realizace, závěrečná zpráva),
•
Logické obvody CMOS- stat. parametry a jejich určení (skup. 2 stud.)
•
Logické obvody CMOS – dyn. parametry a jejich určení , buzení obvodu
procesorem STM32, generování signálu o dané frekvenci (skup. 2 st.)
Test v semestru – 9. týden společný termín - na přednášce
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
35
Náplň předmětu A4B38NVS – použitý procesor
V rámci cvičení – použit procesor (microcontroller) STM32F100
Výrobce- STMicroelectronics WWW,ST.COM/STM32
Založen na jádře ARM Cortex- M3 WWW.ARM.COM
www.arm.com/products/processors/cortex-m/cortex-m3.php
Vývojové kity firmy ST Microelectronics
ST32F xx Discovery,
Programové vývojové nástroje IDE firmy Keil, demonstrační verze – omezení na
velikost kódu - 32 kByte. Volně získatelná z http://www.keil.com/ ,konkrétně
http://www2.keil.com/mdk5/ ( ??!!! vyplňování formuláře), on line instalace
Nebo v laboratoři nakopírovat starší demoverze verze IDE
Keil Microvision Version 4, pro cvičení zcela postačují
(možnost instalace off line – bez registrace)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
36
STM32VLDiscovery kit – používaný na cvičení
STM32F100RB microcontroller,
32-bit ARM Cortex-M3 core
128 KB Flash, 8 KB RAM
64-pin LQFP
STlink ( v1)
STM32F103 – pouzdro 48 pinů, horní
-
ladicí procesor
STM32F100 – pouzdro 64 pinů, dolní
aplikační (uživatelský) procesor
propojení procesorů ladicím
rozhraním SWD ze zabudovaného
ladicího nástroje ST- LInk
(„horní procesor“ STM32F103“)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
37
STM32F0Discovery kit
STM32F051R8T6 microcontroller
32-bit ARM Cortex-M0 core
64 KB Flash, 8 KB RAM
STlink / V2
+ prototypová deska
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
38
STM32LDiscovery kit
STM32L152RBT6 microcontroller
ARM CORTEX - M3 core
pouzdro LQFP64
128 KB Flash, 16 KB RAM, 4 KB EEPROM
LCD malé segmenty
kapacitní klávesnice
STlink / V2
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
39
STM32F3Discovery kit
STM32F303VCT6 microcontroller
32-bit ARM Cortex-M4F core
(podpora floating. poit. arit.)
256 KB Flash, 48 KB RAM
LQFP100 package
STlink / V2
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
40
STM32F4Discovery kit
STM32F407VGT6 microcontroller
32-bit ARM Cortex-M4F core,
(podpora floating. poit. arit.)
1 MB Flash, 192 KB RAM
LQFP100 package
STlink / V2
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
41
Discovery kity, možnost pořízení, použitelnost
Na cvičení jsou používány kity STM32VL Discovery, se starší verzí ladicího
rozhraní ST-link (problém funkce pod Linux,…) ! STLink1
(všechny ostatní Discovery kity ST Link 2 nebo ST Link 2-1, pod Linux jde)
Pro pořízení vlastního kitu a další práci, vhodnější volit novější varianty
STM32L100 Discovery (piny – header jednořadý do pole – po 1 řadě) ale procesor
STM32L100 – poněkud jiné konfigurace oscilátoru a bran
STM Nucleo F103, procesor STM32F103 kompatibilní s F100 ( lepší,větší paměť,..)
STM32F4 Discovery,.. ( problém přímé připojení do pole – header dvouřadý),
STM32F3 Nucleo,…
Případně konzultovat na cvičení
např. na dobírku přes http://www.rothsware.cz/web/farnell/
dle objednacího čísla z www.farnell.com
Použitelnost STM32F Discovery kitů – i pro ladění jiného procesoru řady STM32 ve
vlastní aplikaci.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
42
Cvičení – poznámky
Ladění – „boot loader“, nebo pomocí SWD z kitu STM32VL Discovery
Zapůjčení modulů STM32VLDiscovery, příp. i kont. pole na celý semestr
Potřebné vybavení napájení + 5V (např. z USB), příp. multimetr UNI-10A
(zapůjčení multimetru ?)
Minimum potřebného vybavení – PC s USB a nainstalovaným SW Keil, mini USB
kabel
Vhodný doplněk - převodník USB na RS232 (dostupné např. v NC computers za
160 - 220 Kč, www.nc.cz, využitelné i pro práci s jinými mikroprocesory pro
vestavěné systémy – pro funkci Boot Loader)
kit STM32VL Discovery- obsahuje ladicí nástroj ST link
kity: STM32F0Discovery, STM3Discovery, STM32F4Discovery,
STM32LDiscovery – obsahuje ladicí nástroj STlink/V2 (novější)
Možnost využití pro ext. ladění ladění jiného kusu procesoru STM32
Možno osadit – zapájet minimodul s STM32F031F6P6 a využít jej v projektu
(Pro vážné zájemce – možnost exkurse do vývojového centra STMiroelectronics v
Praze - ? listopad/ prosinec)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
43
Lab. cvičení předmětu A4B38NVS – použité IDE
Programové vývojové nástroje IDE firmy Keil, vhodné a nutné pro domácí
přípravu na lab. cvičení.
Demonstrační verze – omezení na velikost kódu - 32 kByte. Volně získatelná z
http://www.keil.com/ ,konkrétně
http://www2.keil.com/mdk5/ ( ??!!! vyplňování formuláře), on line instalace
Nebo v laboratoři nakopírovat starší demoverze verze IDE
Keil Microvision Version 4, pro cvičení zcela postačují (možnost instalace off
line)
Možno používat i jiné nástroje, problém syntaxe zápisu instrukcí ARM Corterx – M3
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
44
Hodnocení
Účast na cvičeních povinná
2 x hodnocená úloha (5 + 5 b) – při odevzdání v zadaném termínu.,
Studie 5 + samostatný projekt 10 + 5 závěrečná zpráva
Zprávy - je nutno řešit i nebodované úlohy + zpráva
Samostatná práce studentů, uvedení případných informačních zdrojů),
plagiátorství – ne !!!
Domácí příprava – studium zadání, příprava programů, vývojový diagram,
schéma
V laboratoři – odladění úlohy, využití přístrojového vybavení
Dřívější dokončení a odevzdání poslední úlohy a zpráv, možnost dojít až pro
zápočet
Test v semestru (přibl. 9. týden) středa od 12.45 v přednáškové místnosti
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
45
ARM - historie
ARM - RISC procesory
původ – britská firma Acorn, procesory - stolní počítače
později vývoj vlastního procesoru ARM1 v r. 1985,
ARM1 - 25 000 tranzistorů, 3 um technologie 4 MHz hod. sig.
ARM2
ARM 3
Založena nová firma - Advaced RISC Machines Ltd.
(majet. účast Apple, Acorn a VLSI)
změna názvu architektury
z „Acorn RISC Machine“ na „Advaced RISC Machine“
ARM 6 , procesor ARM610 pro PDA (Personal Digital Assistent) firmy Apple
ARM7 v r. 1993, používán v PDA PSION firmy Acorn
ARM7 TDMI doplnění ladicí rozhraní (D,I debug. interface)
rozšířené možnosti násobičky (M)
Thumb instrukční sada (T) - navíc 16- bitové instrukce
ARM7 TDMI – nejlépe prodávaný procesor (jádro) u ARM
ARM – orientace na přenosná zařízení, mobilní telefony,… rozvoj
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
46
ARM - historie
ARM7 TDMI – architektura ARM v 4T (pozor, trochu se plete)
ARM7TDMI používán i ve formě „microcontroller“ – jednočipový mikropočítač
firma Philips (nyní navazující NXP) LPC 2105 procesor ARM7TDI, paměti Flash,
RAM, periferie, řadič přerušení – vlastní varianta
další firmy využívající ARM7TDMI:
ATMEL, STMicroelectronics, Texas Instruments, Analog Devices,,….
u ARM7TDMI – v jádře - pouze dvě přerušení, firmy- vlastní implementace řadiče
přerušení chybí dobrá podpora a spolupráce - řadič přerušení - jádro
Firma ARM – úprava architektury pro potřeby „embedded“ microcontrolérů
Architektura ARM v7M Cortex , (M značí microcontroller)
doplněn NVIC Nested Vectored Interrupt Controller
ARM - Cortex M3 - architektura ARM v7M, náš procesor na cvičeních
Architektura ARM v4T – ovlivnila ARM v7M, ,
(občas bude na ni odkaz při vysvětlování instrukcí)
Heslo ISA – „instruction set architecture“ architektura mající danou sadu
instrukcí - obecnější pojem - poněkud širší rozsah míněných procesorů
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
47
ARM
ARM - RISC procesory (pojem RISC)
ARM7TDMI 32- bitový procesor, data 32 bitová, (tedy registry 32 bitů)
adresa 32 bitů, adresní prostor 232 = 4 GByte
ARM instrukční kód konstantní délky 32 bitů
v těchto 32 bitech uložen:
kód vlastní instrukce,
případně - registr, přímá data, adresa
architektura – typu „Load, Store“ v instrukci jeden přenos dat mezi CPU a pamětí
– není operace typu „read“, „modify“, „write“
? jak řešit do 32 bitů kód i adresu
přímé adresování relativně s omezeným rozsahem
adresování registrem
v jedné instrukci – pouze jedna operace s pamětí
aritmetické a logické operace pouze s registrem
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
48
Pojem Word u ISA ARM
ARM je 32-bit architektura.
V pojmy word, halfword použité v souvislosti s ARM:
Word –
míní se 32 bitů (čtyři bajty)
Halfword míní se 16 bitů (dva bajty)
Byte
míní se 8 bits (jeden bajt)
Většina ARM implementuje dvě instrukční sady
32- bit ARM Instruction Set – instrukce kódována word
16- bit Thumb Instruction Set – instrukce kódována halfword
ARM CORTEX – M3 instrukční sada Thumb – 2
(jedna společná sada – „dohromady“ 16- i 32- bitové instrukce)
(obsahuje Thumb a některé ARM)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
49
ARM7 TDMI, instrukce ARM a THUMB
ARM7TDMI
instrukční sada ARM - 32 bitů
instrukční sada THUMB – 16 bitů (úsporný kód, větší omezení na přímá
data či adresy)
procesory ARM: 16 – bitové instrukce Thumb
32 – bitové instrukce ARM
Přepínání v programu, jaká sada instrukcí se používá, procesor běží:
v módu ARM (vykonává instrukce ARM 32 - bitové)
v módu THUM (vykonává instrukce THUMB 16 - bitové)
Instrukce ARM a THUMB není možno „míchat“,
Přechod do THUMB - skok na adresu, kde nejnižší bit adresy je A0=1
(kód instrukce je 16- bitový, tak reálná adresa má A0 =0, ale právě požadavek
skoku na adresu s A0=1 signalizuje požadavek na skok s přepnutím do režimu
THUMB )
používají se instrukce skoku BX Rn , kde registr Rn obsahuje požadovanou
adresu s příslušně nastaveným bitem D0 = 0, nebo D0=1 odpovídajícím
adresovému bitu A0
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
50
Cortex family – použit podkladový materiál firmy ARM
Cortex-A8
Cortex-R4
Cortex-M3
Architecture v7A
MMU
AXI
VFP & NEON support
Architecture v7R
MPU (optional)
AXI
Architecture v7M
MPU (optional)
AHB Lite & APB
Dual Issue
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
51
Jádro ARM Cortex – M3
Firma ARM - nevyrábí vlastní procesory,
pouze návrh jádra,
Jádro v rámci licencí využívá mnoho
výrobců (ST, NXP, TI, Atmel,..)
ARM Cortex- M3 - definováno:
vlastní jádro CPU
řadič přerušení
rozložení v adresním prostoru
(kde je SRAM interní, externí, kde
vnitřní sběrnice
spolupráce s rozhraním pro ladění
(debug) JTAG, SWD
Výrobci individuálně doplňují paměti a různé
periferie přístupné v daném
adresním prostoru
více na www.arm.com
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
52
Jádro ARM Cortex – M3 literatura
Volně dostupné materiály:
Sadasivan S.:An Introduction to the ARM Cortex-M3 Processor (www.ARM.com)
DUI 0552A_Cortex - M3 devices generic user Guide (www.ARM.com)
DDI 0337E Cortex -M3 Revision: r1p1 Technical Reference Manual (www.ARM.com)
DDI 0403 ARM v7-M Architecture Reference Manual (www.ARM.com dostupný po
zaregistrování)
(podrobný popis architektury ARMv7M do které spadá i ARM Cortex M3)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
53
Procesor STM32F100x - literatura
Volně dostupné materiály:
katalogový listk STM32F100x:
STM32F100x4 STM32F100x6,STM32F100x8 STM32F100xB – (Doc ID 16455 Rev 5)
podrobný referenční manuál:
RM0041 Reference manual STM32F100xx advanced ARM-based 32-bit MCUs
(www.st.com)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
54
Literatura- firemní - Hitex
The Insider’s Guide To The STM32 ARM®Based Microcontroller
An Engineer’s Introduction To The STM32 Series
www.hitex.com
a na www stránkách předmětu
• Velmi zkrácený přehled architektury ARM Cortex M3
z hlediska, implemetace do STM32F1xx
• Přehledný zkrácený popis periferií STM32F1xx
• Doporučeno pro získání prvního přehledu
k použití periferiíSTM32, následně detailní studium
referenčního manuálu k STM32,
• Insiders Guide - dobrý proto to, zjistit, co se má
vlastně hledat v dalších podrobných manuálech
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
55
Literatura- knihy
•
Joseph Yiu: The Definitive Guide to the ARM Cortex-M3 2. vydání (lepší 1.)
•
Vincent Mahout: Assembly Language Programming: ARM Cortex-M3
•
Yifeng Zhu: Embedded Systems with ARM Cortex-M3 Microcontrollers in
Assembly Language and C (??? Nové 8/2014)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
56
Jádro ARM Cortex M3 - Registry
R0 – R12 obecné registry
Dolní registry (low reg.) R0 – R7 přístupné
všemi instrukcemi s přístupem k registrům.
Horní registry (high reg.) R8 – R12
přístup pouze 32 bitovými instrukcemi s
přístupem k registrům
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
57
Registry R13 až R15
Stack pointer Registr R13 -Stack Pointer (SP) ukazatel zásobníku.
R13 – dvě formy:
hlavní SP (SP main)
procesní SR (SP_process)
R14 - Link register Registr R14 je užíván při volání podprogramů
(subroutine Link Register - LR).
Do LR se uloží návratová adresa z PC při instrukci při vykonání instrukcí Branch
an Link (BL) or Branch and Link with Exchange (BLX).
(návratová adresa není automaticky ukládána procesorem do zásobníku, pro
vnoření podprogramů- uživat. progr. musí sám uložit obsah LD do zásobníku)
LR je využit také při návratu z obsluhy výjimky (exception return).
R14 – možno obsluhovat jako obecný registr
Programový čítač (Program counter - PC) registr R15
Bit 0 adresy instrukce je vždy =0; instrukce jsou zarovnány na hranice slova
4 Byte nebo poloviční slova -2 Byte (pozor bit 0 při skoku nast. na 1, viz dále)
Stavový reg. programu (Program Status Register xPSR) stavových registr
příznaků (Flags)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
58
Příznakový registr
-
1 indikuje aktivní stav
N negativní nebo menší než
Z -Zero Nula
C Carry/ Borrow – výpůjčka
V přetečení overflow
Q sticky saturation
(při aritmetice se saturací)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
59
Adresový prostor ARM Cortex – M3
-
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
60
Instrukční sada THUMB-2 v návaznosti na instrukce ARM
ARM Cortex-M3 - instrukční sada Thumb -2
Instrukce Thumb (16- bitové) jsou doplněny 32- bitovými instrukcemi
sada označená jako Thumb - 2,
ARM Cortex M3 – používá sadu Thumb – 2 bez přepínání, je tedy stále v
režimu Thumb a případný pokus o přepnutí do režimu instrukcí ARM
(32 – bitových) vyvolá chybu, proto musí být u Cortex – M3 při požadavku
skoku vždy nejnižší bit adresy A0= 1, na kterou se skáče
16 – bitové instrukce Thumb – omezené možnosti – např. ve vzdálenosti
adresy pro skok,…. možnost
Unified Assembler Language (UAL) – společná syntaxe pro ARM a Thumb
instrukce. Kód psaný s použitím UAL může být přeložen do ARM nebo Thumb
instrukcí - to volí překladač- optimalizace na délku kódu.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
61
Zápis programu pro Assembler ARM
pole návěští, zcela vlevo – (nesmí tam být instrukce, ta je až v dalším poli –
za mezerami),
• pole instrukce,
• pole operandu ( příp. operandů),
• pole komentáře za středníkem
NAVESTI
MOV
R0, R1
; kopie R1 do R0, R0 = R1
Instrukce presunu:
MOV
instr. přesunu mezi reg., příp. přímá data do reg. ← (zprava doleva)
MOV R0, #1 instr. přesunu přímých dat (omezená velikost) nezapomenout na #
LDR
instr. čtení z paměti do registru ← (zprava doleva)
STR
instr. zápisu z registru do paměti → (zleva doprava !!!)
•
Pseudo instruce LDR
R0, =0x200
(„vím co chci a ty to přelož, jak to půjde nejlépe“)
podle velikosti konst. překladač přeloží jako přesun LDR z pam. do reg. a sám uloží
konst. do pevné paměti Code, nebo přeloží jedinou instrukcí MOV obsahující
data- viz disassembler, i s využitím Barrel shifter
(přímá konst. a bitové posuny ) viz heslo “Flexible Second Operand”
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
62
Popis instrukci použitých v programu LED_BLIK:
Instrukce presunu:
MOV
MOV
LDR
LDR
STR
PUSH
POP
R0, R1
; kopie R1 do R0, R0 = R1
R0, #1
; kopie 1 do R0, R0 = 1
R0, =0x200 ; pseudo instrukce kopie 0x200 do R0, R0 = 0x200
R1, [R0] ; do R1 nacteni hodn. z adresy urcene registrem R0
R1, [R0] ; kopie hodnoty z R1 do pameti na adresu podle obs. R0
{R0,LR} ; ulozeni hodnoty v R0 a LR do zasobniku
{R0,PC} ; vyzvednuti hodnoty ze zasobniku do PC a R0
Instrukce skoku:
B
BL
BX
BEQ
NAVESTI
NAVESTI
LR
NAVESTI
BNE
; skok na adresu, kde je uvedeno navesti NAVESTI
; skok NAVESTI a ulozeni navratove adresy do LR
; skok na adresu umistenou v registru LR
; skok na NAVESTI podle vysledku predchozi instrukce,
; tj. skok pri vysledku rovno nula
NAVESTI ; skok na NAVESTI podle vysledku predchozi instrukce,
; tj. skok pri vysledku nerovno nula
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
63
Popis instrukci použitých v programu LED_BLIK:
Instrukce aritmeticke:
SUB R0, R1, #1
; R0 = R1 – 1 odecte 1 od obsahu R1 a vysledek do R0
; bez nastaveni priznaku podle vysledku
SUBS R0, R1, #1
; R0 = R1 - 1 a nastaveni registru priznaku (PSR)
Instrukce logicke:
BIC R1, R1, R2
ORR R1, R1, R2
; R1 = R1 & (/R2) - logicky soucin s R1 a negovanym R2
; R1 = R1 | R2 - logicky soucet R1 s R2, vysledek do R1
Instrukce porovnani:
CMP R0,#1
TST R0,#1
; R0 - 1 a nastaveni priznaku, ale hodnota v R0 se nezmeni
; komparace- porovnání velikosti
; R0 & 1 a nastaveni priznaku, ale hodnota v R0 se nezmeni
; testování testuje stav bitů v R1 na místech jednickami
; urcenych jednickami v pravem levem operandu
; zde se testuje, zda je na nejnizsim miste v R0 bit =1
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
64
STM32F100 – blokové schéma, struktura mikrořadiče
JTAG/SW
JTAG/SWDebug
Debug
Nested
Nestedvect
vectIT
ITCtrl
Ctrl
11xxSystick
SystickTimer
Timer
11xxDMA
DMA
77Channels
Channels
FlashI/F
I/F
Flash
Cortex-M3
Cortex-M3
CPU
CPU
24
24 MHz
MHz
ARMLite
LiteHi-Speed
Hi-SpeedBus
Bus
ARM
Matrix
/
Arbiter
(max
24MHz)
Matrix / Arbiter (max 24MHz)
CPU
procesorové
jádro ARM
Cortex- M3
a systém
sběrnic dle
licence firmy
ARM
16-128kB
16-128kB
Flash
FlashMemory
Memory
XTAL
XTALoscillators
oscillators
32KHz
32KHz++3~25MHz
3~25MHz
4kB-8kB
4kB-8kBSRAM
SRAM
20B
20BBackup
BackupRegs
Regs
Clock
ClockControl
Control
Bridge
Bridge
Bridge
Bridge
1x
1xSPI
SPI
1x
1xUSART/LIN
USART/LIN
Smartcard/IrDa
Smartcard/IrDa
Modem-Ctrl
Modem-Ctrl
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
(max 24MHz)
Up
Upto
to80
80I/Os
I/Os
ARM Peripheral Bus
Synchronized
SynchronizedAC
ACTimer
Timer
Up
Upto
to16
16Ext.
Ext.ITs
ITs
Int.
Int.RC
RCoscillators
oscillators
40KHz
40KHz++8MHz
8MHz
PLL
PLL
RTC
RTC//AWU
AWU
2x
2xWatchdog
Watchdog
CRC
CRC
1x6x
1x6x16-bit
16-bitPWM
PWM
Power
PowerSupply
Supply
Reg
Reg1.8V
1.8V
POR/PDR/PVD
POR/PDR/PVD
ARM Peripheral Bus
(max 24MHz)
(independent
(independent&&window)
window)
33xx16-bit
16-bitTimer
Timer
1x16-bit
1x16-bittimer
timerwith
with22
IC/OC/PWM
IC/OC/PWM
HDMI
HDMICEC
CEC
2x16-bit
2x16-bittimer
timereach
each
with
1
IC/OC/PWM
with 1 IC/OC/PWM
2x
2xSPI
SPI
22xx12bit
12bitDAC
DAC
1x
1x12-bit
12-bitADC
ADC
16
channels
16 channels//
850ksps
850ksps
Temp
TempSensor
Sensor
2x
2xUSART/LIN
USART/LIN
Smartcard
Smartcard//IrDa
IrDa
Modem
ModemControl
Control
2x
2xI2C
I2C
65
V/V brány v STM32
Standardní vstupně - výstupní brány (není + 5 V tolerantní)
na vstupu smí být
napětí do úrovně Udd
Odhad chování pinu ( ne + 5V tolerantního) brány STM32F100x na základě
podoby s chování standardních vstupů CMOS např. 74HC04
Diskuse, možné důsledky nevhodného zapojení, důsledky - cvičení měření
statických vlastností logických obvodů CMOS
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
66
Výstupy typu Push – pull, open drain,
Výstup typu „push – pull“
UDD
sepnut vždy jeden z tranzistorů (T1 nebo T2) –
výstup se připíná k zemi GND nebo k napájení UDD
T2
PMOS
T1
NMOS
T1
NMOS
Výstup typu „open drain“
Výstup se připíná k k zemi GND
na výstupu je nízká úroveň Low ( T1 sepnut),
nebo nedefinovaná (tranz. rozepnut)
Výstup typu „open drain“ s vnějším„pull up“
rezistorem RPU
Pokud je T1 rozepnut, napětí na výstupu je určeno
napětím UDD pomocí RPU
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
UDD
T1
RPU
out
67
Vstupy
Vstupy – plovoucí – bez připojeného vnějšího signálu – problém stavu
pull up rezistor – bez signálu definuje vysokou úroveň
pull down rezistor – bez signálu definuje nízkou úroveň
Alternativní funkce – logický signál je veden na perieferie na čipu
(např. do řadičů rozhraní UART, SPI,….)
Analogový vstup – vstup převodníku A/D ( analogo - číslicový)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
68
STM32F100 IO brány
vstup brány + 5 V tolerantní
RM0041
str. 102
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
69
Tlačítko a LED na STM32VL Discovery
Tlačítko – v klidu rozepnuté, na PA0 se čte L díky působení „Pull down“
rezistoru R21
stisk – čte se 1 , viz manuál UM0919
(Obvykle se tlačítka připojují proti zemi (GND), zde je opačné zapojení pro
možnost demonstrace funkce „ probuzení“ procesoru z režimu spánku – „Wake
– Up“.)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
70
Konfigurace brány STM32F100x
Po reset – jsou V/V brány neaktivní (i při zápisu dat do výstupního
registru brány se na výstupu nic neprojeví)
Nejdříve - aktivace hodinového signálu pro výstupní bránu
(viz demo příklad na cvičení – použití brány PC)
LDR R0, =RCC_APB2ENR
; Kopie adresy RCC_APB2ENR (APB2 peripheral clock enable register) do R0
LDR R1, [R0]
; Nacteni stavu registru RCC_APB2ENR do R1
LDR R2, =0x10
; Konstanta pro zapnuti hodin pro branu C
ORR R1, R1, R2
; Maskovani, pridani jednicky 0001 000 na bit D4
STR R1, [R0]
; Ulozeni nove hodnoty do registru RCC_APB2ENR
(pouze nastavení bitu D4 v RCC_APB2ENR na 1)
Následně – nutnost konfigurace každého používaného pinu V/V brány
zápisem do konfiguračního registru
Zápis dat do výstupního registru brány se projeví na výstupu pouze u pinů
konfigurovaných jako výstupy.
(Poznámka: pokud výstupní nebo vstupní pin, či další perierie, nereagují na zápis
dat, je třeba zkontrolovat, zda je přiveden hodinový signál a pin je správně
konfigurován!!!)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
71
Umístění registrů
str. 36 RM0041
umístění konf. reg.
v adresním prostoru
bázová adresa PA
0x4001 0800
bázová adresa PC
0x4001 1000
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
72
Registry V/V bran
.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
73
Vstupně – výstupní brána - registry
Vstupně – výstupní brány jsou 16 – bitové
pro použití se musí nejdříve nakonfigurovat
řídicí registr - 4 bity na konfiguraci jednoho bitu brány (celkem 16 x 4 = 64 bitů)
rozděleno do dvou řídicích CR (controll register) 32- bitových registrů
CR – L pro dolních 8 bitů – pinů brány
CR – H pro horních 8 bitů – pinů brány
Výst. dat. reg. ODR (output data reg.) dolních 16 bitů – prostý zápis dat do brány
Vstup. dat. reg. IDR (input data register) dolních 16 bitů prosté čtení dat z brány
Registr bit set /reset BSRR 32 bitů, zápis „1“ do horních 16 bitů „setuje“ – dává
do 1, zápis „1“ dolních 16 bitů resetuje – dává do 0
Registr reset BRR dolních 16 bitů, zápis „1“ dolních 16 bitů resetuje – dává do 0
Registr LCKR – zablokování ( lock) stavu
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
74
Konfigurace bitů 7 až 0 (dolní Byte) - low
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
75
Konfigurace bitů 15 až 8 ( horní Byte) - high
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
76
Konfigurace
RM0041
str. 103
4 bity pro
konfiguraci
jednoho
bitu brány
shodný způsob:
STM32F103
STM32F105, 107
pouze odlišné adresy
(další procesory
STM32F050,
STM32F407,..
odlišná konf.
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
77
Datový registr výstupní brány
Output data register – výstupní datový registr, 32 bitový, význam má pouze
spodních 16 bitů pro 16- bitovou bránu
Vhodné
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
78
Port bit set / reset – „překlopení“ stavu pinu
Nastavování jednotlivých bitů brány, zápis 1 do bitů 31 až 16 nastavuje přísl. bit
do 0 (BR bit reset) , zápis 1 do bitů 15 až 0 nastavuje bit do 1 (BS–bit set)
(„úder zprava, úder zleva“) (zápis 0 – výstupní bit se neovlivní -0 - „žádný úder“)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
79
Reset výstupního pinu brány
Zápis 1 do bitů 15 až 0 nastavuje přísl. bit do 0 (RESET), ( 1 nuluje, 0 nedělá nic)
zápis 0 do registru neaktivní – neovlivní stav výstupu
Vhodné
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
80
Vstupní brána
Pro čtení tlačítka na PA0 (IDR input data register – vstupní datový registr)
Vhodné
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
81
Určení adresy registru
Potřeba znát základní adresu (bázová adr.) periferie (brány) –z Tab. 1 na str. 36
offset pro příslušný registr z Tab. 48 (str. 129)
zákl. adr. pro GPIOC 0x4001 1000
zákl. adr. pro GPIOA 0x4001 0800
kontrol. reg. pro GPIOx_CRL pro bity 7 až 0 má offset 0x00
kontrol. reg. pro GPIPx_CRH pro bity 15 až 8 má offset 0x04
vstup. dat. reg. GPIOx_IDR
offset 0x08
výst. dat. reg
GPIOx_ODR
offset 0x0C
kontr. reg bit set/ reset GPIOx_BSR
offset 0x10
kontr. reg. bit reset GPIOx_BRR
offset 0x14
0x40011000 GPIOC + offset 0x04 = 0x40011004
0x40011004 GPIOC_CRH (konfigurace PC15 až PC8)
výstupní registr brány PC + offset pro GPIOx_ODR
0x40011000 GPIOC + offset 0x0C = 0x4001100C
0x4001100C GPIOC_ODR výstupní registr pro PC
0x400110808 GPIOA_IDR registr vstupní brány PA
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
82
Používané adresy
0x4001 1004 GPIOC_CRH konfigurace PC15 až PC8
0x4001 100C GPIOC_ODR výstupní registr pro PC
0x400110808 GPIOA_IDR registr vstupní brány PA
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
83
Poznámky k použitým instrukcím
BIC R1, R1, R2
; Nulovani bitu v R1
bit clear nuluje bity v R1 tam, kde jsou v R2 bity v 1, jako R1 and (not R2)
BX
LR skok na adresu podle registru, zde podle LR, který obsahuje návrat. adr.,
která se do LR uložila při minulém volání podprogramu
ORR R1, R1, R2 logická operace R1 or R2, výsledek do R1
LDR R1, [R0]
STR R1, [R0]
do R1 načíst obsah podle adresy v R0
uložit R1 na adresu podle R0
TST R1, #0x20000
provede virtuálně log. součin R1 a operandu #0x20000 a podle výsledku nastaví
příznaky ( flagy), zde se testuje stav bitu D16 zda je ve stavu 1
BEQ NO_HSE_RDY skok na navesti NO_HSE_RDY, když je příznak Z (zero)
aktivní, zde když výsledek před. instrukce nastavil Z, tedy bit D16 byl v nule
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
84
Poznámky k použitým instrukcím
SUBS R3, R3, #1 od registru R3 odecte 1 a nastaví příznaky
BNE WAIT
skoc, když priznak Z=0, tedy vysledek odecteni nebyl nulovy
PUSH {LR}
uloz obsah LR do zasobniku
POP
BX
nacti ze zasobniku do LR
skoc podle LR
{LR}
LR
(bylo by mozne jednoduseji provest
POP {PC} , naplnit PC ( program. citac) primo navratovou adr. ze zasobniku)
A4B38NVS, 2015, J.Fischer, kat. měření, ČVUT - FEL
85
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement