Pikir dan Rasa

cogito ergo sum

Mengatasi error pada Eclipse untuk _debugging_ AVR dengan avr-gdb

with one comment

Software Eclipse bisa dipergunkan untuk mengerjakan pengembangan sistem mikrokontroller Atmel AVR. Hal ini terutama sekali memudahkan bagi mereka yang melakukan pengembangan di lingkungan sistem operasi GNU/Linux.

Permasalahan yang umum terjadi adalah pada saat akan melakukan debugging. Dalam bahasa yang sederhana, penyebabnya adalah versi avr-gdb yang sudah outdated. Sistem operasi yang saya pergunakan adalah:
Distributor ID: Ubuntu
Description: Ubuntu 10.10
Release: 10.10
Codename: maverick
yang juga menggunakan kernel
Linux 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011


Jika menggunakan SimulAVR pada jendela terminal maka debugger pada Eclipse akan terhenti (terminated) dan akan dijumpai informasi berikut dari simulavr:

[baris sebelum ini saya hilangkan]
Waiting on port 1212 for gdb client to connect…
Connection opened by host 127.0.0.1, port -5069.
Waiting on port 1212 for gdb client to connect…
Connection opened by host 127.0.0.1, port -5068.
decoder.c:737: MESSAGE: BREAK POINT: PC = 0x00000040: clock = 26
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:143: WARNING: incomplete read
gdbserver.c:149: ERROR: Maximum read reties reached

Solusi permasalahannya adalah dengan memperbaharui aplikasi avr-gdb dengan menginstall versi yang lebih baru, caranya dengan mengikuti saran dari Dmitriy Geels (dmig):
avr-gdb may be manually updated from gdb source:
apt-get source gdb
cd gdb-6.8
./configure –prefix=/usr/local/avr –program-prefix=”avr-” –target=avr –disable-werror
make
make install
 –disable-werror is requ[i]red, gdb doesn’t build without this.

Saya melakukan dengan cara yang sedikit berbeda, file sumber (source code) saya ambil secara manual
$ wget ftp://ftp.gnu.org/gnu/gdb/gdb-7.3a.tar.bz2

Saya download gdb-7.3a.tar.bz2 karena pada saat saya tulis log ini, versi itulah yang terbaru. Setelah file-nya tersimpan di komputer (saya melakukan download dari home direktori saya: ~) , tahap berikutnya adalah ekstraksi. Urut-urutan langkahnya sebagai berikut:

 

tar jxf gdb-7.3a.tar.bz2
cd gdb-7.3
./configure –prefix=/usr/local/avr –program-prefix=”avr-” –target=avr –disable-werror
make
sudo make install
cd ..
rm -rf gdb-7.3

 

 

 

Sekedar catatan kecil, proses ekseskusi perintah make memang relatif agak lama, bahkan untuk sesaat terkesan tidak berlanjut (alias hang atau freeze). Hal itu biasa.

Nah sekarang saya memiliki avr-gdb yang baru yang terletak di:
/usr/local/avr/bin/avr-gdb

Untuk memastikan versi avr-gdb tersebut, dapat dilakukan dengan perintah:
$/usr/local/avr/bin/avr-gdb –version

Hasilnya sebagai berikut:
GNU gdb (GDB) 7.3
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html&gt;
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type “show copying”
and “show warranty” for details.
This GDB was configured as “–host=i686-pc-linux-gnu –target=avr”.
For bug reporting instructions, please see:

Sedangkan bila menggunakan perintah:
$avr-gdb –version

Hasilnya sebagai berikut:
GNU gdb 6.4
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB.  Type “show warranty” for details.
This GDB was configured as “–host=i486-linux-gnu –target=avr”

Setting untuk debugger pada Eclipse adalah sebagai mana screenshot berikut
(/usr/local/avr/bin/avr-gdb):


 
Isi file gdbinit:
# 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 /home/bejo/workspace/blinkled/Debug/blinkled.elf
 
#also don’t forget to change the port number if you are using a different one.
target remote localhost:1212
load

Gambar berikut adalah hasil dari menggunakan simulavr yang dikonfigurasikan dari External Tools Configurations pada Eclipse:

 
Jika menggunakan perintah (CLI) dari jendela terminal dengan perintah (kebetulan saya memilih uC atmega16):
$ simulavr –device atmega16 –gdbserver

, maka akan didapat hasil berikut:
[baris sebelum ini saya potong]
Waiting on port 1212 for gdb client to connect…
Connection opened by host 127.0.0.1, port -25337.
Waiting on port 1212 for gdb client to connect…
Connection opened by host 127.0.0.1, port -25336.
decoder.c:737: MESSAGE: BREAK POINT: PC = 0x00000040: clock = 26
decoder.c:737: MESSAGE: BREAK POINT: PC = 0x0000005c: clock = 85


Ref:
ftp://ftp.gnu.org/gnu/gdb/
https://bugs.launchpad.net/ubuntu/+source/gdb-avr/+bug/407367
http://www.mikrocontroller.net/articles/AVR_Eclipse
http://www.mikrocontroller.net/topic/76404#1198507
http://www.mikrocontroller.net/topic/76404
http://avr-eclipse.sourceforge.net/wiki/index.php/Debugging
http://avr-eclipse.sourceforge.net/wiki/index.php/Avr-gdb_output
http://avr-eclipse.sourceforge.net/wiki/index.php/Known_Issues
http://www.mbeckler.org/microcontrollers/avrgcc_build/
Building AVR GCC
http://code.google.com/p/udpws/wiki/TutorialsExampleAvrRaven
 

Written by sunupradana

September 22, 2011 at 9:44 pm

One Response

Subscribe to comments with RSS.

  1. […] post sebelum ini saya telah menyarikan cara penggunaan Eclipse untuk debugging pada software uC AVR.  Tulisan […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: