Forum: Mikrocontroller und Digitale Elektronik GDB-Stub Eclipse


von tester (Gast)


Lesenswert?

Ich möchte gerne auf einem Arm-91 Sam Board mit darauf aufgespieltm 
linux mit GDB- Stub über Ethernet Debuggen.
Als oberfläche möcht ich Eclipse verwenden.

Wie geht das?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Das hier:
http://www.segger.com/cms/jlink-pro.html

Hat Ethernet, Debug über Ethernet also möglich...

Was es für Installationen für Eclipse braucht ist hier beschrieben: 
STM32
Natürlich ohne den OpenOCD. Dafür mit dem Segger GDB Server.

Wie man parametriert ist hier beschrieben:
Beitrag "Re: CortexM3 Startprobleme (YAGARTO+ECLIPSE+J-LINK)"

von tester (Gast)


Lesenswert?

Gibt es eine Möglichkeit dass Ganze ohne J-link in Betrib zu nehmen? 
Ethernet und Serielle Schnitstellen sind auf dem Board vorhanden .

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Wenn die CPU Ethernet hat, dann muss sie laufen um das Ethernet bedienen 
zu können, also kann damit nicht debuggt werden. Denn bei einem 
Breakpoint steht die CPU und nix mehr geht. Also benötigt es ein 
externen JTAG mit Ethernetanschluss.

von Martin Thomas (Gast)


Lesenswert?

Man kann auf dem Zielsystem unter Linux laufende Anwendungen auch ohne 
JTAG-Interface debuggen. Z.B. kann die Anwendung "unter Kontrolle" von 
gdbserver auf der Zielhardardware starten. gdbserver stellt einen Port 
zur Verfügung. IP/Name und Port gibt man in der Connections-Einstellung 
einer Ecplipse Debug-Konfiguration an. remote debugging linux Eclipse in 
Suchmaschine der Wahl eingeben hilft, es findet sich einiges. Durchlesen 
der Target Management (TM) Seiten (Startlink auf eclipse.org) wird auch 
nützlich sein.

von NocheinGast (Gast)


Lesenswert?

Was willst du debuggen? Den Linux Kernel, oder eine Applikation?


Markus Müller schrieb:
> Wenn die CPU Ethernet hat, dann muss sie laufen um das Ethernet bedienen
> zu können, also kann damit nicht debuggt werden. Denn bei einem
> Breakpoint steht die CPU und nix mehr geht. Also benötigt es ein
> externen JTAG mit Ethernetanschluss.

Der Linux Kernel oder die Applikation steht aber nicht der GDB Stub und 
die Schnittstelle über welche GDB kommuniziert! Die Schnittstelle wird 
dann normalerweise auch nur für die GDB Kommunikation verwendet.

von tester (Gast)


Lesenswert?

http://bhagwat-masalkar.blogspot.com/2008/05/remote-debugging-for-arm-target-board.html

Wenn ich den anweisungen auf dieser Seite folge bricht der Vorgang mit 
Fehlern ab.

if [ x"" != x ]; then \
          gcc -c -DHAVE_CONFIG_H -g -O2  -I. -I./../include  -W -Wall 
-Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic   ./strncmp.c 
-o pic/strncmp.o; \
        else true; fi
gcc -c -DHAVE_CONFIG_H -g -O2  -I. -I./../include  -W -Wall 
-Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic  ./strncmp.c 
-o strncmp.o
rm -f ./libiberty.a pic/./libiberty.a
i386-ar rc ./libiberty.a \
          ./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o ./sha1.o 
