Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 kwi 2024, o 06:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 29 mar 2012, o 11:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Jak zapewne wiecie istnieje sporo sposobów na debugowanie programu dla AVR.
Niemniej dzielą się one na 2 podstawowe grupy:

--> Programowe debugowanie przy użyciu symulatora
--> Sprzętowe debugowanie poprzez złącze JTAG

Zaś obie te grupy zaś możemy podzielić na 2 grupy:

---> Używanie debugera wbudowanego w Eclipse
---> Korzystając z narzędzi zewnętrznych

Wszystkie wymienione maja swoje wady i zalety. Jednak wszystkie są oparte o serwer GDB i debuger GNU.
Dla nas oznacza to, że debugowanie odbywa się w systemie klient/serwer - niezależnie od użycia symulatora czy JTAG-a.

Niektóre zewnętrzne aplikacje do debugowania (np. AVR Studio, Proteus, VMLab) są zintegrowane z serwerem , a więc użytkownik będzie tylko działał po stronie klienta z ukrytym serwerem działającym w tle programu.

# SERWERY DEBUGERA

Zasadniczo istnieją dwa główne serwery gdb dla AVR są to:

>>> AVaRICE

Działa jako serwer gdb dla połączeń przez interfejs JTAG, czyli to taki pomost miedzy gdb, a sprzętowym JTAG.
Aby skorzystać z debugowania w systemie (JTAG) musimy oczywiście posiadać sprzętowy debuger, który
podłączymy do naszego układu przez port JTAG.

AVaRiace obsługuje trzy rodzaje interfejsów JTAG, a są to:

AVR JTAGICE mkII --- Na ta chwile to najlepszy obsługiwany JTAG dla AVR , Jest stosunkowo drogi, ale
są dostępne klony po znośnych cenach. Dysponuje:

---> podłączenie do PC przez -- USB / RS232
---> obsługuje JTAG i dW
---> obsługuje wszystkie obecne procesory AVR oraz AVR32


AVR Dragon --- Dragon to taka okrojona wersja MkII , reszta będzie opisana na jego przykładzie
bowiem akurat takowy posiadam, ale konfiguracja na inny nie będzie stanowić problemu.

---> USB
---> JTAG, dW, ISP, HV, i tryby PP
---> obsługuje prawie wszystkie AVR (oficjalnie max 32K Flash -- ale z m128 nie miałem problemów:)

AVR JTAG (MkI) --- Pierwszy interfejs JTAG teraz wycofany , i nie warty zakupu z powodu braku suportu
w nowszych środowiskach.

---> RS232 --część klonów posiadała USB
---> tylko JTAG
---> Nie obsługuje nowszych procesorów
---> Można go zbudować samemu ze względu na prostą konstrukcje np. wg tej strony:
http://www.m2uu.com/elektronika:avrjtag niemniej strata czasu i szkoda zachodu.

**** dW = debugWIRE to firmowy interfejs Atmela podobny do JTAG, ale przy użyciu tylko 1 przewodu (linia reset) Używany zwłaszcza przy małych procesorach tzw Pin Count AVR.

# Simulavr / Simulavrxx

Jest to Open Source-owy symulator programowy do symulacji procesorów AVR. Trochę już staruszek bo jego rozwój zatrzymał się na wydaniu z lutego 2005 , ale może być wciąż stosowany gdyż pozwala symulować większość popularnych procesorów, Jednak symulacja nie jest kompletna, brakuje wielu funkcji dla portów I/O, a na tych co są polegać za bardzo nie można. Nadaje się jednak dla początkujących jako zabawka do nauki pracy z symulatorem:)

Simulavrxx - to przepisany na C++ symulator Simulavr i też nic z nim się nie działo przez ostatnie 2 lata Jednak na początku 2008 podjęto działania za sprawą CVS wiec może się będzie rozwijać.

-------------------------------------------------------------------------------------------------------
No trochę przy nudziłem co ??
Niestety konieczne jest poznanie sprzętu i oprogramowania potrzebnego do
symulacji i debugowania bez tego ani rusz :)
-------------------------------------------------------------------------------------------------------

# Debugowanie w ECLIPSE ---> teraz krzykniecie pewnie no wreszcie :)

