Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Procesory Cortex. Úvod do architektury Rodina procesorů s architekturou ARM Cortex umožňuje řešit nejrůznější zařízení včetně těch, která jsou určena.

Podobné prezentace


Prezentace na téma: "Procesory Cortex. Úvod do architektury Rodina procesorů s architekturou ARM Cortex umožňuje řešit nejrůznější zařízení včetně těch, která jsou určena."— Transkript prezentace:

1 Procesory Cortex

2 Úvod do architektury Rodina procesorů s architekturou ARM Cortex umožňuje řešit nejrůznější zařízení včetně těch, která jsou určena i pro velmi náročná průmyslová zařízení, použití v nejrůznějších bezdrátových zařízeních, automobilech a mnoha jiných zařízeních. Tato rodina obvodů se skládá ze tří hlavních typů architektur, kde typ ARMv7 je určen pro náročné aplikace pracujících s velmi složitými operačními systémy. Typ R je určen pro práci v systémech pracujících v reálném čase. Typ M je určen díky podstatné optimalizaci pro použití v levných aplikacích, kde je ho možno velmi optimálně využívat.

3 Z architektury ARMv7-M vznikly vlastně rodiny procesorů Cortex- M3, které byly navrženy proto, aby se mohlo dosáhnout vysokého výkonu systému včetně vysoké efektivity levných vestavěných aplikací. To se týká jak bylo již výše zmíněno příkladně průmyslových řídicích systémů, automobilové elektroniky, drátových i bezdrátových telekomunikačních systémů a dalších zařízení. Pro dosažení tohoto stavu bylo nezbytně potřebné provést v základní architektuře řadu zásadních změn, jako je zjednodušení procesu tvorby software. Výstupem pak bylo cenově efektivní využití procesorů architektury Cortex-M3 včetně i těch nejjednodušších aplikací.

4 Je-li potřeba zvýšit výkon, pak je nezbytné, aby procesory pracovali s vyšší taktovací frekvencí, což vede ke zvýšení odběru elektrické energie. Na nižší taktovací frekvenci spojené však se složitějším strojovým kódem je to mnohem výhodnější. Ve svém jádru pracují procesory Cortex-M3 v závislosti na použité harvardské technologii se třemi fázemi zpracování dat „pipeline“ (oproti procesorům AVR např. ATmega 1284 se dvěmi fázemi zpracování dat), které nabízí řadu výhod. Množství jednocyklových operací přináší až 1,25 MIPS/MHz.

5 Pro procesory Cortex-M3 je k dispozici nová sada příkazů s označením Thumb-2 umožňující programátorovi dosáhnout zvýšení výkonu až o 70 % na 1 MHz oproti procesorům ARM, založených na jádře ARM7TDMI a vybavených jen klasickou instrukční sadou Thumb. Zkrácení doby uvedení konečného produktu na trh spolu se snížením nákladů na vývoj, jsou dnes ta nejdůležitější kritéria pro výběru procesoru. Dalším kritériem je schopnost rychle a snadno vytvořit strojový kód.

6 U těchto nových procesorů s architekturou Cortex-M3, které umožňují jednoduché vytvoření efektivního strojového kódu není nezbytná znalost programátora detailní znalosti architektury. Ten nemusí používat různých assemblerových vložek například pro řízení přerušení, nebo některá časování a to ani při vytváření složitějších aplikací (netýká se složitých a velmi složitých aplikací). Tyto procesory využívají zjednodušený programovací model zásobníku, ve kterém se podařilo efektivně provázat jádro ARM s postupy aplikovanými ve standardních 8mi a 16tibitových mikrokontrolérech. Díky tomu funkce řízení přerušení umožňuje pracovat s velmi jednoduchým kódem bez použití assembleru a složitými manipulacemi s registry.

7 Blokové schéma obvodu řady Atmel SAM3U

8 Novým a přitom klíčovým prvkem sady instrukcí Thumb-2 se ukázal jako nejúčinnější kompilátor jazyka C včetně různých možností jako jsou bitové operace a operace s bitovými poli, tříděním a účinnějším provádění strukturálních podmínek (například if/then). Programátorovi umožňuje instrukční soubor Thumb-2 generovat strojový kód rychleji, jednodušeji a efektivněji, při čemž díky odpovídajícímu kompilátoru nemusí řešit ani volbu mezi optimalizací kódu pro rychlost nebo objem. Programátor proto může zvolit komplexní optimalizaci objemu a rychlosti, což zrychluje i proces přípravy a generování kódu. Proto vývojáři nemusí předkompilovávat kritické části kódu a přilinkovávat je na hlavní program v podobě samostatných knihoven.

9

10 Jako obvykle zde platí, že vše má klady a též zápory. V tomto případě je omezujícím faktorem pro hromadné nasazení těchto velmi efektivních procesorů jejich vyšší cena, protože moderní technologie jsou vždy dražší. Hlavní položku zde tvoří velikost použitého křemíku. Procesory vyrobené technologií Cortex-M3 obsahují nejmenší jádro, které je průmyslově aplikovatelné. Proto obsahuje jen asi 33 tisíc tranzistorů realizovaných technologií 0,18 mikronů. Jako další je zde změna i v přístupu jádra procesoru do paměťového prostoru a to zavedením technologie uchování pracovních dat, změnou práce bitových operací a systémových instrukcí Thumb- 2. Výsledkem těchto změn je nižší počet přístupů do paměti až asi o 25 % oproti klasickému jádru ARM.

11 V současné době to jsou asi nejprogresivnější obvody založené na architektuře Cortex-M3 a nachází celou řadu uplatnění. To v důsledku vyšší produktivity, nižší složitosti programování, lépe propracovanému Blokové schéma obvodu s jádrem Cortex M3

