Jste zde

Demonstrační kit ARM

337_01.jpg

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

Realizace

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 Make/files 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--);
		}

Problémy

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 Make/files 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.

Závěr

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.

Literatura

Martin Sobotka, David Polanský UREL, FEKT, VUT Brno

PřílohaVelikost
Soubor blink.rar649.96 KB
Hodnocení článku: 

Komentáře

Dobry den,
zajimavy clanek - mohl by jste jeste pripsat zdroje a linky na ktere se odkazujete v textu ?
Diky ;)

UPS, omlouvam se, moje chyba. Mel jsem chybu v kodu, kterou editor prelozil spravne, ale redakcni system uz ne. Opraveno.

Mám nainstalovaný Eclipse verze 3.3.2. (Europa - je na CD od Kramary) a nedokážu vytvořit bin soubor, ani podle vašeho návodu. Díky, M. Pech.

Tak jsem zjistil, že tu mám účet, tak už nebudu anonymní.
Ještě jednou jsem zkoušel nastavení vytvoření bin souboru.
Eclipse vždy vytvoří soubor s příponou hex. Jeho obsah se však liší od toho, kdy nechám vytvořit hex soubor. Možná, že jen Eclipse nedá správnou příponu, to ještě vyzkoušené nemám.

Lze, prosím, uvedený mikrokontrolér (MK) použít jako free hw/sw náhradu Loxone miniserveru?

    Jak, prosím, uvedeným mikrokontrolérem (umístěným v rozvaděči rodinného domu) spínat/ovládat např. světla v místnostech? Tj.

    • buď na napojit na MK (ideálně bistabilní) relé umístěné rovněž v rozvaděči a vést (jednotlivý) silový kabel ke (každému) světlu. Jak napojit mnoho (asi) relátek k MK? Pro jiný typ zátěž bude nutné použít možná jinou součástku než relé. Pro jakou zátěž je vhodné použít jaký spínací obvod a jak ho napojit na MK?
    • Nebo vést slaboproudý drát do elektroinstalační krabičky ve zdi nad spínačem a umístit do ní relé. Jaké? Jak to mechanicky provést, aby se relé i s vodiči do krabičky vešlo a zapojení vyhovovalo všem relevantním normám a předpisům? Kterým? Většina relátek se vyrábí pro umístění na plošný spoj. Jaký kabel použít pro spojení MK s relém? Jaká bude max délka? Jaké napětí a jeho zdroj zvolit?
    • Nebo použít nějakou sběrnici, např. KNX, Modbus, CAN. Jakou? Jak propojit sběrnici s MK? Jak na sběrnici připojit světla?

    Jak, prosím, naopak informaci posbíranou z (mnoha) spínačů (teplotních a pohybových senzorů apod.) ať již jednotlivými dráty (slaboproudými) (Jakými? Jaká max. délka?) nebo sběrnicí (Jakou? 1-Wire?) předat MK?

      Víte, prosím, o nějaké diplomové práci na toto téma?