V tomto článku připravíme nový projekt v prostředí Keil uVision a vyzkoušíme si jednoduchý program přeložit. Na začátek krátce popíši jak nainstalovat ovladače k programátoru ST-LINK/V2.
Ovladače pro tento programátor lze stáhnout ze stránek společnosti ST ve formě instalátoru. Doporučuji nainstalovat ovladače ještě před prvním připojením Discovery kitu (Při instalaci prostředí Keil vision MDK-ARM je nabídnuta také instalace ovladače pro programátor ST-LINK, ale ze stránek společnosti ST máte vždy aktuálnější verzi). Operační systém si pak po připojení kitu ovladač v instalační složce najde a použije.
Problém nastává ve chvíli, kdy Windows přijde na to, že ovladač není digitálně podepsán. U Windows Vista/7 je možno kliknout na možnost „přesto nainstalovat“, ale Windows 8 v základním nastavení striktně zakáže instalaci takového ovladače. Je proto nutné ještě před připojením kitu povolit digitálně nepodepsané ovladače.
To lze poměrně jednoduše. Vysuneme „Charm Bar“ (Win+C), zvolíme „Nastavení“ a dále „Změnit nastavení počítače“. V levém sloupečku vybereme „Obecné“ a na úplném konci klikneme na „Restartovat teď“ u položky Spuštění s upřesněným nastavením. Dále zvolíte možnost „Odstranit potíže“ -> „Nastavení spouštění“ -> „Restartovat“ -> „Nastavení spouštění“ -> „Zakázat vynucování podpisů ovladačů“. Nyní již můžete připojit kit.
Pro ověření funkčnosti, lze také stáhnout (ze stránek společnosti ST) utilitu STM32 ST-LINK utility. S její pomocí můžete do MCU nahrávat a mazat program.
Obr.1: Okno programu STM32 ST-LINK Utility
Pamatuji na dobu, když jsem začínal s MCU PIC16Fxxx. Po přečtení dokumentace jsem snadno během chvilky použil jakoukoliv periferii. Ale to šlo díky tomu že MCU PIC mají vlastní jádro a výrobce pro ně vyvíjí i vlastní vývojové prostředí se vším všudy. U MCU s jádrem ARM je situace složitější. Existuje hned několik výrobců MCU, kteří používají jádro ARM a navíc samotný ARM je již poměrně složitý. Programátoři na PC z větší míry nemusí přemýšlet nad hardwarem. Bohužel u MCU je znalost hardwaru skoro nutností a programy jsou psané pro konkrétní MCU a jsou těžko přenositelné, zvláště mezi MCU různých výrobců.
Tuto situaci se snaží z části řešit sada knihoven CMSIS (Cortex Microcontroller Software Interface Standard) určená pro MCU s jádrem ARM Cortex. Ta přináší sjednocení názvů registrů a periferií, přístup k nim a další. Zpočátku se může zdát, že nám to příliš nepomůže, ale pokud v budoucnu usedneme k jinému MCU s jádrem ARM, velice rychle si jej osvojíme a to nám ulehčí další vývoj.
Následující dva odstavce můžete přeskočit, jen v nich informuji o dalších možnostech, které ale nebudou v tutoriálu ukázány.
Společnost ST nabízí ke svým MCU i sadu knihoven ulehčující jejich konfiguraci a i samotné psaní kódu. Knihovny obsahují spoustu funkcí, které provedou veškeré nastavení periferie a i obstarají komunikaci a výměnu dat. Tedy jen voláme funkce s určitými parametry. Tuto možnost sice máme, ale jen jí tu zmiňuji, abyste věděli, že to také existuje. Dále v tutoriálu je používat nebudeme.
RTOS je v podstatě malý operační systém, který nabízí nějaké služby a využívá prostředků MCU. Například přináší možnost vytváření vláken. Je možné, že by mohl vzniknout samostatný seriál o tomto systému.
Pusťme se do založení samotného projektu. Nejprve bude třeba stáhnout knihovny CMSIS. Ty stáhnete ze stránek společnosti ST.
Archiv obsahuje i ukázkové projekty a další pomocné knihovny, které se časem můžou hodit.
Někde v počítači si vytvoříme složku, do které uložíme celý projekt. Nyní již můžeme zapnout Keil uVision.
Obr.2: Prázdné okno programu Keil uVision 4 (MDK-ARM)
V horní liště zvolíme Projekt -> New uVision Projekt. Následně budete dotázání na název projektu a kam projekt uložit. Zvolte umístění do předem připravené složky a klikněte na Uložit.
Obr.3: Okno výběru procesoru
Dále je třeba vybrat jaký „šváb“ používáme. Rozbalíme položku STMicroelectronic a vybereme procesor SMT32F407VG a potvrdíme OK. Keil se nás zeptá, zda chceme přidat do projektu soubor startup_stm32f4xx.s a zvolíme Ano.
Tím se nám vytvořil projekt a nyní můžeme přidat knihovny a vše nakonfigurovat.
Prvně si přejmenujeme skupinu Source Group 1 na startup (nachází se vlevo, kde je strom projektu). Dále si vytvoříme skupiny source a cmsis a to tak, že pravým myšítkem klikneme na Target 1 ve stromě projektu a zvolíme Add group.... Až budete běžně sami programovat, možná si najdete lepší systém třídění.
Ve složce s projektem vytvoříme stejnojmenné složky (source, cmsis) a přidáme složku output. Nyní rozbalíme stažený archiv a do složky cmsis zkopírujeme následující soubory:
Adresa: .\ Libraries\CMSIS\ST\STM32F4xx\Include
Adresa: .\ Libraries\CMSIS\ST\STM32F4xx\Source\Templates
Vše je vidět na obrázku Obr.4.
Obr.4: Strom projektu (vpravo), okno se složkama (vlevo)
Nyní celý projekt nakonfigurujeme. Zvolíme nabídku Flash -> Configure Flash Tools…
Obr.5: Nastavení projektu (output)
Na záložce Output zvolíme výstupní složku, to je ta, kterou jsme vytvořili s názvem output. Také zaškrtneme Create HEX file, aby se nám vytvářel soubor HEX. Ten bude obsahovat samotný strojový kód pro náš MCU, který do něj nahrajeme.
Obr.6: Nastavení projektu (C/C++)
V další záložce C/C++ napíšeme STM32F40XX do řádku Define.
Keil uVision umožňuje přímo programovat MCU bez použití dalších nástrojů a lze i debugovat přímo na reálném HW. Proto si nakonfigurujeme i tyto užitečné funkce.
Obr.7: Nastavení projektu (Utilities)
Na záložce Utilities vybereme Use Target Driver for Flash Programming. Z vysouvací nabídky vybereme ST-Link Debugger a klikneme na Settings.
Obr.8: Nastavení projektu (nastavení flashovaní)
Na záložce Flash Download zaškrtneme položky Program, Verify a Reset and Run. Dále je třeba určit jak velká je flash paměť našeho MCU. Klikneme dole na Add a z nabídky vybereme STM32F4xx Flash s velikostí 1M a dále Add.
Obr.9: Nastavení projektu (nastavení flashování)
Poté zvolíme záložku Debug a zde pouze změníme Port na SW. Potvrdíme OK.
Obr.10: Nastavení projektu (Debug)
Poslední nastavení provedeme na záložce Debug. Zde zvolíme Use na pravé straně a z nabídky vybereme opět ST-Link Debugger. Okno s nastavením zavřeme potvrzením OK.
Když máme celý projekt nakonfigurovaný, můžeme začít psát zdrojové kódy. Vytvoříme první zdrojový soubor. Prozatím v něm nebude nic smysluplného. Nahoře vybereme File -> New. Do něj napíšeme následující kód:
#include<stm32f4xx.h> int main(void) { while(1); }
Soubor nyní uložíme do složky source a pojmenujeme jej main.c. Jakmile soubor uložíme Keil automaticky pozná, že se jedná o zdrojový soubor a barevně nám upraví zdrojový kód. Každý soubor se zdrojovým kódem by měl končit prázdným řádkem, jinak kompilátor bude vypisovat warning. Tedy již zmíněný zdrojový kód bude mít 7 řádků, a poslední bude prázdný.
Obr.11: Nástrojová lišta
Celý projekt nyní přeložíme. K tomu použijeme třetí ikonu Rebuild z nástrojové lišty (Druhá ikona Build, zkompiluje pouze upravené soubory, lze ji také použít). Jestli je překlad úspěšný jsme informování v okně Build Output. Nejlepší situace je pokud nám ohlásí 0 Chyb a 0 Upozornění, tak jako ukázáno na obrázku Obr.12.
Obr.12: Okno s výsledkem překladu
Ikonou Download nahrajeme strojový kód do MCU. V případě problémů lze vždy použít utilitu od společnosti ST, kde stačí vybrat soubor HEX a utilita program nahraje. Někdy Keil stávkuje a tato utilita je jistotou úspěšného nahrání.
Dnes jsme si tedy vytvořili a nakonfigurovali čistý projekt. Příště si ukážeme periferii GPIO, tedy vstupně výstupní porty a konečně budeme blikat diodami :D.
13.10.2013 - Společnost ST již vydala ovladače i pro Windows 8, ovšem jejich funkčnost mě zrovna neuspokuje.
Projekt ke stažení ZDE.
Komentáře
And i am glad studying your article. However want to commentary on few general
things, The website taste is great, the articles is really great : D.
Good job, cheers
My web page - penyulingan berperingkat: https://ms.lamscience.com/types-distillation