12 Procesory založené na architektuře Cortex-M3 jsou hierarchickou skupinou obsahují základní jádro (CM3Core) rozšířené periferie, mechanismy pro řízení přerušení, ochranu a přístup k paměti atd. Soubor je do relativně značně volně konfigurovatelný umožňující dobré použití procesoru pro celou řadu úkolů. Z předchozího obrázku vyplývá, jak je jádro Cortex-M3 začleněno do zbylé architektury a minimalizace požadované velikosti paměti, spotřeby energie apod. Jádro Cortex-M3 je založeno již na harwardské architektuře, kdežto ostatní procesory ARM mají von Neumanovu architekturu. Při vykonávání příkazů v harvardské architektuře lze číst naráz data i instrukce zároveň a díky zřetězení je schopen vykonávat i několik operací současně, čímž se dosahuje vyššího výkonu systému.

13 Třístupňové proudové zpracování (pipeline) vykonává naráz v jediném hodinovém cyklu následující operace:  Fetch - vyzvednutí z pamětí instrukce č.3  Decode - dekódování instrukce č.2  Execute - zpracování nejstarší instrukce č.1

14 Porovnejme to s architekturou procesoru AVR např. ATmega 8515, kdy se jednalo jen o dvoustupňové proudové zpracování. Při tom platí, že čím je procesor rozdělen na více nezávislých částí, které jsou vždy menší a rychlejší, pak zpracování jedné instrukce trvá kratší dobu. Při načítání instrukce z paměti se indikuje podmíněný skok, který se vyhodnotí při předpovědi skoku, což vede ke značnému zrychlení vykonávání instrukcí v porovnání s jinými architekturami (srovnej předpověď skoků u procesoru Pentium). Proto není potřeba čekat na vykonání skokové instrukce a je možno ihned začít číst data z vyžadované oblasti. To navíc snižuje zbytečné prostoje a urychluje přísun dat výkonnému jádru.

15 Procesorové jádro Cortex-M3 obsahuje dekodér jak pro standardní instrukce, tak i instrukce Thumb-2 přinášející mnohem lepší využití různých prostředků (hlavně paměti, řídicí logiky, rozhraní a ALU s podporou hardwarového násobení a dělení). Použitá architektura procesoru Cortex-M3 je jak datová, tak i adresová o šíři 32bitů (4 bajty) včetně pomocných registrů, periferií a pamětí. Jádro obsahuje 13 registrů pro všeobecné použití, dva ukazatele zásobníku, registr vazby, programový čítač, registr příznaků a sadu speciálních registrů.

16 Procesor Cortex-M3 podporuje dva pracovní režimy:  Thread  Handler.  Dále dvě úrovně přístupu ke kódu, které umožňují vytvářet i složité struktury bez ztráty kvality: privilegované bez privilegií Neprivilegovaná úroveň přístupu omezuje nebo zcela eliminuje přístup a použití některých částí procesoru (například určité paměťové oblasti – obdoba chráněného režimu) apod.

17 Režim Thread, nebo-li vlákno je standardní pracovní režim, podporující distribuci úrovní přístupu. Režim Handler je využíván jen omezeně, tedy tehdy, kdy celý kód získá privilegovanou úroveň přístupu (v opodstatněných případech).

18 Alokace paměti a práce s bity Jádro Cortex-M3 obsahuje dekodér jak pro obě instrukční sady, tak i pro instrukční sadu Thumb-2. Rozšířené ALU podporuje hardwarové násobení a dělení, dále obsahuje blok řídicí logiky a rozhraní s ostatními komponentami systému procesoru. Procesor má jednoduše organizovanou paměť s maximálním adresovatelným prostorem do 4 GB. Obsahuje pevně daný adresní prostor pro programovou paměť Flash, pracovní paměť RAM, externí paměť, periferie a další (viz následující obrázek). Z obrázku patrné, že součástí adresovatelného paměťového prostoru jsou též adresy, které jsou vyhrazeny výrobcem.

19 Adresovatelný paměťový prostor obvodů architektury Cortex-M3

20 Procesory postavené na jádře architektury Cortex-M3 poskytují rovněž přímý přístup k jednotlivým datovým bitům v jednoduchých systémech a to zavedením techniky volání bitových operací. Srovnání mechanismu bitových operací v tradiční architektuře - ARM7 (a), Cortex-M3 (b)

21 Mapa paměti zahrnuje dvě 1MB oblasti pro bitové operace v paměti SRAM a periferním prostoru který mapuje až 32MB jiných oblastí. Operace pro nahrávání/uložení na adrese v jiné oblasti jsou přímo přeloženy pro bitovou operaci jinak touto adresou označenou. Zápis na adresu v jiné oblasti s nejméně významným nastavením bitu zapíše 1 do bitbandu a zápis s nejnižším platným bitem „nastavit“ zapíše 1 do bitu v bit-bandu a zápis s nejnižším platným bitem „výmaz“ zapíše 0 do tohoto bitu. Navíc je tato operace základní a nemůže bít přerušena jinými činnostmi sběrnice.

22 Procesory založené na architektuře ARM7 podporují jen přístup k celým datovým slovům a proto veškeré datové práce musí být zarovnány na hranici 32 bitových slov. Zpracování stejných instrukcí na architektuře Cortex-M3 umožňuje přístup k nezarovnaným datům, což minimalizuje časové prodlevy spojené s přístupem k takovým datům. 32bitová LONG data 16bitová INT data 8-bit CHAR data zarovnaná data nezarovnaná data Uspořádání při zarovnaných a nezarovnaných datech

23 V případě, že je požadován přístup k nezarovnaným datům, je možné provést jejich rozdělení do několika paralelních vláken se zarovnanými daty, takový proces je transparentní i pro uživatele programu, jako je tomu automaticky uvnitř jádra. Architektura obvodů Cortex-M3 podporuje též 32bitové násobení v jediném cyklu, stejně jako práci s daty, což však vyžaduje 2 až 12 hodinových taktů v závislosti na velikosti operandů. Operátor dělení je rychlejší v případě, že dělitel a dělenec jsou malé. Takové zlepšení v provádění matematických operací procesorů CortexM3 je výhodné pro řešení problémů, které vyžadují rozsáhlé matematické výpočty (viz následující tabulku).

24

