Demonstrační kit ARM
Martin Sobotka, David Polanský UREL, FEKT, VUT Brno
xsobot11
stud.feec.vutbr.cz
xpolan04
stud.feec.vutbr.cz
projekt zveřejněn také na www.pandatron.cz a www.hw.cz
Obsah:
- Úvod
- Realizace
- Závěr
- Problémy
- Literatura
Tato práce si klade za cíl seznámit čtenáře s možnostmi vývoje aplikací pro 32bitové mikrokontroléry
řady ARM s využitím
volně dostupných prostředků a vytvoření jednoduchého programu pro ověření funkčnosti. Pro pokusy byl použit
mikrokontrolér AT91SAM7S256 v kitu od firmy Kramara [1].
V této části bude nejprve popsán použitý kit, následně programové vybavení s nutným nastavením a nakonec naprogramování
vytvořého jednoduchého programu.
Hardware
Jak již bylo psáno v úvodu, pro pokusy byl vybrán kit od firmy Kramara s mikrokontrolérem AT91SAM7S256
(dokumentace viz [2]). Kit obsahuje veškeré součástky nutné pro běh mikrokontroléru a pro
správnou funkci postačuje přivést napájecí napětí, které má být v rozsahu
3,0 až 3,6V. Kmitočet krystalu je 18,432MHz, kit má vyvedeno 32 I/O linek, navíc je vyvedeno rozhraní
USB na konektor USB-B a JTAG rozhraní na 20-ti pinový konektror MLW.
Mikrokontrolér AT91SAM7S256 obsahuje 64kB datové paměti RAM, 256kB programové paměti FLASH, jeden USB port,
2 UART rozhraní, SPI rozhraní, TWI, PWM, osmikanálový 10-ti bitový AD převodník.
Software
Pro psaní programu lze použít mnoho různých prostředků, ovšem zde se zaměříme na volně dostupné nástroje.
Jako vývojové prostředí bude použito Eclipse IDE s překladačem Yagarto,
pro programování program SAM-BA od Atmelu.
K používání Eclipse je nutné mít nainstalovány knihovny Sun JAVA Runtime Environment - JRE [3].
Dále nainstalujeme Yagarto (ke stažení [4]), při instalaci nejsou potřebné žádné
zvláštní kroky. Nyní můžeme nainstalovat vývojové prostředí Eclipse (ke stažení [6]), instalace taktéž
nečiní žádné potíže. Nakonec je třeba nainstalovat Zylin Embedded CDT plugin, jehož instalace se provede
již z prostředí Eclipse, podrobný návod v [7]. Pro správnou funkci je ještě nutné nakopírovat
GNU ARM Eclipse Plug-in (ke stažení [8]) do adresáře Eclipse/plugins. Nyní máme připravené vývojové prostředí
pro psaní programů.

Pro programování je nutné stáhnout a nainstalovat AT91 In-system Programmer [9].
První program
Po prvním spuštění vývojového prostředí Eclipse budeme dotázáni na pracovní adresář, který vybereme. Poté
již můžeme zvolit File->New->C Project, v bloku Tolchain vybereme WinARM, Yagarto, zadáme jméno projektu
a potvrdíme. Nyní bychom mohli vytvářet všechny zdrojové, hlavičkové a ostatní soubory, ovšem to je pro
začátek příliš složité a můžeme s výhodou použít již hotovou kostru či jednoduchý projekt, který rozšíříme
podle potřeby. V tomto případě překopírujeme veškeré soubory do adresáře našeho projektu a v prostředí
Eclipse zvolíme File->Refresh, tím se nám zobrazí nově vložené soubory. Vybereme
Project->Properties->C/C++ Build a odškrtneme položku Generate Makefiles automatically
(vysvětlení důvodu dále v textu, viz Problémy), dále do položky Build directory: vybereme pracovní adresář
(musí tam být Makefile).
V C/C++ Build->Settings->Binary Parsers necháme zaškrtnutý pouze GNU Elf Parser.
Nyní pomocí Project->Build Project přeložíme projekt a měli bychom získat výstupní soubor *.bin, ten již
lze pomocí programátoru nahrát do mikrokontroléru. Pro jednoduší spouštění programovacího programu lze
tento spouštět z prostředí Eclipse: Run->External Tools->External Tools Configurations, zde zvolíme New
a jako Location dáme umístění programovacího programu
(např: C:\Program Files\ATMEL Corporation\AT91-ISP v1.12\SAM-BA v2.8\SAM-BA.exe) a jako Working Directory
zvolíme adresář o úroveň výše (C:\Program Files\ATMEL Corporation\AT91-ISP v1.12\SAM-BA v2.8). Nyní můžeme
spustit program SAM-BA pomocí ikony zelené šipky s taškou.
Způsob programování
Mikrokontrolér je vybaven bootloaderem, takže jej lze naprogramovat "velmi pohodlně" přes rozhraní USB,
příliš pohodlná není aktivace bootloaderu.
Pro aktivaci bootloaderu odpojíme napájení, spojíme Jumper J2, připojíme napájení, počkáme 10-30s,
odpojíme napájení, rozpojíme jumper J2 a připojíme napájení. Nyní po připojení k PC by měl operační systém
detekovat nové zařízení Atmel AT91xxxxx Test Board a bude vyžadovat instalaci ovladače, který nalezneme v
adresáři s programátorem
SAM-BA. Po instalaci ovladače již nic nebrání spuštění programu SAM-BA, vybereme umístění \usb\ARM0 a desku
AT91SAM7S256-EK a připojíme se stiskem Connect. V záložce Flash vybereme v položce Send File Name jméno našeho
přeloženého programu *.bin a pošleme do mikrokontroléru tlačítkem Send File. Nyní je třeba mikrokontrolér
resetovat nebo napsat v příkazovém řádku programu SAM-BA příkaz go 0x100000.
Ukázka zdrojového souboru pro střídavou změnu výstupních pinů (blikání LED):
#include "AT91SAM7S256.h" // hlavickovy soubor s definicemi mikrokontroleru
void zpo(unsigned long time); // hlavicka funkce zpozdeni
int main (void) { // hlavni funkce
volatile AT91PS_PIO pPIO = AT91C_BASE_PIOA; // inicializace pro pristup k portum
pPIO->PIO_PER = 0x000000FF; // povoleni PIO Enable Register pro piny 0-7
pPIO->PIO_OER = 0x000000FF; // povoleni Output Enable Register pro piny 0-7
while(1) { // nekonecna smycka
pPIO->PIO_SODR = 0x000000F0; // nastaveni bitu 4-7 (Set Output Data Register)
zpo(3000); // volani zpozdeni
pPIO->PIO_CODR = 0x000000F0; // nulovani bitu 4-7 (Clear Output Data Register)
zpo(3000); // volani zpozdeni
}
return 0;
}
void zpo(unsigned long time) { // funkce zpozdeni
while(time--);
}
Automaticky generovaný makefile
Pokud jsem při překladu nechal generovat automaticky makefile, fungovalo vše dobře pro požadovaný výstupní soubor
*.hex. Když jsem ve vlastnostech projektu dal požadovaný výstupní soubor *.bin, nedošlo ke změně makefile a při
překladu mi překladač vytvořil opět jen *.hex. Z tohoto důvodu jsem musel ručně v souboru makefile přepsat požadovaný
výstupní soubor na *.bin a ve vlastnostech projektu odškrtnout položku Generate Makefiles automatically.
Nefunkční SAM-BA
Občas se mi nepodařilo poslat program do mikrokontroléru programem SAM-BA. Bylo zahájeno programování ale po chvíli
došlo k chybě. Při použití programu SAM-PROG v2.4, který je spolu s programem SAM-BA v instalačním balíčku od Atmelu
jsem nikdy problém neměl.
Problém s Win7
Při aktivaci bootloaderu a připojení pomocí USB k PC s operačním systémem Windows 7 dojde k automatické detekci
a instalaci ovladače, operační systém vyhodnotí zařízení jako GPS Camera Detect (COMx) a ani ruční vnucení
správného ovladače nevede
ke správné funkčnosti zařízení. Tento problém se mi nepodařilo vyřešit, ve WinXP na stejném PC vše funguje dobře.
V práci jsou shrnuty základní kroky nutné pro žačátek vývoje aplikací s využitím mikrokontrolérů s jádrem ARM,
konkrétně od firmy Atmel. Podrobnější informace a detailní nastavení nalezne čtenář v odkazech v části
literatura. V práci je rovněž popsán jednoduchý program, který má za úkol blikat LED diodou a je ke stažení
zde.
Při práci se rovněž objevili problémy, za nejvážnější považuji nefunkčnost ovladače programátoru pod
operačním systémem Windows 7 a tím nemožnost programování přes vestavěný bootloader. Tento problém se
bohužel nepovedlo vyřešit a pro programování byl využit operační systém Windows XP.
[1] Kramara s.r.o. - Vývoj a výroba elektroniky
http://www.kramara.com
[2] Dokumentace AT91SAM7S256-KIT
http://www.kramara.com/podklady/AT91SAM7S256-kit/doku_r1.pdf
[3] JRE download -
http://java.sun.com/javase/downloads/index.jsp
[4] Yagarto download -
http://www.yagarto.de/index.html#download
[5] Yagarto instalace -
http://www.yagarto.de/howto/yagarto1/index.html
[6] Eclipse download -
http://eclipse.org/downloads/packages/
[7] Eclipse nastavení -
http://www.yagarto.de/howto/yagarto2/index.html
[8] GNU ARM Eclipse Plug-in -
http://sourceforge.net/projects/gnuarmeclipse/
[9] AT91AT91 In-system Programmer (SAM-BA) -
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3883