./alloca.o ./argv.o ./choose-temp.o ./concat.o ./cp-demint.o ./crc32.o 
./dyn-string.o ./fdmatch.o ./fibheap.o ./filename_cmp.o ./floatformat.o 
./fnmatch.o ./fopen_unlocked.o ./getopt.o ./getopt1.o ./getpwd.o 
./getruntime.o ./hashtab.o ./hex.o ./lbasename.o ./lrealpath.o 
./make-relative-prefix.o ./make-temp-file.o ./objalloc.o ./obstack.o 
./partition.o ./pexecute.o ./physmem.o ./pex-common.o ./pex-one.o 
./pex-unix.o ./safe-ctype.o ./sort.o ./spaces.o ./splay-tree.o 
./strerror.o ./strsignal.o ./unlink-if-ordinary.o ./xatexit.o ./xexit.o 
./xmalloc.o ./xmemdup.o ./xstrdup.o ./xstrerror.o ./xstrndup.o 
./mkstemps.o ./strncmp.o
make[2]: i386-ar: Command not found
make[2]: *** [libiberty.a] Error 127
make[2]: Leaving directory `/root/Download/gdb-7.1/libiberty'
make[1]: *** [all-libiberty] Error 2
make[1]: Leaving directory `/root/Download/gdb-7.1'
make: *** [all] Error 2

von tester (Gast)


Lesenswert?

Ich benutze stat der ver. 6.8 7.1

von tester (Gast)


Lesenswert?

OK,dassProblem habe ich gelößt
stat
./configure --host=i386 --target=arm-linux --build=i686
     --prefix=/home/<path>/arm-tools/bin/arm-linux-gdb
Das:
./configure --host=i386 --target=arm-linux --build=i386
     --prefix=/home/<path>/arm-tools/bin/arm-linux-gdb

Das neue Problem:
checking for iconv... yes
checking for iconv declaration... install-shextern size_t iconv (iconv_t 
cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t 
*outbytesleft);
checking for library containing waddstr... no
configure: WARNING: no enhanced curses library found; disabling TUI
checking for library containing tgetent... no
configure: error: no termcap library found
make[1]: *** [configure-gdb] Error 1
make[1]: Leaving directory `/root/Download/gdb-7.1'
make: *** [all] Error 2

von tester (Gast)


Lesenswert?

Installieren des Paketes ncurses-devel hat das Problem gelößt

von tester (Gast)


Lesenswert?

$ cd gdb-6.8/gdb/gdbserver

    $ export CC=arm-linux-gcc   // if required

    $ export LD=arm-linux-ld    // if required

    $ ./configure --build=i686 --host=arm-linux --target=arm-linux

    $ make

Nach dem ./configure --build=i686 --host=arm-linux --target=arm-linux

dieses Problem

/configure --build=i686 --host=arm-linux --target=arm-linux
checking for arm-linux-gcc... arm-linux-gcc
checking for C compiler default output file name...
configure: error: in `/root/Download/gdb-7.1/gdb/gdbserver':
configure: error: C compiler cannot create executables
See `config.log' for more details.

in der .log steht:

configure:2200: checking for arm-linux-gcc
configure:2227: result: arm-linux-gcc
configure:2496: checking for C compiler version
configure:2505: arm-linux-gcc --version >&5
./configure: line 2507: arm-linux-gcc: command not found
configure:2516: $? = 127
configure:2505: arm-linux-gcc -v >&5
./configure: line 2507: arm-linux-gcc: command not found
configure:2516: $? = 127
configure:2505: arm-linux-gcc -V >&5
./configure: line 2507: arm-linux-gcc: command not found
configure:2516: $? = 127
configure:2505: arm-linux-gcc -qversion >&5
./configure: line 2507: arm-linux-gcc: command not found
configure:2516: $? = 127
configure:2536: checking for C compiler default output file name
configure:2558: arm-linux-gcc    conftest.c  >&5
./configure: line 2560: arm-linux-gcc: command not found
configure:2562: $? = 127
configure:2599: result:
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
"config.log" 207L, 4685C

von tester (Gast)


Lesenswert?

Lösung:mann muss den Pfade in die .bashrc eintragen und das terminal neu 
starten

von tester (Gast)


Lesenswert?

Wie bekomme ich das Ganze jetzt in eclipse ans laufen ?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.