25 Architektura instrukčního souboru Thumb-2 ARMV7 - M je mikrořadič z architektury ARMV7 a je odlišný od dřívějších architektur ARM v tom, že sám podporuje instrukce Thumb-2. Technologie Thumb-2 je směs 16ti a 32ti bitových instrukcí zaručujících výkon tohoto instrukčního souboru ARM a je zpětně slučitelný s 16ti bitovým instrukčním souborem Thumb. Instrukční sada Thumb-2 obsahuje povely, které umožňují zjednodušit a snížit množství kódu v řadě aplikací. To znamená, že kupříkladu instrukce BFA a BFC, které jsou určeny pro práci s bitovými poli, jsou často používány i k řešení problémům zpracování, jako jsou datové pakety sítí v telekomunikačních aplikacích.

26 Instrukce SBFX a UBFX zjednodušují práci s bity v registrech, což je užitečné v automobilovém průmyslu. Instrukce RBIT přeskupuje bity v datovém slově a v důsledku toho se velmi často využívá při provádění DSP algoritmů, jako jsou Fourierovy transformace. Instrukce pro práci s tabulkami - TBB a TBH naproti tomu umožňují dosažení rovnováhy mezi kompaktností kódu a vysokým výkonem. V neposlední řadě je rovněž možné zmínit novou implementaci instrukcí IF/THEN v instrukční sadě Thumb-2, která umožňuje předpovídání pořadí provedení až do čtvrté podmínky.

27 Řízení vektorového přerušení (The Nested Vectored Interrupt Controller - NVIC) Nedílnou součástí architektury Cortex-M3 procesorů je konfigurovatelný blok NVIC, nabízející vynikající podmínky pro obsluhu přerušení. Ve výchozím nastavení generuje nemaskované přerušení a 32 fyzických utilit s 8 úrovněmi priority. Zároveň však může být nakonfigurován i tak, aby vygeneroval libovolný počet 1 až 240 fyzických přerušení až s 256 úrovněmi priority a to při velice jednoduché konfiguraci.

28 Architektura procesorů CortexM3 obsahuje tabulky vektorů přerušení, která obsahuje adresy funkcí, vykonávaných při daném požadavku. V případě přerušení činnosti procesoru je tato adresa vektoru využita s pomocí rozhraní instrukční sběrnice k přesunu v programové paměti. Tabulka vektorů probíhajících přerušení se výchozím stavu nachází na nulové hodnotě, ale umožňuje přesun s předprogramovanými kontrolními registry. Pro redukci počtu hradel a zvětšení flexibility systému Cortex - M3 přešel ze stínového registrového výjimkového modelu procesoru ARM7 k zásobníkově založenému výjimkovému modelu. Když nastane výjimka, čítač instrukcí, programový stavový registr, registr spojení (Link Register) a registry R0 – R3, R12 se ukládají do zásobníku.

29 Pomocí datové sběrnice se ukládají obsahy registrů, zatím co pomocí instrukční sběrnice se se identifikuje vektor z tabulky vektorů přerušení a vyvolá první instrukci výjimkového kódu. Jakmile je dokončeno ukládání a načtení instrukcí, provede se obslužný program přerušení, nebo chyba obsluhy, následuje automatické obnovení registrů, což umožní přerušenému programu pokračovat v normálním běhu.

30 V případě, že nastane situace, kdy je voláno jedno přerušení po druhém, opakují procesory s tradiční architekturou celý cyklus zálohování dat a obnovení vždy dvakrát (při vstupu a ukončení přerušení), s výstupem ze zpracovávaného přerušení, při vstupu do dalšího. To má však za následek značné zpoždění a ve svém důsledku i výrazný pokles celkového výkonu systému. Architektura procesorů CortexM3 zjednodušuje přechod z aktivního do nového přerušení uplatněním moderních technologií tzv. "dokování přerušení" a hardwarovou implementaci kontroly NVIC.

31 Technologií dokování přerušení lze dosáhnout mnohem menších časových prodlev tím, že nahradí sekvenční obnovu a ochranu dat, která obvykle trvá zhruba 30 cyklů, jednoduchým mechanismem, který celkem vyžaduje pouhých 6 cyklů. Níže je ukázán mechanismus při řetězení při více přerušeních

32 Stavové registry procesoru jsou automaticky uloženy při vstupu do prvního přerušení a obnoví se až po odchodu s využitím jen několika cyklů, což je mnohem rychlejší než softwarová obsluha přerušení, známá z klasických procesorových architektur. Zdokonalení umožňuje získat velmi vysoký výkon, což je obzvlášť důležité v situacích, kdy je na standardním programovém kódu vyžadováno zpracování velkého počtu přerušení. Odezva na žádost o přerušení práce procesoru zahrnuje:  zjištění přerušení,  optimální zacházení s těsně na sebe navazujícími nebo později přišlým přerušením,  volání vektorové adresy,  sestavení potřebných registrů,  větvení řídícího programu.

33 Toto jsou úkoly vykonané v hardwaru a zahrnuté v odezvě na žádost o přerušení. V jiných architekturách musí být tyto činnosti vykonávány softwarem, který je složitý a dlouhý. NVIC také začleňuje řízení výkonu procesoru Cortex - M3, který podporuje klidové režimy. Mód Sleep Now dovoluje buď čekat na přerušení (Wait For Interrupt - WFI) nebo čekat na instrukci nějaké události (Wait For Event - WFE), které ihned dávají okamžitě jádro do režimu sníženého příkonu a očekávající nějakou výjimku (popud k ukončení). Mód Sleep On Exit převádí systém do režimu nízkého příkonu jakmile je ukončeno i při nejnižším prioritním přerušení. Jádro zůstává v režimu nízkého příkonu až do další výjimky. Od té doby může tento stav ukončit jen přerušení a stav systému není obnovený.

34 Je-li nastaven bit Hluboký spánek (SLEEPDEEP) systémového řídícího registru, je ho pak možné použít k „zahradlování hodinek“ jádra a ostatních systémových komponent pro optimální úspory energie. Jestliže se objeví výmaz zamčené části nebo programová instrukce, instrukce je přerušena a LOCKE bit registru MC_FSR se nastaví do H a též řada přerušení se zvýší, pokud LOCKE bit byl nastaven do H v MC_FMR registru.