Chociaż Eclipse dla AVR aktualnie (oficjalnie) nie obsługuje debugowania, to jednak wersja CDT posiada wszystko co jest wymagane i potrzebne do debugowania programów dla naszych Procków :)
ale wymaga to pewnej konfiguracji i jak zawsze w Eclipse jest więcej niż jeden sposób by to zrobić :)
Postaram się byśmy to zrobili jak najprościej:

----> Debugowanie AVR z Eclipse wymaga dwóch kroków :
>> inicjacji serwera gdb,
i
>> połączenia się z nim :)

JEDZIEMY -----------------------------------------------------------------------------------------------------------------------------

Poniższe kroki przeprowadzam na moim systemie przenośnym :)

-- Windows XP -- bo na moim warsztatowym IBMie nic innego nie działa:)
-- Eclipse 3.4 (ganymede) z CDT 5.0
-- WinAVR-20081124rc3 (zawiera AVaRiace oraz AVR-GDB)
-- Debuger AVR Dragon

Obrazek

-- a do testów użyłem AVR Butterfly (jest na sprzedaż) z ATmegą 169:)

Obrazek

Do testu również zostały użyte 2 programy:

>>> avrtest -- prosty program testowy z pusta nieskończona pętla main() dla M16 do testu z simulavr
>>> ButteeflyLCDTest -- równie banalny program do przetestowania debugera avariace dla M169

Obydwa zostały skompilowane bez modyfikacji konfiguracji kompilatora. Oznacza to że można użyć ustawień
domyślnych (standard debugging info (-GP)) dla poziomu debugowania i (stabs) dla formatu debug info.
Na razie mało jasne prawda ??
Spokojnie będzie jaśniej :)

Obrazek

Optymalizację ustawiłem dla testu na "No Optimizations (-O0)" bowiem wszystkie inne poziomy optymalizacji
mogą powodować wyjście z rzeczywistych instrukcji kodu maszynowego i niczym nie przypomina to przepływu danych z kodu źródłowego C, przez co debugowanie jest bez sensowne i nie praktyczne. Oczywiście można debugować zoptymalizowany kod , ale przejście dissasemblera w stosunku do kodu źródłowego C będzie bezużyteczne. Spokojnie pewnie myślicie teraz, że trzeba będzie zmienia konfiguracje optymalizacji za każdym razem :) Nic z tych rzeczy przecież mamy 2 konfigi RELASE i DEBUG, które sobie działają osobno i zależą od naszego wyboru :) To tez przewaga Eclipse nad innymi środowiskami IDE że możemy przechowywać wiele
różnych ustawień dla różnych rzeczy np programatorów :)

Oczywiście wasze ustawienia mogą się różnić gdyż ja mam Dragona a wy pewnie JTAGICE :)
Dlatego mogą wystąpić pewne różnice. Jednak mam nadzieje że instrukcja będzie na tyle dokładna że
częściowo obejmę te różnice.


# Uruchamiamy serwer gdb

Hmmm no tak jakby to prosto napisać w sumie założenie jest łatwe , ale wytłumaczyć trudno , bowiem
tak "krasousty" jak szanowny kolega MIrek nie jestem , ale się postaram :)

Najprostszym sposobem uruchomienia gdb jest startowanie go jako 'narzędzia zewnętrznego' w Eclipse,
a robimy to tak :

klikamy na mały trójkąt z teczuszką obok ikony zewnętrznych narzędzi i wybieramy opcje "External Tools Configurations"

Obrazek

W okienku które się otworzy klikamy prawym klawiszem myszy na:Obrazek
i wybieramy Obrazek
teraz możemy wprowadzić dane konfiguracyjne naszego serwera gdb:
Pewnie nie chcesz przekazywać do gdb obrazu flash w wierszu poleceń ?? w takim razie przejdź do zakładki Obrazek i odznacz opcjęObrazek

>>>> AVaRICE

Konfiguracja dla niego powinna wyglądać następująco :
Obrazek

gdzie :
Name = Nazwa konfiguracji ja sobie nazwałem Start Avarice
Location = tu podajemy ścieżkę do avarice
Working Directory = tu avarice nic zwykle nie zapisuje, ale sporadycznie może użyć do zrzutu pamięci
--- jak widać ustawiłem na workspace:), ale może to być dowolny folder
Arguments = Tu umieszczamy argumenty poleceń avarice
--- w tym przypadku użyłem -dragon dla JTAG (można oczywiście ustawić JTAGICE mkI jak i MkII
- Ignore-intr - ten argument zapobiega zatrzymaniu się avarice na każdym przerwaniu
- Jtag usb - dragon pracuje na usb więc dlatego :)
- :4242 - to port TCP dla naszego serwera gdb
Zauważcie że celowo nie określiłem funkcji " --erase i --program -- xxx file" w argumentach by umożliwić programowanie procesora poprzez interfejs JTAG, zamiast tego używam avrdude do programowania procesora docelowego :) Postąpiłem tak z dwóch powodów:
1. avarice błędnie programuje przez Dragona
2. nie chcę uzależniać jakiegokolwiek projektu od zewnętrznych narzędzi (miałbym jak w AS fuuu)

Po zapisaniu konfiguracji gdy klikniemy na RUN zostanie uruchomiony AVaRICE:)
Jeśli avarice wyjdzie z sesji debugowania w Eclipse to Debuger zostaje zatrzymany. Musimy wtedy ponownie uruchomić nową sesję. Zobacz w perspektywie DEBUG , a sam się przekonasz ze avarice jest dalej uruchomiony :) to tylko taka mała niedogodność:(

# SimulAVR

konfiguracja dla simulAVR u mnie wygląda tak :

Obrazek

tu już tylko opiszę ważniejsze rzeczy jak pole ARGUMENTS :

-Gdbserver = informujemy symulator że będzie pracowała w trybie gdbserver
-Port 4242 = oznacza ze simulavr nasłuchuje na porcie 4242 podobnie jak i avarice - czyli używamy sobie konfiguracji Debugera dla obu i dla symulatora i dla avrice
-device atmeg16 = tu ustalam że simulavr powinien zasymulować ATmege16. Jak chcesz zobaczyć (krótką) listę
obsługiwanych procesorów to w cmd wpisz simulavr -L :)

Tu jak widzicie też nie przekazałem paru funkcji jak na przykład przesłania obrazu flash do symulatora. I jak sie domyślacie z 2ch powodów:
1. Simulavr niestety akceptuje tylko "surowe obrazy binarne" już chyba opisywałem na forum jak utworzyć plik bin w eclipse.
2. i jak zwykle ze nie lubie sobie uzależniać czegokolwiek od jakiejś konfiguracji :)

W tym przypadku musielibyśmy użyć konfiguracji sprzętowego debugera opisanej wyżej by wgrać obraz flash na początku sesji debugera a to mało wygodne rozwiązanie.

Po zapisaniu ustawień kliknięcie na RUN uruchomi simulavr

Niestety simulavr będzie nadal działał nawet jak sesja DEBUG zostanie zakończona. Ale tu mozna jej uzywać do wielu sesji , a by zatrzymać simulavr musimy przejść do perspektywy DEBUG i kliknąc prawym klawiszem myszki na wejściu simulavr i wybarć ZAKOŃCZ.

--------------------------------------------------------------------------------------------------------------------------------------------
To by było na tyle jeśli chodzi o serwery GDB dla debugera , teraz zajmiemy się narzędziami wbudowanymi w Eclipse
----------------------------------------------------------------------------------------------------------------------------------------------

# Konfiguracja Debugera z Eclipse


tu sprawa jest już prosta mamy już uruchomiony prawie serwer gdb wiec możemy ustawić sobie debuger Eclipse który jest bardzo fajny:) jak zwykle istnieją 2 typy konfiguracji debugera użyteczne dla AVR.
C/C++ Local Application i oczywiście GDB Hardware Debugging :)

Silnik i rdzeń jest taki sam w obu przypadkach i dla obu stron, a różnice występują jedynie w interfejsie użytkownika i w pierwszych poleceniach serwera gdb służących do uruchamiania zdalnej sesji debugera.
Obie konfiguracje są praktycznie identyczne i wam znane z pracy z avarice i simulavr, wiec możecie już przetestować sami , która konfiguracja będzie dla was najlepsza.

Na początek otwieramy okienko Debug Configuration , wybieramy projekt do debugowania i klikamy na ikonke trójkąta obok Obrazek
i wybieramy DEBUG CONFIGURATIONS... okno które sie pojawi powinno wyglądać tak:

Obrazek

Jesli opcja GDB Hardware Debuging nie jest widoczna oznacza ze nie zainstalowane masz opcjonalne fjuczery.
Trzeba zainstalować aktualizacje oprogramowania z Menu HELP i dodać CDT service (dla Eclipse 3.4 jest tu:
http://download.eclipse.org/tools/cdt/releases/ganymede ), a następnie przeglądnąć dostępne aktualizacje i zainstalować opcjonalna funkcję Eclipse C/C++ GDB Hardware Debugging.

Teraz należy 2klikiem na każdej konfiguracji aby utworzyć nową. Gdy będziecie mieli wybrany projekt przed otwarciem okna konfiguracji będzie ono miało nazwę np. "Nazwa_projektu Debug".
Pierwsza zakładka (główna) jest taka sama w obu przypadkach:

Obrazek

jak widać musimy wskazać nasz plik .elf -- nie wymaga to chyba tłumaczenia:)
teraz przechodzimy do ustawień specyficznych :) ---> robią się schody nie :)

>>>>> C/C++ Local Application

Dla tego typu konfiguracji wszystkie stosowne ustawienia znajdziecie na karcie DEBUGGER:

Obrazek

-- Debugger
Ustawcie na gdbserver Debugger
-- GDB debugger
zmienić na "avr-gdb". Ustawiony na "gdb" nie działa, gdyż będzie domyślnie debugował na i386.
-- GDB Command file
usuń z stąd wskazanie na plik ". gdbinit". Jeśli jednak nadal trzeba wgrać obraz flash do docelowego procesora (np. z simulavr), musisz napisać mały skrypt gdb i wpisz tutaj jego nazwę . Zobacz poniżej .
-- GDB command set
wybierzcie "Standard" lub "Standard (Windows)". Nie używamy "Cygwin", ponieważ avr-gdb nie jest aplikacją cygwin. Różnice w różnych zestawach poleceń są minimalne, dotyczą głównie obsługi bibliotek współdzielonych, które są nieistotne dla programowania AVR.
-- Protocol
Pozostaw na "mi". To jest to samo co "MI2". "Mi1" jest starszym protokołem gdbservera,a że nie ma żadnych zalet w avr-gdb rozumie mi jako MI2.
-- Verbose console mode
Jeśli macie problemy możecie wybrać tę opcję, aby zobaczyć komunikację pomiędzy Eclipse i avr-gdb.

Teraz należy kliknąć na kartę Connection i skonfigurować parametry komunikacji pomiędzy avr-gdb i gdbserver:)
Obrazek

Nie będę się tu rozpisywał po prostu ustawcie jak na obrazku :)

Nasza konfiguracja jest zakończona. Kliknijcie na przycisku Debug i jeśli wszystko jest w porządku sesji debugowania powinien rozpocząć i aplikacja powinna zatrzymać się na początku naszej funkcji main ().

Dodatkowo dla dopełnienia informacji dopowiem w tym miejscu że :
gdb init przesyła obraz flash do simulavr. Zapiszcie go sobie gdzieś (np. w folderze projektu jako "gdbinit")
i wprowadźcie pełna ścieżkę dostępu do pliku w polu File GDB Commands na karcie Debugger w oknie konfiguracji. U mnie gdb działa mimo skryptu simulavr, ale może działać lepiej przy sprzętowym debugerze konfiguracje którego opiszę za chwilę.

Kod:
# make sure simuavr has code to run (it would complain Unknown opcode)
# change the filename as required, but with the name of the build configuration (here: Debug)
file Debug/avrtest.elf

#also don't forget to change the port number if you are using a different one.
target remote localhost:4242
load



# GDB Hardware Debugging

Dla debugowania sprzętowego w GDB musimy zmienić ustawienia w dwóch zakładkach :)

Zacznijmy od zakładki Debugger.
Tu większość opcji zostaje ustalona domyślnie przez przez Eclipse, a jedynymi opcjami, które musimy zmienić
zaznaczyłem na obrazku:
Obrazek

następnie przechodzimy na zakładkę STARTUP:

Obrazek

Jeśli wybraliście standardowy JTAG na poprzedniej stronie , te opcje można zignorować

Obrazek

Przesyłamy obraz flash na początku sesji debugowania. Plik obrazu może być. Elf lub. Hex, ale upewnijcie się, że wybraliście właściwą dla danego projektu. Uwaga: Ta funkcja nie działa u mnie na moim AVR Dragon, prawdopodobnie z powodu błędu w avarice. Zamiast z automatu muszę przesyłać obraz z avrdude przed rozpoczęciem sesji debugowania.

Pozostałe nie maja znaczenia:)

Obrazek

Set program counter at (hex)
jeśli nie jest ustawiony gdbserver zaczyna od 0x0000, która jest lokalizacją wektora reset . Więc chyba nie ma potrzeby ustawiania niczego tutaj.
Set breakpoints at:
Ustawiamy na "main" lub inną funkcję, na ​​której chcemy zatrzymać wstępne wykonanie i rozpocząć debugowanie.
Resume
Wybieramy tę opcję. Jeżeli nie wybrano avarice i nie została uruchomiona jego aplikacja to trzeba wpisać "continue" dla avr-gdb w widoku konsoli, aby zadziałał debuger. Dlatego lepiej tą opcje zaznaczyć.

Ufff konfiguracja zakończona.Zapisujemy ustawienia. Kliknijcie teraz przycisk, Debug i jeśli wszystko jest w porządku sesja debugowania powinna się rozpocząć i aplikacja powinna zatrzymać się na początku naszej funkcji main ().

# PRACA Z DEBUGEREM

No teraz chyba najważniejsze prawda , co z tego ze uruchomiliśmy sesję debugera jak nie wiemy jak z nią pracować :) , a więc jeśli wszystko przebiegło bez zakłóceń i nasza konfiguracja jest prawidłowa to nasza perspektywa DEBUG w Eclipse powinna wyglądać tak:

Obrazek

Zapewne widzicie ze to prawdziwa sesja debugowania dla AVRBytterfly na AVR Dragon przez interfejs JTAG, którego użycie wam zakomunikowałem wcześniej :) Ten obrazek pokazuje jak działa i wygląda w Eclipse funkcja debugera z pakietu CDT.

BTW, Segment pamięci pokazany na obrazku zaczyna się na adresie 0x800020. To jest początek zakresu rejestrów dla I/O dla AVR , dzięki czemu możemy zobaczyć zawartość wszystkich wejść i wyjść rejestrów .
Aby znaleźć określony rejestr musicie zdobyć jego adres w eclipse można je znaleźć w w AVR Device Explorer i dodać do niego nasze 0x800020 czyli adres początkowy:)


I to by było na tyle na razie w tym temacie , mam nadzieję ze te informacje się komuś przydadzą , miłej lektury
:) i debugowania programów :)


CIĄG dalszy przynudzania : TUTAJ topic958.html

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 mar 2012, o 13:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

O MATKO! (aż mi się wyrwało z gardła jak to zobaczyłem) .... jaki piękny tutorial ;) SunRiver jesteś mistrzem ;) .... i nie wykręcaj mi się tu jakimiś pomówieniami i plotkami ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 mar 2012, o 13:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

A tak jakoś można by rzec "z młodej piersi się wyrwało"
Mam nadzieję że się przyda komuś ta marna wypocina :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2012, o 20:16 
Offline
Nowy

Dołączył(a): 06 paź 2011
Posty: 24
Pomógł: 0

Szacun Kolego SunRiver. Czasami wydaje mi się, że się chyba urodziłeś z prockiem w dłoni bo cokolwiek opisujesz nie jest dla Ciebie trudnością.
Dzięki za tutorial, ale po pierwszym czytaniu czuje się przytłoczony:), ale kto powiedział, że czyta się tylko raz :)
Pozdrawiam

_________________
smalski



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2012, o 21:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Niema sprawy kolego.
Jakbyś miał problemy napisz postaram się pomóc. Przeczytaj też uważnie część drugą :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2012, o 19:57 
Offline
Nowy

Dołączył(a): 09 kwi 2012
Posty: 20
Pomógł: 0

Witam, niedawno rozpocząłem pracę w eclipse i rzeczywiście urzekły mnie możliwości tego środowiska. Niestety zauważyłem pewną wadę mianowicie debugger. Jestem pod wrażeniem tego opisu konfiguracji debugera, jest on najbardziej kompletny ze wszystkich, które szukałem w sieci ;). Jednak mam pewne pytania odnośnie dodatku simulavr. Powyżej zostało napisane, iż jest to wersja niewspierana od 2005 r. natomiast na stronie projektu znalazłem, iż niedawno (luty 2012) wyszła nowa wersja simulavr: http://www.nongnu.org/simulavr/download.html . Przechodząc do konkretów oto moje pytania:
1. Proces instalacji samego simulavr w systemie win7 jest dla mnie mocno nieczytelny, czy byłaby możliwość małego wyjaśnienia?
2. Czy jest sens implementacji tego w eclipse skoro producent pisze, że wiele interfejsów i tak nie jest wspieranych?
3. Czy istnieje jakiś sposób konfiguracji eclipse (lub zainstalowania jakiegoś dodatku), który pozwoliłby na korzystanie z software'owego debuggera, wspierającego wszystkie interferjsy urządzenia (porównywalny z możliwościami tego z AVRStudio), dla typowych rodzajów mikrokontrolerów AVR (ATmega8, 16, 32 itd)?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2012, o 21:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

zauważ ze napisałem iż podjęto starania i że możliwe jest że projekt będzie nadal rozwijany:)

1. Da się zrobić bez większych kłopotów --- ja trzeba to pytaj co cie martwi chętnie odpowiem
2. Oczywiście że jest sens choćby w celach poznawczych --> zobaczymy może będzie nowa wersja lepiej chodzić
3. Oczywiście że można podłączyć w podobny sposób softwareowy debuger symulator z AVrStudio :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2012, o 10:52 
Offline
Nowy

Dołączył(a): 09 kwi 2012
Posty: 20
Pomógł: 0

Interesująca wydaje się opcja podłączenia debuggera z AVR Studio. Czy mógłbyś mi jakoś podpowiedzieć jak zaimplementować debugger avr stufio w eclipse indigo?
Jak narazie mam konfigurację, którą znalazłem w internecie tj. podłączyłem debugger z WinAVR ver. 2010. Projekt się kompiluje, debugger nie wykazuje błędów, ale brak wartości w okienku podglądu Rejestrów, Memory oraz Disassembly, ponadto program debuggera nie zatrzymuje się na początku funkcji main(), właściwie nie wiadomo gdzie się zatrzymuje. W oknie disassembly jest informacja No debug context.
Oto ustawienia mojego debuggera:
Obrazek
Obrazek
A o to widok okienka disassembly:
Obrazek
oraz registers:
Obrazek

Zaznaczam, że wyłączyłem optymalizacje. Projekt skompilowany dla ATmega32. Próbowałem także z innymi kombinacjami debuggerów avr-gdb, avr32-gdb itd ale nic nie pomaga.

Moim celem jest debuggowanie programu w eclipse indigo tak abym miał jakikolwiek podgląd w wartości rejestrów, zmiennych itd, poprostu coś na wzór tego co w avr studio, nie musi to być tak graficznie rozbudowane byle był podgląd wartości dla kompletnego mikrokontrolera. Czy mógłbym prosić o jakąś sensowną konfigurację, bo trochę uciążliwe wydaje się pisanie kodu w eclipse a debugging w avr studio??;) Jakiego debuggera Ty używasz?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2012, o 14:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Witam opiszę ci dokładnie jak to zrobić jak będę tylko miał chwilkę
ja korzystam z avr-gdb i dragona .


No więc tak:

1 .. avr32gdb ... hmmm no tego jakby tu nie być brutalnym

-- dotyczy mikroklocków z rdzeniem AVR32 a nie ze jest na system32 działać nie będzie z atmegami

2. z tego co widzę nie wystartował ci się avarice , przeczytaj jeszcze raz i zobacz screeny wyżej
jak masz jtagice to w pisz go w ustawieniach zamiast dragona
sprawdź porty dla gdb bo tu chyba tez masz mały miszung
i dodatkowo chyba nie powstaje ci plik elf w procesie kompilacji stad brak informacji dla disasembling

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2012, o 08:58 
Offline
Nowy

Dołączył(a): 09 kwi 2012
Posty: 20
Pomógł: 0

Dzieki wielkie;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2012, o 09:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Nie ma problemu jak coś to pytaj , niebawem będzie gotowa paczka z nowym eclipse
i skonfigurowanym debugerem :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2012, o 12:04 

Pomógł: 0

Na początku chciałem podziękować koledze SunRiver za świetny tutorial.

