Eclipse + WinAVR + AVRStudio Debuger
Jako, że postanowiłem spróbować programowania w znanym mi języku, ale na całkiem innej platformie - procesorach AVR, postaram się opisać niektóre fragmenty moich doświadczeń. Dziś jedno z pierwszych - konfiguracja tytułowego zestawu. Używanie takiej konfiguracji upraszcza pracę, pozwalając przerzucić odpowiedzialność za plik makefile na środowisko programistyczne, co jest z reguły wygodniejsze i efektywniejsze niż ręczna edycja. Poza tym korzystamy z wygodnego edytora, ze znanymi już funkcjami, skrótami klawiszowymi etc.
Instalacja WinAVR
Pierwszą częścią zestawu, niezbędną w pracy będzie kompilator WinAVR, dostępny pod adresem http://winavr.sourceforge.net/. Nie będę się rozpisywał na jego temat, gdyż przekracza to zakres tego wpisu, w dodatku jest bardzo szeroko opisane w internecie. Sama strona pobierania WinAVR na SourceForge.net znajduje się tutaj.
W trakcie instalacji najlepiej nie zmieniać domyślnej ścieżki, i pozwolić na dopisanie jej do zmiennej systemowej PATH, zwłaszcza jeżeli nie używamy innych kompilatorów korzystających z make (jeśli używamy, warto skorzystać np. ze skryptu wsadowego do odpalania środowisk tak, aby zmienną PATH modyfikować dynamicznie, i zawsze odpalać właściwy make, gdyż często różne wersje dołączane do aplikacji nie są ze sobą kompatybilne). Jeśli zamierzamy używać Eclipse, warto odznaczyć również instalacje Programmers Notepada.
Po instalacji warto uruchomić ponownie komputer tak, aby dopiski do zmiennej PATH zaczęły działać.
Instalacja i konfiguracja Eclipse
Podstawowym środowiskiem edycyjnym będzie Eclipse, wraz z narzędziami do programowania w języku C/C++ rozprowadzany jako Eclipse CDT. Jego instalacja jest prosta, opisałem ją zresztą jakiś czas temu tutaj.
Po zainstalowaniu Eclipse, będziemy potrzebowali jeszcze dodatkowej wtyczki, która ułatwia tworzenie projektów, zarządzanie nimi, pisanie kodu jak i jego kompilacje.
Wtyczka ta jest dostępna pod adresem http://avr-eclipse.sourceforge.net, konkretnie na stronie pobierania. Najprostsza droga instalacji to skorzystanie z menedżera pakietów dostępnego w Eclipse, ją tez krótko opiszę.
- Uruchamiamy Eclipse, ewentualnie tworzymy już nowy Workspace na projekty AVR.
- Wybieramy z menu Help->Software Updates.
- W zakładce Available Software wybieramy Add Site...
- Wpisujemy/wklejamy adres znaleziony na stronie pobierania, w moim wypadku to http://avr-eclipse.sourceforge.net/updatesite/.
- Na liście, która prawdopodobnie automatycznie się rozwinie, zaznaczamy oba pola, czyli w praktyce całą stronę wklejoną wcześniej.
- Klikamy Install, i po przejściu przez prostą procedurę instalacji w stylu Next, Accept, Next i zamknięciu okienka Software Updates nastąpi instalacja zakończona propozycją ponownego uruchomienia środowiska Eclipse.
Po zakończeniu powyższych czynności dysponujemy już zarówno kompilatorem, jak i środowiskiem edycyjnym.
Instalacja AVRStudio
Pomimo wielu prób stworzenia symulatora z możliwością debugowania programów napisanych na mikrokontrolery, wciąż najlepszym rozwiązaniem (ze znanych mi w tej chwili) pozostaje oryginalny debugger zintegrowany z AVRStudio, pozwalający na symulację i debugowanie programów na uC AVR.
Pobierania AVR Studio należy rozpocząć tutaj: http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2725. Niestety, sam doświadczyłem niekompatybilności najnowszej wersji (4.15 przy poprzedniej instalacji), z moim system Windows XP sp3 PL, dlatego w razie problemów należy spróbować użyć innej wersji (4.14 zadziałała wtedy, 4.16 też już działa).
Samo pobieranie wymaga wyjątkowo denerwującej rejestracji- Atmel nie tworzy nam konta, tylko pyta o te same dane przy każdym pobieraniu. Dlatego nie warto skrupulatnie wypełniać rubryczek, zwłaszcza, że zawierają szczegółowe dane o naszej osobie.
Instalacja przebiega bezproblemowo, AVR Studio gotowy do pracy.
Pierwszy projekt w Eclipse
Utworzę teraz nowy projekt, oraz podpowiem jak go skonfigurować, aby możliwa była współpraca z ww debugerem. W tym celu uruchamiamy Eclipse, i wykonujemy nastepujące kroki:
- Z menu File->New wybieramy "C Project".
- Uzupełniamy jego nazwę, i w Project Type wybieramy "AVR Cross Target Application".
- Przechodzimy dalej (Automatycznie zaznaczył nam się jedyny dostępny Toolchain).
- Na następnej stronie pozostawiamy zaznaczone obie konfiguracje, wchodzimy w Advanced Settings.
- W zakładce AVR ustawiamy typ docelowego procesora, jego częstotliwość oraz ewentualnie konfigurujemy programator (opiszę to przy następnej okazji).
- Wchodzimy w zakładkę "C/C++ build", w część Settings.
- Widzimy teraz listę ustawień kompilatora, linkera etc, w dodatku możemy modyfikować ją dla obu konfiguracji kompilatora, wybierając Debug/Release u góry okna.
- Aby debugować kod w AVR Studio potrzebujemy posiadać niezbędne informację w pliku elf, w tym celu w wyżej wymienionych ustawieniach, w sekcji Debugging, zarówno dla AVR Assembler jak i AVR Comiler ustawiamy Debug info format na dwarf-2.
- Akceptujemy wszystkie ustawienia klikając OK i przechodzimy do następnego etapu.
- W następnym oknie ponownie wybieramy docelowy MCU oraz wpisujemy jego częstotliwość.
Utworzony projekt jest pusty, dlatego musimy jeszcze dodać przynajmniej jeden plik źródłowy, klikając na File, New, C Source File i wypełniając go treścią. Ja wykorzystałem listing pochodzący z kursu programowania mikroprocesorów w C z czasopisma "Elektronika dla wszystkich":
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRD=0x7c;
for(;;)
{
PORTD=0x7c;
_delay_loop_2(0xffff)
PORTD=0;
_delay_loop_2(0xffff);
}
return 0;
}
Po zapisaniu pliku pozostaje zbudowanie pliku, za pomocą menu Project->Build.
W katalogu Debug, wewnątrz naszego projektu powstanie m.in. plik nazwaprojeku.elf, który można symulować wraz z podglądem źródeł w AVR Studio.
Luty 24th, 2010 - 19:11
super, dzięki
Kwiecień 1st, 2010 - 18:42
Dzięki za opis…
Pozdrawiam
Październik 26th, 2010 - 16:21
Nie trzeba uruchamiać ponownie komputera żeby działały zmiany w zmiennej PATH.
Październik 26th, 2010 - 16:47
@rst
Zależy od systemu operacyjnego – na w Win Vista/7 na pewno nie trzeba, natomiast w XP jedyny powtarzalny sposób aby te zmienne były widoczne to ponowne uruchomienie. Oczywiście najprościej po instalacji sprawdzić w cmd.exe obecność tych zmiennych, ale chcialem zachować prostotę i przewidywalność opisu.
Listopad 26th, 2010 - 17:49
Witam. Gdzie mogę znaleźć utworzony plik .hex, w katalogu projektu nie ma.
Listopad 26th, 2010 - 20:09
W zależności od zbudowanej konfiguracji – albo wewnątrz podkatalogu Debug albo w Release.
Listopad 27th, 2010 - 16:28
Witam. W dalszym ciągu nie moge znaleźć .hex’a. Może szukam nie tam gdzie trzeba. Proszę o pomoc.
http://img843.imageshack.us/i/14075472.png/
http://img834.imageshack.us/i/16101359.png/
Listopad 27th, 2010 - 17:33
Twój plik z ćwiczeniem ma złe rozszerzenia (a właściwie jego brak). Przy okazji sprawdziłem, że faktyczny plik HEX, po POPRAWNEJ kompilacji tworzy się w katalogu Release (czyli musisz zbudować tą konfigurację bez błedów – czytając komunikaty w konsoli).
Niezależnie od tego powinieneś zacząć od kursu w stylu:
http://kursc.dioda.com.pl/
Nie musisz go dokładnie „przerabiać”, ale na pewno warto się zapoznać.
Dopóki poznasz podstaw programowania nie będziesz rozróżniał problemów z środowiskiem (Eclipse), od problemów z narzędziami (kompilator) czy językiem, co tylko utrudni naukę.
Grudzień 13th, 2010 - 22:32
„jeśli używamy, warto skorzystać np. ze skryptu wsadowego do odpalania środowisk tak, aby zmienną PATH modyfikować dynamicznie, i zawsze odpalać właściwy make, gdyż często różne wersje dołączane do aplikacji nie są ze sobą kompatybilne”
Mógł bym prosić o jakiś szerszy opis?
Styczeń 23rd, 2011 - 21:48
Na przyklad Qt Eclipse integration uruchamia Eclipsa w nastepujacy sposob (zawartosc pliku *.bat):
@echo off
rem
rem This file is generated by the installer
rem
echo Setting up environment…
echo — Using MinGW in: C:\MinGW\bin
set PATH=C:\MinGW\bin
set PATH=%PATH%;%SystemRoot%\System32
echo Starting eclipse…
call „D:\eclipse\eclipse.exe” -clean
Marzec 7th, 2011 - 01:54
Dziękuję za doskonałą wskazówkę. Przeniosłem jeden ze swoich programików prosto z pod AVR Studio 4.18 do Eclipse Galileo 3.5.2. Ku mojemu zdumieniu pierwsza kompilacja zakończona powodzeniem. Plik wynikowy *.HEX na dzień dobry o 4 kB mniejszy, a o 2 kB mniejszy od kompilacji w AVR Studio 5. Co ciekawe to we wszytkich programach korzystam z tego samego kompilatora AVR-GCC. Być może różnica tkwi w przełącznikach kompilatora tych środowisk. Jeszcze jedna ciekawostka – gdy programik był napisany w jednym pliku to miał rozmiar ok. 10 kB, a gdy rozbiłem go na kilka plików źródłowych i nagłówkowych to po kompilacji zystałem 2 kB. Taki szczegół, a duży zysk. Pozdrawiam.
Marzec 7th, 2011 - 02:04
Na chwilę obecną zarówno AVR Studio jak i Eclipse mogą korzystać z avr-gcc, więc różnice musiały wynikać z parametrów kompilacji.
Jeżeli chodzi o minimalizacje pliku hex szczególnie istotna jest optymalizacja ze względu na rozmiar (parametr -Os), oraz możliwość podziału plików *.o na osobne sekcje dla każdej funkcji i zmiennej globalne/statycznej i usunięcia nieużywanych obszarów (opisane tutaj).