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.

 

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.

STM32 ST-LINK Utility
Obr.1: Okno programu STM32 ST-LINK Utility
 

CMSIS

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ů.

CMSIS LogoTuto 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.
 

Knihovny STM32 a RTOS

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.
 

Nový projekt

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.

Keil uVision blank
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.

keil výběr cpu
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

  • stm32f4xx.h
  • system_stm32f4xx.h

Adresa: .\ Libraries\CMSIS\ST\STM32F4xx\Source\Templates

  • system_stm32f4xx.c

Vše je vidět na obrázku Obr.4.

keil strom projektu a okno
Obr.4: Strom projektu (vpravo), okno se složkama (vlevo)

Nyní celý projekt nakonfigurujeme. Zvolíme nabídku Flash -> Configure Flash Tools…

Keil nastavení projektu
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.

Keil nastavení projektu
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.

Keil nastavení projektu
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.

Keil nastavení projektu
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.

Keil nastavení projektu
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.

Keil nastavení projektu
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ý.

Keil nástrojová lišta
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.

Výstup překladu
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í.
 

Závěr

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.


Přidat komentář

Bezpečnostní kód
Obnovit