Bagaimana cara men-debug Arduino Uno dengan gdb di PC Linux?

10

Bagaimana cara men-debug (source code single step) a Arduino Uno dengan gdb pada PC Linux? Harap dicatat bahwa saya tidak suka menggunakan AVR Studio dalam anggur atau VirtualBox.

Pertanyaan 1: Koneksi fisik

Bagaimana dan apa yang saya hubungkan ke papan Uno? Dugaan saya adalah bahwa karena papan Uno diisi dengan ATmega328, kode sumber langkah tunggal harus tersedia? Saya juga menebak bahwa saya dapat menggunakan AVR JTAGICE mkII atau AVR Dragon di atas header ICSP?

Pertanyaan 2: Server GDB

Lalu saya perhatikan bahwa ada beberapa proyek seperti AVaRICE yang tampaknya menyediakan fungsi jtag ke gdb, tetapi mungkin ada proyek lain?

Pertanyaan 3: Di mana elf itu?

Dan jika saya mengaktifkannya, di mana Arduino IDE menyembunyikan output yang dihasilkan seperti file elf dengan simbol debug (harus ada satu)? Atau apakah saya perlu membuat Makefile klasik yang hanya menggunakan lib Ardino?

Saya mencoba mencari beberapa info tentang apa / bagaimana cara menggunakan, tetapi saya hanya menemukan petunjuk yang memberi tahu saya apa yang bisa saya lakukan. Bisakah seseorang mendorong saya ke arah yang benar?

Johan
sumber

Jawaban:

3

Anda dapat menemukan artefak kompiler dengan menahan tombol shift saat mengklik tombol kompilasi dalam versi IDE yang lebih lama (baca <1.0). Dalam versi yang lebih baru (baca> = 1.0) ada opsi di bawah dialog preferensi untuk menampilkan output verbose selama kompilasi (lihat screenshot). Dengan keluaran verbose, folder tempat semua keluaran kompiler berakhir dicetak (berulang kali) di konsol. Setidaknya itulah yang harus Anda mulai.

tangkapan layar arduino menunjukkan keluaran verbose selama kompilasi

Di samping catatan, ada segala macam obrolan tentang hal ini pada daftar pengembang Arduino sebelumnya pada Juni 2012 dan seseorang memposting pengumuman ke daftar pengembang Arduino tentang cara yang ditingkatkan / terintegrasi dari debugging GDB untuk Arduino, tapi saya belum menyelidiki lebih jauh. Saya kira proyek ini disebut VisualMicro (?). Sepertinya sudah dibangun sebagai plugin Visual Studio jadi mungkin tidak membantu Anda dalam lingkungan linux, dan itu masih dalam versi beta, tetapi saya akan membiarkan Anda memutuskan.

vicatcu
sumber
Saya mengaktifkan "Aktifkan output verbose selama kompilasi" dan mereka menggunakan sesuatu seperti /tmp/build3652385594823436592.tmp/ sebagai dir build mereka, juga elf dibangun dengan flag -g sehingga harus mengandung simbol debug. Itu berarti bahwa saya telah menemukan artefak buatan, sekarang saya hanya perlu agar jtag berfungsi.
Johan
3

Simulator prosesor AVR Simavr sekarang menyediakan server GDB yang baik untuk debugging AVR firmvare, termasuk Arduino. Anda dapat menggunakannya sendiri (mengharuskan Anda untuk menulis aplikasi konsol kecil untuk konfigurasi perangkat keras khusus Anda) atau dari dalam lingkungan GUI Simutron , tempat Anda dapat menentukan konfigurasi perangkat keras Anda melalui penangkapan skematis.

Catatan: dengan alat-alat ini Anda tidak memiliki koneksi fisik karena semua perangkat keras disimulasikan.

kapal berbantalan udara
sumber
2

Ini dijawab dalam artikel jurnal linux yang dirujuk dalam pertanyaan serupa: Jtag debugging AVR .

Pada dasarnya, menggunakan avr-gdb dan simulavr bersama-sama, Anda dapat menjalankan perangkat lunak Anda pada pilihan mikrokontroler AVR melalui simulator, sambil menggunakan GDB untuk melangkah dan mengamati kode pelaksana.

Semoga ini membantu!

slurms
sumber