Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

[ARM] Problem z debugowaniem

ksiecioonio
-
-
Posty: 5
Rejestracja: 10 lip 2007, o 18:54
Lokalizacja: Warszawa

[ARM] Problem z debugowaniem

Postautor: ksiecioonio » 10 lip 2007, o 19:06

Witam,

Dopiero zaczynam naukę programowania ARMów i mam następujący problem: dołączyłem do swojego projektu FATFS do obsługi karty SD. Zmodyfikowałem w tym celu przykład dla AVR tak, żeby działał z moim STR711F. Po skompilowaniu i uruchomieniu w Eclipse OpenOCD i debuggera (arm-elf-gdb), w konsoli miałem tylko coś takiego:

Kod: Zaznacz cały

target remote localhost:3333 Ignoring packet error, continuing... Ignoring packet error, continuing... Ignoring packet error, continuing...
Szczerze mówiąc, nie wiem, dlaczego tak się dzieje i gdzie szukać przyczyny problemu. Jeszcze śmieszniejsze jest to, że po skompilowaniu wcześniejszej, działającej wersji projektu debugowanie także nie działa.

Będę wdzięczny, jeśli ktoś mi podpowie, jak to poprawić. Jeśli trzeba, służę dodatkowymi informacjami. Z góry dziękuję za wskazówki.

Pozdrawiam,
Maciek

lucck
-
-
Posty: 19
Rejestracja: 8 maja 2004, o 19:07
Lokalizacja: Warszawa
Kontaktowanie:

Postautor: lucck » 11 lip 2007, o 07:59

A jaki kolwiek inny projekt z debugerem dziala??? Moze modyfikujesz jakies ustawienia portow GPIO odpowiadajace za JTAGA???

Pozdr
L.B.

ksiecioonio
-
-
Posty: 5
Rejestracja: 10 lip 2007, o 18:54
Lokalizacja: Warszawa

Postautor: ksiecioonio » 11 lip 2007, o 12:50

Jakikolwiek działa, w końcu udało mi się uruchomić poprzednią wersję i chodzi bez w/w błędów. Dzięki za wskazówkę z portami, faktycznie możliwe, poszukam. Jeszcze jedno: zwykle po uruchomieniu debuggera wykonanie zatrzymuje mi się na pierwszej linijce main(), natomiast zdarza się, że uporczywie nie :608:. W ustawieniach debugowania mam tak:

Kod: Zaznacz cały

['Initialize' commands] target remote localhost:3333 monitor reset monitor sleep 500 monitor poll monitor soft_reset_halt monitor arm7_9 hw_bkpts enable break main load
Podrawiam,
Maciek

lucck
-
-
Posty: 19
Rejestracja: 8 maja 2004, o 19:07
Lokalizacja: Warszawa
Kontaktowanie:

Postautor: lucck » 11 lip 2007, o 16:37

A jakie sa tego okolicznosci ? Czy zdarza to sie losowo czy w jakis konkretnych przypadkach? Z tego co mi przychodzi z podanych informacji do glowy to: Jezeli uzywasz gcc z wlaczona optymalizacja -O1 -O2 -O3 -Os to niektore fragmenty kodu moga zostac zoptymalizowane na przyklad funkcje static moga zostac rozwiniete inline itp. W takich przypadkach jezeli ustawiona jest pulapka na takim fragmencie kodu ktory zostal w jakis sposob zoptymalizowany ustawiona pulapka warunek moze nie wystapic. Tak jak w twoim przpadku pulapka na wejsciu do funkcji main() taka okolicznosc akurat nie wystapi, wiec musi to byc cos innego. Jezeli chodzi o interfejs jtag to uzywasz wigglera czy czegos innego? Jezeli jest to wiggler to on czasami ma swoje narowy i potrafi sie zachowywac dosc irracjonalnie..... Jego jedyna zaleta to jest chyba tylko cena ;)

Pozdr
L.B.

ksiecioonio
-
-
Posty: 5
Rejestracja: 10 lip 2007, o 18:54
Lokalizacja: Warszawa

Postautor: ksiecioonio » 11 lip 2007, o 22:32

Powiem tak: pomijając taki "plankton", jak funkcje związane z odczytem z ADC, wywoływane przez handlera IRQ, mam tylko main() i handlera właśnie. I to zwykle main() jest pomijana (breakpoint znaczy) i łapie mi breakpointy w handlerze, albo zgoła nic. Trudno mi powiedzieć, czy to jest losowo, czy nie.
Wyjście gdb:

Kod: Zaznacz cały

target remote localhost:3333 monitor reset 0x20000040 in ResetHandler () monitor sleep 500 monitor poll monitor soft_reset_halt monitor arm7_9 sw_bkpts enable monitor mww 0xFFE00000 0x1000213D monitor mww 0xFFE00004 0x20003E3D monitor mww 0xFFE00020 0x00000001 monitor mdw 0xFFE00000 1 Breakpoint 1 at 0x20000d18: file src/main.c, line 207. - prawidłowo, pierwsza linijka main() Loading section .text, size 0x10d0 lma 0x20000000 Loading section .data, size 0xc lma 0x200010d0 Start address 0x20000040, load size 4316 Transfer rate: 34528 bits in <1 sec, 332 bytes/write. monitor mdw 0xFFE00004 1 break main load mi_cmd_break_watch: Missing <expression>
Używam ARMcable I od Propoxu, kompatybilnego z Macraigor Wiggler. Optymalizacja wyłączona, więc z pierwszą linijką main() - odwołaniem do inicjalizacji ADC nie powinno być problemu.

Awatar użytkownika
gruszek
-
-
Posty: 178
Rejestracja: 20 lis 2003, o 13:31
Lokalizacja: bytom

Postautor: gruszek » 12 lip 2007, o 12:29

Ja może trochę offtopic ale zapytam bo widzę, że tu są ludzie z doświadczeniem: gdzie znajdę jakieś przydatne informacje na temat budowy systemu opartego na ARM9?
Chcę uruchomić na tym linuksa (emdebian albo arm linux). Mój problem to brak styczności z ARMami :P Potrzebowałbym ogólnych informacji typu: co będzie potrzebne i jak to podłączyć. Czytałem już trochę jakiś datasheet jednego takiego arma ale za cholerę nie wiem np. jak podłączyć do niego kartę pamięci, RAM itp :/

ksiecioonio
-
-
Posty: 5
Rejestracja: 10 lip 2007, o 18:54
Lokalizacja: Warszawa

Postautor: ksiecioonio » 15 lip 2007, o 15:32

Mogłeś mieć rację, lucck. Po przepisaniu kodu z użyciem biblioteki od ST, wszystko działa lepiej, więc mogłem wcześniej niechcący modyfikować nie te rzeczy, co trzeba.

lucck
-
-
Posty: 19
Rejestracja: 8 maja 2004, o 19:07
Lokalizacja: Warszawa
Kontaktowanie:

Postautor: lucck » 21 lip 2007, o 12:59

Mogłeś mieć rację, lucck. Po przepisaniu kodu z użyciem biblioteki od ST, wszystko działa lepiej, więc mogłem wcześniej niechcący modyfikować nie te rzeczy, co trzeba.
Ok fajnie ze dziala. Soorki ze wczesniej nie odpisywalem ale dopiero co wrocilem z urlopu i bylem poza siecia....

Pozdr
L.B.

[ Dodano: 21-07-2007, 14:00 ]
Ja może trochę offtopic ale zapytam bo widzę, że tu są ludzie z doświadczeniem: gdzie znajdę jakieś przydatne informacje na temat budowy systemu opartego na ARM9?
Chcę uruchomić na tym linuksa (emdebian albo arm linux). Mój problem to brak styczności z ARMami :P Potrzebowałbym ogólnych informacji typu: co będzie potrzebne i jak to podłączyć. Czytałem już trochę jakiś datasheet jednego takiego arma ale za cholerę nie wiem np. jak podłączyć do niego kartę pamięci, RAM itp :/
Chcesz to moge ci podeslac miniprojekt jak uruchomic uclinuxa na ARM7 (LPC2294) tylko jest troche malo ekonomiczny bo nie ma kontrolera DRAM-ow trzeba by zastosowac nowszego lpca i dramy, ale jak to tylko ma byc w celach testowych to by sie nadalo.

Pozdr
L.B.

Wróć do „ARM (STM32, NXP, Stellaris i inne)”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 37 gości