Krzysztof Wesołowski Programowanie, elektronika, automatyka – doświadczenia i projekty

22lut/09

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

  1. Uruchamiamy Eclipse, ewentualnie tworzymy już nowy Workspace na projekty AVR.
  2. Wybieramy z menu Help->Software Updates.
  3. W zakładce Available Software wybieramy Add Site...
  4. Wpisujemy/wklejamy adres znaleziony na stronie pobierania, w moim wypadku to http://avr-eclipse.sourceforge.net/updatesite/.
  5. Na liście, która prawdopodobnie automatycznie się rozwinie, zaznaczamy oba pola, czyli w praktyce całą stronę wklejoną wcześniej.
  6. 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:

  1. Z menu File->New wybieramy "C Project".
  2. Uzupełniamy jego nazwę, i w Project Type wybieramy "AVR Cross Target Application".
  3. Przechodzimy dalej (Automatycznie zaznaczył nam się jedyny dostępny Toolchain).
  4. Na następnej stronie pozostawiamy zaznaczone obie konfiguracje, wchodzimy w Advanced Settings.
  5. W zakładce AVR ustawiamy typ docelowego procesora, jego częstotliwość oraz ewentualnie konfigurujemy programator (opiszę to przy następnej okazji).
  6. Wchodzimy w zakładkę "C/C++ build", w część Settings.
  7. 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.
  8. 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.
  9. Akceptujemy wszystkie ustawienia klikając OK i przechodzimy do następnego etapu.
  10. 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.

Tagged as: , , , Komentarze
Komentarze (12) Trackbacks (0)
  1. Dzięki za opis…
    Pozdrawiam

  2. Nie trzeba uruchamiać ponownie komputera żeby działały zmiany w zmiennej PATH.

  3. @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.

  4. Witam. Gdzie mogę znaleźć utworzony plik .hex, w katalogu projektu nie ma.

  5. W zależności od zbudowanej konfiguracji – albo wewnątrz podkatalogu Debug albo w Release.

  6. 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/

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

  8. „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?

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

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

  11. 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).


Trackbacks are disabled.