35 Jádro zůstává ve stavu spánku, dokud se nesetká s jinou výjimkou. Protože pouze přerušením lze odejít z tohoto režimu, stav systému není obnoven. Je-li nastaven bit HLUBOKÝ SPÁNEK („SLEEPDEEP“) systémového řídícího registru, je možné ho použít k „clock gate“ jádra a ostatních systémových komponent pro optimální úspory energie. Pomocí předvyprázdnění a přepnutí do druhého přerušení bez dokončení stavu obnovení a uložení, NVIC dosáhne nižší čekací doby deterministickým způsobem.

36 Při ukončení režimu spánnku („Sleep On Exit“) jakmile opustí rutinu pro obsluhu přerušení s nejnižší prioritou přepíná se systém do režimu malého výkonu. Jádro zůstane ve stavu spánku, dokud nenarazí na jinou výjimku. Protože pouze přerušením lze odejít z tohoto režimu, stav systému není obnoven. Je-li nastaven bit HLUBOKÝ SPÁNEK („SLEEPDEEP“) systémového řídícího registru, je možné ho použít k „clock gate“ jádra a ostatních systémových komponent pro optimální úspory energie. Pomocí předvyprázdnění a přepnutí do druhého přerušení bez dokončení stavu obnovení a uložení, NVIC dosáhne nižší čekací doby deterministickým způsobem.

37 NVIC má také zaintegrován časovač (System Tick - SysTick), který je 24bitový a může být použit ke generovat přerušení v pravidelných časových intervalech, řízení reálného času OS nebo pro další naplánované úkoly.

38 Odezva NVIC při pozdějším příchodu přerušení s vyšší prioritou Automobilové systémy jsou často řízeny pomocí přerušení při obvyklých akcí jako je používání brzdy a při projíždění ostrých zatáček. Rychlá a předpověditelná odpověď na takováto přerušení pro zařazení technologií jako antiblokovací brzdové soustavy (ABS) a automatická kontrola stabilizace je kritická pro bezpečný provoz. Tyto systémy jsou mimořádně komplikované a mohou být rozmístěny kdekoliv v mnoha různých subsystémech.

39 Technologie tail chainingu v NVIC poskytuje přerušení, které nastávají postupně, ale mohou nastat případy kdy dojde k přerušení s vyšší prioritou během provádění obsluhy přerušení při ukládání (Push) nebo vyjímání (Pop). Technologie řetězení či spojování v NVIC podporuje přerušení, která jdou za sebou a těsně na sebe navazují, ale mohly by tam být případy, kde přerušení vyšší priority jako je uložení do zásobníku nebo stav obnovení ze zásobníku po přerušení by se mohlo také vyskytovat i během ukládání do zásobníku nebo obnově po přerušení. V tradičních procesorových systémech ARM se musí tyto kroky dokončit před převzetím dalšího přerušení. NVIC u procesoru Cortex poskytuje řešení pro tyto možnosti s podporou pro další pozdější příchod žádosti o přerušení a preemci.

40 Obnovení obsahu ze zásobníku při preempci NVIC Podobně NVIC ukončí ihned výběr ze zásobníku a to pokud přijde žádost o nové přerušení. Preempce a přepínání pro druhé přerušení bez dokončení obnovy a ochrany. Tím NVIC dosáhne nižšího zpoždění. Pomocí předvyprázdnění a přepnutí do druhého přerušení bez dokončení stavu obnovení a uložení, NVIC dosáhne nižší čekací doby deterministickým způsobem.

41 Nemaskovatelné přerušení (NMI) dále zvětší determinizmus dovoluje kritické přerušení, který má být realizováno jako nemaskovatelné, což je zvláště důležitý rys v systémech s watchdogem, které musí být nezbytně spolehlivě nastaveno zvláštním časovým intervalem.

42 Jednotka ochrany paměti MPU je volitelná část procesoru, která může zlepšit spolehlivost vložených systémů a to ochranou kritických částí kódu užívaných operačním systémem z uživatelských aplikací, oddělené úkoly zamítnou přístup ke svým datům, tj. zamezí přístup k některým částem pracovní paměti, které nesmí být přepsány (jako "read only") nějakým náhodným přístupem, který by ohrozil celý systém. Nejčastěji je využívána pro ochranu operačních systémů, rozdělených na procesy.

43 MPU tak aplikacím umožňuje pohodlné rozložení do souboru procesů. Každý takový proces má přidělenu svou vlastní oblast paměťového prostoru (včetně přidělené paměti programu, datové paměti, zásobníku atd.) a určených periferií, přičemž zároveň může odkazovat i do společné paměťové oblasti a společných periferií. MPU zajišťuje privilegovaný přístup dle stanovených úrovní. K těm patří i spuštění kódu s odpovídajícími preferencemi a práci s vyhrazenou pamětí a periferiemi. Zároveň s možností přístupu do sdíleného paměťového prostoru je možné i zde aplikovat ochranu, aby se zabránilo neoprávněnému přístupu. MPU podporuje až 8 takových domén, z nichž každá může být rozdělena do 8 suboblastí. Minimální velikost pole je 32 bytů a zvyšuje se v krocích dělitelných dvěma, maximálně však do adresovatelné paměti 4 GB.

44 Přístup k paměti není zahrnut v oblastech určených dle MPU a nepovolený přístup do takové paměti povede k vyvolání odpovídající chyby.

45 Ochrana oblastí paměti před neautorizovaným přístupem je prováděna dle pravidel, která jsou naopak založeny na typech operací (čtení, zápis, spuštění procesu) a stupni prioritní oblasti programového kódu, který provádí přístup. Každá oblast má sadu bitů, které reprezentují povolené typy činností oblasti, které jsou odpovědné za druhy akcí. Mezi další výhody MPU patří rovněž i podpora překrývajících se oblastí paměťového prostoru. Tato vlastnost poskytuje velmi výrazný přínos k ochraně uložených informací. Vzhledem k tomu, že velikost oblastí je násobkem dvou, je zde příležitost plného vstupu do jedné nebo více oblastí i v rámci dalších oblastí paměti, realizaci rychlé víceúrovňové struktury ochrany či řízení přístupu, stejně jako provádění vnořeného překrývání paměťových oblastí.

46 Odladění a trasování Ladicí vstup do procesorového systému je přes ladicí přístupový port (Serial Wire Debug Port - DAP), který může být použit jak buď sériový ladicí port (Serial Wire Debug Port - SW DP) pro dvouvodičové rozhraní (hodinky a data) nebo sériový ladicí port JTAG (SWJ DP), který umožní protokoly a to buď JTAG nebo SW podle potřeby. Ladicí akce mohou být spouštěny různými událostmi jako jsou přerušovací body, sledovací body, poruchové stavy, nebo externí ladicí žádosti. V případě ladicí události může procesor vstoupit do zastavovacího módu nebo ladicího monitorovacího módu. Během zastavovacího módu procesor úplně zastaví provádění programu.

47 Režim zastavení podporuje jednotlivé kroky operací. Přerušení mohou zůstat nevyřešena a uplatnit se během krokování nebo mohou být maskována, takže externí přerušení ignorují krokování. Během režimu ladění monitoru procesor provádí chybovou rutinu, aby provedl úkoly ladění, přičemž stále umožňuje, že se provádějí výjimky vyšší priority. Jednotka Flash Patch and Breakpoint (FPB) implementuje šest programových míst přerušení a dva literal data fetch breakpoints (místa přerušení) nebo alternativně opravuje instrukce nebo literal data z prostoru paměti kódů do prostoru systémové paměti. Jednotka obsahuje šest komparátorů instrukcí pro přiřazování k přiváděným instrukcím z prostoru kódů.

48 Každý komparátor může být uzpůsoben buď k remapování kódu do oblasti v prostoru systému nebo implementování hardwarového místa přerušení tím, že vrací instrukci místa přerušení procesoru. Také obsahuje dva literal komparátory pro přiřazování k literal loads z prostoru kódu a remapování do oblasti v systémovém prostoru.

49 Jednotka datového sledovacího a trasovacího bodu (Data Watchpoint and Trace - DWT) obsahuje čtyři komparátory, z nichž každý může být konfigurován jako hardwarový sledovací bod. V případě použití tohoto uspořádání mohou být komparátory naprogramovány pro porovnání buď datové adresy nebo čítače instrukcí. DWT komparátory lze také konfigurovat ke spuštění PC vzorkováním událostí (činnosti), datová adresa vzorkuje činnost a způsobí, že Embedded Trace Macrocell (ETM) spouští pakety do toku instrukcí. ETM je volitelná komponenta, která je navržená, aby podporovala samotné sledování instrukcí, které zajistí, že rekonstrukce provádění programu je možná s minimálním dopadem na oblast.

50 Trasovací systém Cortex – M3

51 Volně šiřitelé vývojové nástroje Pro takovéto nástroje není potřeba žádných nástrojů a lze je z internetu volně stáhnout. Jedná se například o Eclipse, Yagarto gnu arm toolchain + Yagarto Tools, GNU arm eclipse Pluton, SAM-BA (SAM Boot Assistant). Eclipse je editor zdrojových kódů vyvinutý firmou IBM jako obdoba Visual Studia pro vývoj aplikací v Javě. SAM-BA je prostředek pro snadné naprogramování mikrokontrolérů či mikropočítačů firmy Atmel řady AT91 umožňující programování v aplikaci ISP. Naprogramování je možno provádět pomocí rozhraní RS 232, JTAG či USB. Jako výchozí rozhraní je USB.

