Úvod
AVR Studio má některé nepříjemné omezení tak jsem hledal nějakou alternativu.
Řešením může být univerzalní IDE s názvem Eclipse,
které můžete použít pro programování C, C++ aplikaci pro AVR, ARM nebo x86 (PC).
Je napsané v Jave proto je hezky multiplatformní a za jeho vývojem stojí velká modrá IBM.
Není to žádná rychlokvaška důkazem budíž to, že Eclipse používají firmy jako Xilinx či Altera či Atmel (pro postbubertálního 32bitového AVR brášku).
Klady a zápory
- Simulátor sice existuje, ale je zastaralý. Proto je víceméně nutné, pracovat se skutečným HW.
- Při ladění nemáte tak pěkně zobrazené registry jako v AVR Studiu (jednotlivé bity a jejich význam).
- Je to dost flexibilní IDE, které má hodně voleb takže ze začátku to nahání strach.
- Import a export projektu mi přijde krkolomný.
+ call stack tree - ukazuje strom volání funkcí. Dáte si breakpoint do nejake funkce a pak podle stromu zjistite kdo ji volal.
+ Prohlížení proměnných - u lokálních proměnných udělá automaticky Add Watch což se u AVR Studia musí dělat ručně.
+ Automatické doplňování kódu podle šablony - Napíšete for a nabidne vam prazdny cyklus for( ; ; ){ }
+ Indexování zdrojáku - nemusíte mít v hlavě jaký je název globální proměnné z jiného modulu C. Indexer si váš kód průběžně parsuje.
Zobrazí vám ve zvláštním okně u editovaného souboru (prototypy, makra, u struktur vám nabídne jednotlivé položky). Napíšete začátek názvu funkce zmáčknete Ctrl + Space a buď automaticky Eclipse doplní zbytek nebo nabídne alternativy v rozbalovacím menu.
Návod je psán polopatě a některé kroky jsem přeskočil. Popisuju jenom důležité kroky a zákeřnosti.
Je rozdělen na dvě části.
- První pojednává o tom jak Eclipse naučit produkovat HEX soubory a jak MCU naprogramovat. Pokud vám to stačí (nepíšete programy co mají chyby a všechno vám jede na poprvé :-)) tak můžete skončit první částí.
- Druhá pojednává o tom jak Eclipse naučit Debugovat.
Je primárně psán pro rozhraní JTAG, ale změnou pár parametrů se dá použít na debugWire.
Pro obě platformy Win & Lin se liší minimálně, když tomu tak bude poznáte podle klíčových slov Windows a Linux.
Možná narazíte na problémy. Já je vyřešil pomocí Google a www.avrfreaks.net.
Osobně jsem přesvedčen o tom, že až AVR PlugIn vyroste tenhle návod už nebude potřeba :-).
Poděkování. Děkuju Pepíkovi (ctěnému Lordu Sharkusovi) za zapůjčení AVR Dragona.
Ingredience
Pekáč (počítač) vymastíme Javou.
Do pekáče dáme plátek Eclipsu. Pořiďte si "Eclipse IDE for C/C++ Developers".
Okořeníme Eclipse AVR Plug-Inem.
A jako přílohu připojené železo (AVR), přes JTAG k PC třeba tenhle
já měl pujčený tenhle.
Poznamka: Pokud potřebujete jenom programovat tak si vyberte z nepřeberného množství programátorů co nabízí avrdude.
Windows:
Pokud používate Widličku použijeme balík nástrojů (gcc, gdb ...) WinAVR
Linux:
Pokud chováte tučnáky tak si nainstalujte balík nástrojů (toolchain).
Ten by měl obsahovat: GCC, Binutils, Avr-libc, GDB, Avarice.
Linux - Fedora 9
Nastavit správný repozitář a naklepat do terminálu
yum install avr-gdb
yum install avrdude
yum install avr-libc
yum install avr-gcc
yum install avr-binutils
yum install avarice
První část - Programování (JTAG, debugWire, ISP)
Spusťe Eclipse "File->New->C Project"

V průvodci pro výběr programátoru jsem nastavil tohle pro AVR Dragona (JTAG). Tady se to bude lišit podle vašeho programátoru.

Jako výstup požadujeme HEX soubor. To nastavíme v okně Project Explorer pravý klik na váš projekt, pak Properties->C/C++ Build->Settings.

Napište svůj testovací program, ideálně něco se svítící LEDkou a zkompilujte.

Zkuste svůj testovací program nahrat do MCU. Nahravání se provádí skrz SW avrdude.
!! Pozor abyste měly v Project Exploreru označený správný projekt !!

Windows:
Tak až doteď šlo všechno hladce. Pokud máte nainstalované AVR Studio tak narazíte na problém.

Problém je v konfliktu ovladačů libusb a Jungo, rešení je zde.
A magický lektvar na problém je zde.
Po instalaci toho balíčku by mělo proběhnout programovaní v pohodě az na EEPROM pamet. Vypadá to na nectnost AVR Dragona. Po každé operaci se zřejmě provádí nová Enumerace.
Protože Flash update proběhne v pořádku a pokud zadám programování z příkazové řádky tak se EEPROM naprogramuje bez problémů.
Linux:
S programováním jsem neměl žádné potíže a běželo to na první klik. Tady mě Linux mile překvapil :-).
Druhá část - Debugger (JTAG, debugWire)
Ladění probíhá skrz Open Source Debugger GDB.
My se budeme snažit vytvořit řetězec Eclipse <-> GDB <-> Avarice <-> AVR(JTAG).
Popis jednotlivých prvků v řetezci:
- GDB vezme váš program (*.ELF soubor) a vyčítá z něho informace pro ladění. Komunikuje pomocí text. příkazů a myslím, že přímá práce s ním je to spravné IT sado-maso.
- Eclipse a jiné grafické nádstavby (frontend) vám ulehčí život. Překládají vaše kliky na textové příkazy pro GDB.
Eclipse CDT verze má podporu pro GDB v sobě o tu se nemusíme starat.
- GDB nedokáže přímo pracovat s AVR, ale dokáže komunikovat pomocí TCP protokolu (GDB je klient a avarice je server) a avarice si tyhle příkazy překládá na JTAG intrukce.
Zpátky ke konfiguraci Eclipse. V menu vyberte "Run->Open Debug Dialog..."
"C/C++ Local Application->New" u zalozky Debugger nastavte


Ted musíme ještě nastavit avarice aby mohl GDB přistupovat k MCU.
"Run->External Tools->Open External Tools Dialog" a nastavit:
Windows:

Linux:

