Jak debugować Arduino Uno z gdb na komputerze z systemem Linux?

10

Jak debugować (kod źródłowy w jednym kroku) Arduino Uno z gdb na komputerze z systemem Linux? Pamiętaj, że nie lubię używać AVR Studio w winie lub VirtualBox.

Pytanie 1: Połączenie fizyczne

Jak i co podłączyć do tablicy Uno? Domyślam się, że skoro na płycie Uno znajduje się ATmega328, kod źródłowy w jednym kroku powinien być dostępny? Zgaduję też, że mogę użyć AVR JTAGICE mkII lub AVR Dragon nad nagłówkiem ICSP?

Pytanie 2: Serwer GDB

Potem zauważyłem, że są takie projekty, jak AVaRICE, które wydają się zapewniać funkcję jtag dla gdb, ale mogą być też inne projekty?

Pytanie 3: Gdzie jest elf?

A jeśli go uruchomię, to gdzie Arduino IDE ukrywa wygenerowane wyjście, jak plik elfa z symbolami debugowania (powinien być taki)? Czy też muszę wygenerować klasyczny plik Makefile, który korzysta tylko z bibliotek Ardino?

Próbowałem znaleźć informacje na temat tego, czego / jak używać, ale znalazłem tylko te wskazówki, które powiedziały mi, co mogę zrobić. Czy ktoś może popchnąć mnie we właściwym kierunku?

Johan
źródło

Odpowiedzi:

3

Artefakty kompilatora można znaleźć, przytrzymując klawisz Shift, klikając przycisk kompilacji w starszej wersji IDE (czytaj <1.0). W nowszych wersjach (czytaj> = 1.0) w oknie dialogowym preferencji dostępna jest opcja wyświetlania pełnych danych wyjściowych podczas kompilacji (patrz zrzut ekranu). W przypadku pełnego wyjścia folder, w którym kończą się wszystkie wyjścia kompilatora, jest drukowany (wielokrotnie) w konsoli. To powinno wystartować przynajmniej.

screenshot arduino pokazuje pełne wyjście podczas kompilacji

Na marginesie, na czerwcu 2012 roku na liście deweloperów Arduino było wiele rozmów na ten temat i ktoś opublikował ogłoszenie na liście deweloperów Arduino o ulepszonym / zintegrowanym sposobie debugowania GDB dla Arduino, ale nie zbadałem to znacznie dalej. Myślę, że projekt nazywa się VisualMicro (?). Wygląda na to, że został zbudowany jako wtyczka Visual Studio, więc może nie być dla ciebie pomocny w środowisku Linux, a na dodatek jest w wersji beta, ale pozwolę ci zdecydować.

vicatcu
źródło
Włączyłem „Włącz pełne wyjście podczas kompilacji” i używają czegoś takiego jak /tmp/build3652385594823436592.tmp/ jako katalog kompilacji, również elf został zbudowany z flagą -g, więc powinien zawierać symbole debugowania. To znaczy, że znalazłem artefakty kompilacji, teraz muszę tylko uruchomić jtag.
Johan
3

Symulator procesora AVR firmy Simavr zapewnia teraz dobry serwer GDB do debugowania oprogramowania sprzętowego AVR, w tym Arduino. Możesz używać go samodzielnie (wymaga napisania małej aplikacji konsolowej dla konkretnej konfiguracji sprzętowej) lub ze środowiska GUI Simutron , w którym możesz zdefiniować konfigurację sprzętu za pomocą przechwytywania schematów.

Uwaga: za pomocą tych narzędzi nie masz fizycznego połączenia, ponieważ cały sprzęt jest symulowany.

poduszkowiec
źródło
2

Odpowiedź na to pytanie znajduje się w artykule w dzienniku linux, do którego odnosi się podobne pytanie: Jtag debuguje AVR .

Zasadniczo, używając avr-gdb i simulavr w tandemie, możesz uruchomić oprogramowanie na wybranych mikrokontrolerach AVR za pomocą symulatora, używając GDB do przejścia i obserwowania wykonywanego kodu.

Mam nadzieję że to pomoże!

slurms
źródło