52 Předpoklady pro práci s Eclipse a instalace Využití Eclipse je velice široké a možnosti konfigurace dosti složité, proto si musíme napřed určit nutné předpoklady, ze kterých budeme dále vycházet. Prvním předpokladem je instalace a používání Eclipse v operačním systému Windows XP. V ostatních verzích Windows se mohou v některých případech vyskytnout drobné odlišnosti. Významnějších odlišností od tohoto by se pak mohl dočkat uživatel, který by se rozhodl pro práci s Eclipse v jiných operačních systémech. Eclipse je totiž aplikace, která je závislá na platformě, na kterou je instalována. Proto je nutné, opatřit si právě tu verzi instalačního balíku Eclipse, která je pro danou platformu určena (existují různé verze pro Windows, Linux, Mac OSX, Solaris atd.). (http://www.eclipse.org/downloads/download.php).http://www.eclipse.org/downloads/download.php

53 Eclipse přebírá vzhled a chování, které je typické pro nativní aplikace daného operačního systému. Dalším předpokladem je používání stejné verze Eclipse. V době psaní této práce je nejaktuálnější verzí Eclipse SDK 3.3. Použití právě této aktuální verze pro práci není podmínkou, protože základní funkčnost se nezmění, můžou se však vyskytnout drobné odlišnosti od tohoto návodu, případně některé starší verze nemusí obsahovat pokročilejší funkce. Abychom mohli Eclipse používat, musíte mít k dispozici soubor eclipse-SDK-3.3-win32.zip. Ten získáme buď z CD přidanému k této praci nebo ho můžete stáhnou ze stránek Elipse. Předpokládejme, že jsme si ho opatřili. Co nás čeká teď? Soubor eclipse-SDK-3.3-win32.zip je nutné rozbalit někam, odkud bude možné později program spouštět (Eclipse se neinstaluje, ale pouze rozbalí).

54 Nejlepší takové místo je c:\Program Files\Eclipse. Adresář obsahuje několik složek a samostatných souborů. Mimo jiné je v něm umístěn také soubor eclipse.exe. Tento soubor slouží ke spuštění programu. Nejprve otevřeme složku „eclipse“, která byla vytvořena na cestě zadané při minulém kroku a spustíme Eclipse pomocí ikonky. Při prvním spuštění se Eclipse dotazuje na cestu k tzv. Workspace, což je v podstatě úložiště, kam se budou ukládat naše budoucí projekty a práce. Vybereme tedy požadovanou cestu k úložišti (pokud chceme toto úložiště používat stále, zaškrtneme ještě volbu Use this as the default and do not ask again) a odsouhlasíme.

55 První spuštění Nyní se nám již zobrazí uvítací obrazovka Eclipse, kde máme na výběr z pěti základních voleb:  Overview,  What’s New,  Samples,  Tutorials  Workbench.

56 Uvítací obrazovka

57 Velice užitečné informace se skrývají pod volbou Tutorials, která otevírá praktickou nápovědu. Zde se můžeme seznámit s prací v Eclipse od úplných začátků (tzv. Hello world aplikace), až po pokročilé záležitosti reprezentované např. vývojem pluginů pro samotné prostředí Eclipse. Nás v tuto chvíli bude zajímat ikona Workbench, která otevírá samotné pracovní prostředí Eclipse. Stejného efektu dosáhneme také zavřením okna (nebo chcete-li záložky) Welcome v levém horním rohu. Pomocí ikony Overview můžeme otevřít nové okno nápovědy, kde se dozvíme teoretické informace o Eclipse, vývoji aplikací v Eclipse atd. Ikona What’s New poslouží především uživatelům starších verzí Eclipse. Ukazuje totiž novinky oproti předchozím verzím.

58 Ikonka Samples nás v tuto chvíli nemusí zajímat, protože její další funkčnost není součástí této typické instalace Eclipse. Velice užitečné informace se skrývají pod volbou Tutorials, která otevírá praktickou nápovědu. Zde se můžeme seznámit s prací v Eclipse od úplných začátků (tzv. Hello world aplikace), až po pokročilé záležitosti reprezentované např. vývojem pluginů pro samotné prostředí Eclipse. Nás v tuto chvíli bude zajímat ikona Workbench, která otevírá samotné pracovní prostředí Eclipse. Stejného efektu dosáhneme také zavřením okna (nebo chcete-li záložky) Welcome v levém horním rohu.

59 Popis pracovního prostředí Při dokončení postupu z předchozí kapitoly se otevře základní pracovní prostředí Elipse pro vývoj aplikací v jazyce C/C++, které lze rozdělit do několika základních částí. Ty popisují následující popisné podkapitoly, vztahující se k obrázku.

60 Hlavní nabídka (menubar) Představuje hlavní nabídku nástrojů a funkcí, které Eclipse nabízí. Funkce jsou typově členěny do jednotlivých menu a vnořených menu. Hlavní nástrojová lišta (toolbar) Obsahuje v podstatě vybrané funkce a nástroje z hlavní nabídky (menubar). Jsou zde zobrazeny ty nejpoužívanější. Tato nástrojová lišta je samozřejmě nastavitelná. Máme tedy možnost nastavit, jaké ikonky bude či nebude obsahovat.

61  Package Explorer - tato část základního okna Eclipse slouží pro správu projektů, balíků, knihoven a souborů. Package Explorer přehledně zobrazuje naše projekty a jejich strukturu.Každý projekt zde může být zobrazen jako uzavřený nebo otevřený: Otevřený projekt poznáme podle znaménka „+“ a otevřené složky před názvem projektu. Tento projekt je pak možné rozbalit kliknutím na „+“ a tím se otevře jeho vnitřní struktura. Tu pak můžeme skrýt kliknutím na znaménko „-“ (stejným způsobem rozbalujeme a zabalujeme také podřízené balíky).

62 Zavřený projekt (bez znaménka a s uzavřenou ikonkou složky) můžeme otevřít pomocí volby Open Project z menu, které vyvoláme kliknutím pravým tlačítkem myši na název projektu v Package Exploreru. Zavřeme ho pak volbou Close Project ze stejného menu.  Hierarchy Umožňuje náhled na kompletní hierarchii typů, jejich nadřazené typy a podtypy. Můžeme také zobrazit hierarchii projektů, balíků a zdrojových adresářů. Stačí např. v pohledu Outline označit příslušný objekt (např. proměnná určitého datového typu) a přetáhnout do pohledu Hierarchy, kde se nám zobrazí jeho hierarchie. Při základním zobrazení se nachází ve stejné oblasti obrazovky jako Package Explorer a přepínáme mezi nimi pomocí záložek.

63  Outline Nachází se v pravé části základní obrazovky a má význam především pro práci s kódem v programovacím jazyce Java. Vztahuje se vždy k souboru, který je zobrazen v editoru kódu a zobrazuje jeho strukturu z pohledu od balíků, přes otevřený soubor, až po vnitřní strukturu (proměnné, metody…).

64 Spodní panel  V této části jsou v základní C/C++ zobrazeny tři základní pohledy, mezi kterými můžeme přepínat pomocí záložek s jejich názvy.

65 Vytvoření projektu 1.Vytvoříme nový projekt pomocí položky v menu File/New/C Project, kde v nabídce je informace o našem budoucím projektu V řádku Project name napíšeme název našeho projektu. Pokud chceme používat jiný adresář pro náš projekt odznačíme položku Use default location a vybereme umístění pro náš projekt. Dále v dialogovém okně s názvem Project type vybereme položku Executable/Empty Project, to abychom začaly s prázdným projektem. Ve vedlejším okně s názvem Toolchains vybereme položku WinARM, Yagarto. Dále klikneme na tlačítko Next.

66 Okno pro tvorbu nového projektu

67 Okno pro tvorbu nového projektu (druhá část) 2. V další nabídce, jak je znázorňuje obrázek necháme vše jak je nastaveno a stiskneme tlačítko Finish. Tím se nám vytvoří prázdný projekt.

68 3. Abychom mohli psát náš zdrojový kód musíme si vytvořit soubor typu c. To uděláme výběrem v menu File/New/Source File. V řádku s názvem Source Folder je název našeho projektu, stejný název má i adresář s naším projektem. Ponecháme tam výchozí hodnotu, což je název právě našeho projektu. Do řádku Source File napíšeme název souboru, do kterého budeme psát zdrojový kód. Název tohoto souboru je vhodné napsat i s příponou, jak je tomu na dalším obrázku, poté zmáčkneme tlačítko Finish. Obdobně tak můžeme vytvořit hlavičkový soubor, kdy ve výběru v menu zvolíme položku File/New/Header File.

69 Okno pro vytvoření nového zdrojového kódu

70 Pokud máme soubory se zdrojovými kódy nebo hlavičkové soubory již z některých předešlých projektů, můžeme je nakopírovat do našeho projektu. Poté však nesmíme zapomenout na obnovení nabídky v Project Exploreru a to buď pomocí klávesy F5 a nebo kliknutím pravého tlačítka myši v tomto okně a vybrat položku Refresh. Abychom získali soubor s příponou bin z námi napsaného kódu, je nutné změnit nastavení v našem vývojovém prostředí Eclipse. Toto nastavení je velice důležité, jinak by se nám nepodařilo vytvořit výsledný soubor, i proto je vytvořen postup nastavení v této práci.Nastavení provedeme následujícím způsobem.

71 Změna vlastností projektu 1. V Project Exploreru vybereme složku s názvem našeho projektu a pravým tlačítkem myši na ni klikneme a vybereme položku Properties nebo zmáčkneme klávesovou zkratku Alt+Enter. Objeví se nám nabídka, ve které vybereme položku C/C++ Make Project (viz následující obrázek). V části Build command odznačíme položku Use default a v řádku Build command necháme slovo make. V části Build Location je adresář do kterého bude výsledný soubor vytvořen.

72 Nabídka pro změnu vlastností projektu

73 2. Záložka Error Parsers slouží k nastavení zobrazení chyb při linkování projektu. Je vhodné mít označené všechny možnosti.

74 3. Další záložkou je Binary Parsers, kde máme možnost nastavit zapnutí binárního linkování, i zde je doporučeno označit všechny možnosti, jak je tomu na předchozím obrázku a to z důvodu správného vytvoření výsledného souboru.

75

76 4. Poslední záložkou je Discovery Options. V této záložce v části názvem Automated discovery of paths and symbols označíme obě dvě políčka, jak je vidět na předchozím obrázku. V rolovací liště s názvem Discovery profile vybereme položku GCC per file scanner info profile. Zbytek je bez označení. 5. Pokud máme toto vše nastaveno zmáčkneme tlačítko OK a nastavení máme hotovo.

77 Pokud se chceme vyhnout tomuto dlouhému nastavování, je vhodné si po prvním nastavení adresář zkopírovat a pak z něj vždy začít tvořit. Další možnost je zkopírování našeho projektu v Project Exploreru a to tak, že vybereme náš projekt a pravým tlačítkem na něj klikneme, z nabídky pak vybereme položku Copy nebo pomocí klávesové zkratky Ctrl+C. Na plochu v Project Exploreru klikneme pravým tlačítkem myši a zvolíme položku Paste nebo klávesovou zkratkou Ctrl+V, poté stačí napsat název nového projektu a stisknout tlačítko OK.

78 Tímto postupem jsme se sice vyhnuli většině nastavování, ale i zde musíme nastavit místo kam se bude výsledný soubor ukládat viz. krok č.1. Jestliže máme vše nastaveno a zdrojový program napsán, tak už stačí pouze vytvořit výstupní soubor s příponou bin. Ten vytvoříme pomocí tlačítka Build All, o kterém bylo zmíněno již dříve.

79 Testovací programy Zdrojové kódy, které jsou použity v této práci byly napsány v jazyce C a vychází ze zdrojových kódů, které jsou volně dostupné z internetu a slouží jako demonstrační ukázky. Tyto zdrojové kódy nalezneme na stránkách společnosti Atmel, dále na stránkách Yagarto a také na stránkách firmy Olimex. Důležité pro psaní kódu je znát registry které jsou dostupné pro konkrétní piny, popis jednotlivých registrů nebo jednoduché znázornění je v manuálu mikrořadiče Parallel I/O controller user interface, který je volně stažitelný z internetu.

80 Tento kód je napsán v jazyce C a vychází ze zdrojového kódu, který napsal J.P.Lynch. Kód je možné stáhnout z internetu na adrese: a skládá se ze dvou hlavičkových souborů a několika souborů s logickou a prezentační částí. Ty podstatné jsou zde zmíněny.

81 AT91SAM7S256.h Hlavičkový soubor, který slouží jako knihovna. Původní soubor již zmíněném balíku byl tento hlavičkový soubor pro mikrořadič s kapacitou flash paměti 256kB a nazývala se AT91SAM7S256.h. Bylo potřeba jej nahradit z jasného důvodu a to rozdíl těchto pamětí a jejich inicializace.

82 Board.h V tomto souboru jsou informace o použitém krystalu a pinech na které chceme připojit LED diody. Konstanta LED1 s hodnotou (1<<8) definuje piny, které jsou použity pro blikání, zde je to port PA8 čemuž odpovídá pin 31. Dále konstanta EXT_OC je hodnota externího oscilátoru a MCK je frekvence hlavních hodin.

83 // // Led Definice // // PIO PA PB PIN #define LED1 (1<<8) // PA8 RD PCK2 31 #define NB_LEB 1 #define LED_MASK (LED1) // // Hlavní hodiny // #define EXT_OC // Externí oscilátor MAINCK #define MCK // MCK (PLLRC div by 2) #define MCKKHz (MCK/1000) //

84 Main.c V tomto souboru je podstatná část programu která zajišťuje chod programu. Program, který je ve smyčce zapíná a vypíná LED diodu, respektive přivádí logickou jedničku a nulu na piny definované v souboru Board.h. while (1) { if ((pPIO->PIO_ODSR & LED1) == LED1)// Čtení stavu z LED pPIO->PIO_CODR = LED1; // Zapnuti LED else pPIO->PIO_SODR = LED1; // Vypnutí LED for (j = ; j != 0; j-- );// čekat 1 sekundu IdleCount++; // Přičítání počítadla }

85 Vložení programu do mikrořadiče Abychom mohli vložit námi napsaný program do mikrořadiče musíme mít buď zařízení, které se jmenuje JTAG nebo můžeme využít integrovaného Bootloaderu. JTAG je zkratka ze slov Joint Test Action Group. Tato zkratka je častěji používaný název pro komunikační standard IEEE JTAG je určen pro komunikaci se zařízením a jeho vzdálené testování. Podrobný popis najdeme na internetu (např. stránky JTAG Technologies: Ke spojení s počítačem můžeme použít sériový i paralelní port. Pokud tyto porty v PC nemáme je možné využít převodníků s integrovaným obvodem FT2232. Zapojení lze sehnat na internetu a je jich velká řada.

86 Adaptér JTAG můžeme také zakoupit již hotový, ale tato varianta je finančně náročná cca 1000,- Kč. Abychom mohli zapsat program do našeho mikrořadiče potřebujeme navíc program SAM-BA. Tento program je volně stažitelný z internetu a nebo opět z CD k této práci. Nevýhoda této koncepce je, že musíme mít bezchybný kód, protože jej nemůžeme odladit, jak je tomu u JTAGu. Výhoda je, že nás téměř nic nestojí, protože nám stačí USB kabel z tiskárny a USB konektor typu B.

87 Aktivace bootloaderu

88 SAM - BA Po inicializaci a znovu zapnutí se nám nainstaluje příslušný driver potřebný k této komunikaci. Nyní můžeme spustit program SAM-BA, kde jako první se nám spustí nabídka. V řádku s názvem Select the connection vybereme námi nainstalovaný mikrořadič, většinou označený \usb\ARM0. Druhý řádek je pro typ desky, respektive mikrořadiče, zde zvolíme náš typ což je AT91SAM7S256-EK a zmáčkneme tlačítko Connect.

89 Spustí se nám program, který je členěn do tří částí. Okno programu SAM-BA

90 Horní část nám ukazuje adresový prostor, který si můžeme vybrat v jakém zobrazení bude, mezi bit nebo ascii. Vidíme zde pozici startovací adresy a její velikost. Prostřední část slouží ke vložení programu do paměti Flash nebo SRAM, dle vybrané záložky. Řádek s názvem Send File Name slouží k popisu cesty našeho souboru se zdrojovým kódem, tuto cestu můžeme vybrat pomocí ikony vedle řádku. Pro odeslání zdrojového kódu do mikrořadiče slouží tlačítko, které je na stejné úrovni jako celý řádek s popisem Send File. Pokud bychom chtěli získat zdrojový kód z mikrořadiče, tak to lze pomocí tlačítka Receive File, které se nachází hned pod tlačítkem k odeslání.

91 Před příjmem tohoto kódu je třeba zadat cestu, kam si přejeme zdrojový kód uložit a do jakého souboru, k tomu nám slouží řádek vedle tlačítka k příjmu. Spodní část programu je informativní okno, kde se dozvíme vše, co právě probíhá nebo proběhlo.

92 AT91SAM7S512 Webový server (ukázka) Po úspěšné instalaci FreeRTOS které je také součástí CD. Spusťte program Eclipse. Při dotazu na adresář WORKSPACE zadejte adresář, kde máte umístěn FreeRTOS\Demo\ARM7_AT91SAM7X256_Eclipse.

93 Zadání cesty k instalaci FreeRTOS V nabídce Window vyberte položku Preferences. V následujícím okně vyberte položku General->Workspace- >Linked Resources. Tam je nutné správně nastavit cestu k adresáři s instalací FreeRTOS.

94 Instalace pluginu Dále je nutné nainstalovat doplněk pro možnost ladění skrze OpenOCD. V menu Help vyberte položku Software Updates. V zobrazeném okně vyberte záložku Available Software. V položce CDT vyberte podporu pro hardwarové ladění – GDB Hardware Debugging a plugin nainstalujte.

95 Refresh projektu Klikněte pravým tlačítkem myši na hlavní složku projektu a vyberte možnost refresh.

96 Zadání IP adresy Nyní vyberte soubor FreeRTOSConfig.h. V tomto souboru se nachází základní konfigurace celého systému. Najděte řádky, kde se nachází definice IP adresy a zadejte IP adresu, kterou chcete aby systém využíval.

97 Kompilace programu Stačí jen program zkompilovat

98 Výsledek práce Pomocí OpenOCD či SAM-BA bootloaderu nahrát binární soubor do mikrokontroléru. Resetujte mikrokontrolér a spusťte webový prohlížeč. Zadejte IP adresu vašeho systému a můžete se kochat nad výsledkem Vaší práce.

99 USB JTAG+ interface JTAG Adaptér slouží k propojení vývojového prostředí (IDE) k zařízení, na kterém se vyvíjí daná aplikace. Může se jednat jak o mikrokontroléry tak i o obvody FPGA. JTAG se dá použít pro ladění aplikací, programování a testování. JTAG Adaptér je kompatibilní s OpenOCd a Eclipse. Parametry :  Napájení adaptéru: z USB  Napájení z periferie: 1,65V - 5V  Propojení s PC: USB 1.1 (2.0)  Propojení periférie: 20 pinový JTAG konektor  Rychlost JTAG adaptéru: max. 6MHz  Rozměry: 22x59x84 mm

100 Popis JTAG adaptér je postaven na obvodu firmy Future Technology Devices International Ltd. FT2232. Díky tomuto obvodu zaručuje JTAG adaptér značné možnosti využití díky volně dostupným projektům na ladění a programování mikrokontrolérů na bázi jader ARM či AVR. Vlivem použití napěťového translátoru lze připojit k adaptéru libovolné zařízení pracující s napětím od 1,65V do 5V. Adaptér nepotřebuje žádný externí napájecí port. Řídící část je napájena z konektoru USB a výstupní část je napájena z klientské aplikace.

101 Nastavení OpenOCD  Spuštění openocd: openocd-ftd2xx.exe -f konfiguracni_soubor.cfg  Konfigurační soubor,sekce interface – nastavení pro USB ↔ JTAG+: interface ft2232 ft2232_device_desc "USB JTAG+ A" ft2232_layout "olimex-jtag" ft2232_vid_pid 0x0403 0x1060 jtag_speed 0 jtag_nsrst_delay 200 jtag_ntrst_delay 200

102  Ostatní parametry nastavte dle použitého mikrokontroléru a módu  Veškeré informace lze nalézt na


Stáhnout ppt "Procesory Cortex. Úvod do architektury Rodina procesorů s architekturou ARM Cortex umožňuje řešit nejrůznější zařízení včetně těch, která jsou určena."

Podobné prezentace


Reklamy Google