Mam pytanie z serii "Głupich" ;), czy za pomocą avr dragon i złącza jtag, można w jakiś sposób zapalać tj. ustawiać bity na poszczególnych portach procesora, czy jedynie debugować program?.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2012, o 12:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Zasadniczo można , poprzez wpisywanie danych bezpośrednio do rejestrów , ale nigdy tego nie praktykowałem
lepszy tu byłby emulator sprzętowy procesora ale nie wiem czy takowe istnieją dla AVR dla '51 były
wopinałeś to w LPT i taśmę w podstawkę i bez procesora mogłeś na kompie symulować zachowanie pinów w docelowym układzie :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lip 2012, o 21:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2012
Posty: 238
Pomógł: 5

Witam

Mam pytanie, bo chcę zmusić Eclipse do debugowania i coś się wykłada na pierwszym kroku uruchamiania AVaRICE.

Mam programator AVR JTAG (AVR JTAGICE COMPATIBILE) czyli ten mkI, zmusiłem do programowania AVR Dudem i programuje. Ale jak zacząłem ustawiać AVaICE i uruchamiać go to wyskakuje mi błąd:
Kod:
AVaRICE version 2.9, Jan  7 2010 22:42:57

Defaulting JTAG bitrate to 250 kHz.

did not find any USB device "usb"
USB device not found


Czyli nie może go znaleźć.

Co jak co to AVRdude widzi ten programator pod COM2 ... i stoję teraz w miejscu ... co z tym zrobić?

ps argumenty AVaRICE: C:\Documents and Settings\xbary>C:\WinAVR\bin\avarice.exe -1 --ignore-intr -j usb :4242


----------------
ALARM odwołany:)

zamiast usb albo numeru portu (windows) należy podać urządzenie w stylu unixowym, czyli COM2 jest traktowany jako /dev/ttyS1 ... I tej zmianie PYroGramator ruszył, i GDB znim. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lip 2012, o 21:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

no dobra , ale avrdude widzi coma i na nim programator , jak to jakiś dziwoląg typu 5 w jednym to bedzie stado problemów
ja opisałem procedurę dla dragona , dla JTAG ICE wygląda to tak samo , a klonow nie sprawdzałem

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 paź 2013, o 09:42 
Offline
Nowy

Dołączył(a): 10 paź 2013
Posty: 2
Pomógł: 0

Witam

A więc przyszła kolej i na mnie. Męczę się niemiłosiernie, ale postępy są nienajgorsze. Ustawienia mam takie jak podałeś Sunriver. Tak wygląda odpalenie AVaRICE w moim Eclipsie Luna

Obrazek

Jednak zrobiłem pewien myk, gdyż moja komenda wygląda następująco:

--dragon --ignore-intr --jtag usb --detach :4242

Dodałem --detach, gdyż bez tego proces uruchamiania AVaRICE zatrzymuje się na 250kHz...

A więc mamy uruchomiony AVaRICE, który wgl mnie śmiga jak złoto - teraz odpalamy debug, no wlaśnie i tu jest problem, gdyż pojawiają się błędy

No symbol table is loaded. Use the "file" command.

oraz

tbreak main
No symbol table is loaded. Use the "file" command


Wygląda to tak

Obrazek

Proces debugowania zatrzymuje się przy 99% a Dragon mruga z częstotliwością 5Hz.

Jeszcze ciekawi mnie bo nie ma o tym słowa w poradniku czy prawidłowo wybieram tutaj opcje Standart GDB

Obrazek

Czekam na nawet najbardziej banalne porady i z góry dziękuję za nie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 paź 2013, o 12:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

heh,,,, no mogło zabraknąć ja odpalam zawsze GDB (DSF) ..

przeczytaj też część 2gą topic958.html

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 paź 2013, o 15:01 
Offline
Nowy

Dołączył(a): 10 paź 2013
Posty: 2
Pomógł: 0

Dzięki za odpowiedź.

A więc tak. W akcie desperacji zainstalowałem linuxa, wszystkie potrzebne pakiety w tym eclipse z pluginami, ustawienia takie same jak na powyzszej windzie - efekt jest identyczny... ten sam problem. W załączniku przesyłam obecną konfigurację. Oczywiście używałem Standard GDB Launcher i GDB (DSF) w Debug Configuration.

http://www.sendspace.com/file/pojd33



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO