Forum: Compiler & IDEs GDB mit Motorola 68k


von Steffen H. (steffenh)


Lesenswert?

Hallo zusammen,

kennt sich jemand mit GCC M68k aus? Weil ich von Linux überhaupt 
keine Ahnung habe, habe ich versucht, alles 1:1 aus dem Artikel 
nachzubauen. Inkl. der dort angegebenen Versionen von OpenSuse, GDB usw. 
Das war für mich zwar nicht ganz einfach, aber dank Google hat es 
einigermaßen geklappt. Allerdings komme ich mit Google bei meinem 
momentanen Problem nicht weiter!


Ich bekomme einfach keine Verbindung zwischen GDB und meinem Target. 
Sobald ich versuche, wie in der Anleitung beschrieben, eine Verbindung 
aufzubauen, passiert Folgendes:
1
(gdb) targ rem | m68k-bdm-gdbserver pipe /dev/bdmicd0
2
Remote debugging using | m68k-bdm-gdbserver pipe /dev/bdmicd0
3
trying kernel driver: /dev/bdmicd0
4
m68k-bdm: architecture CPU32 connected to /dev/bdmicd0
5
Process /dev/bdmicd0 created; pid = 0
6
Ignoring packet error, continuing...
7
warning: unrecognized item "timeout" in "qSupported" response
8
Ignoring packet error, continuing...
9
Ignoring packet error, continuing...
10
Ignoring packet error, continuing...
11
Ignoring packet error, continuing...
12
Ignoring packet error, continuing...
13
warning: Invalid remote reply: timeout

In der im Artikel verlinkten Sammlung ist extra ein Prüfprogramm 
enthalten (bdm-cpu32-chk). Wenn ich das ausführe, werden die Register, 
der Speicher usw. getestet - alles ist einwandfrei. Ich schließe daraus, 
dass die Hardware-Verbindung an sich funktioniert. Nur will GDB trotzdem 
nicht!


Könnt ihr mir weiterhelfen? Hoffentlich habt ihr eine Idee...

Grüße
Steffen


P.s.: Ich verwende einen M68336 statt des im Artikel angegebenen 
MC68332. Ich habe aber nichts gefunden, dass spezifisch auf diesen 
Prozessor angepasst wurde. Auch nicht im Patch.

von Steffen H. (steffenh)


Lesenswert?

Nachtrag: Anders als im Artikel arbeite ich mit OpenSuse 32 bit. Und - 
womöglich auch nicht ganz unwichtig - ich bin in einer virtuellen 
Maschine unterwegs. Der Zugriff auf meinen Zielprozessor funktioniert 
prinzipiell aber aus meiner VM heraus (siehe Eröffnungsbeitrag)!

von Markus F. (mfro)


Lesenswert?

der im Artikel verlinkte BDM code ist uralt (die Entwickler scheinen die 
Dateidownloads schon lange nicht mehr auf Stand zu halten).

Hol' dir die BDM Tools direkt aus dem entsprechenden git Repository: 
https://sourceforge.net/p/bdm/code/ci/master/tree
Das funktioniert bei mir (weitgehend) problemlos. Zumindest für ColdFire 
BDM.

von Steffen Hausinger (Gast)


Lesenswert?

Ich hatte gehofft, wenn ich alles 1:1 nachbaue, würde es 
funktionieren...

Danke für Deinen Link und den Hinweis, ich werde das heute Abend 
ausprobieren!

von Steffen H. (steffenh)


Lesenswert?

Markus F. schrieb:
> Hol' dir die BDM Tools direkt aus dem entsprechenden git Repository:
> https://sourceforge.net/p/bdm/code/ci/master/tree

Ich habe es damit ausprobiert und es nicht ans Laufen bekommen.

Versuch 1 - Installation im Stil vom Artikel GCC M68k
1
me@linux-6hnn:~/cross-m68k/bdm-code/m68k> mkdir m68k-obj
2
me@linux-6hnn:~/cross-m68k/bdm-code/m68k> cd m68k-obj/
3
me@linux-6hnn:~/cross-m68k/bdm-code/m68k/m68k-obj> ../configure --prefix=/opt/m68k/ --disable-tblcf --enable-bdmctrl
4
bash: ../configure: Datei oder Verzeichnis nicht gefunden


Versuch 2a - Im Internet gefunden, dass man den "Configure"-Befehl 
erst mit Autoconf erstellen muss
1
me@linux-6hnn:~/cross-m68k/bdm-code/m68k> autoconf configure.ac
2
...
3
configure.ac:16: error: possibly undefined macro: AM_INIT_AUTOMAKE
4
      If this token and others are legitimate, please use m4_pattern_allow.
5
      See the Autoconf documentation.
6
configure.ac:55: error: possibly undefined macro: AM_PROG_CC_C_O
7
configure.ac:106: error: possibly undefined macro: AM_CONDITIONAL

Versuch 2b - Im Internet gefunden, dass man vorher "aclocal" ausführen 
muss
1
me@linux-6hnn:~/cross-m68k/bdm-code/m68k> aclocal
2
me@linux-6hnn:~/cross-m68k/bdm-code/m68k> autoconf configure.ac
3
...

-> Prima, autoconf läuft durch! Nur leider existiert weiterhin keine 
Datei namens "Configure" :-(


Versuch 3 - Erneut "Autoconf" aufrufen - aber diesmal ohne Parameter
1
me@linux-6hnn:~/cross-m68k/bdm-code/m68k> autoconf
2
me@linux-6hnn:~/cross-m68k/bdm-code/m68k> cd m68k-obj/
3
me@linux-6hnn:~/cross-m68k/bdm-code/m68k/m68k-obj> ../configure --prefix=/opt/m68k/ --disable-tblcf --enable-bdmctrl
4
configure: loading site script /usr/share/site/i686-pc-linux-gnu
5
checking build system type... i686-pc-linux-gnu
6
checking host system type... i686-pc-linux-gnu
7
checking target system type... i686-pc-linux-gnu
8
checking for a BSD-compatible install... /usr/bin/install -c
9
checking whether build environment is sane... yes
10
checking for a thread-safe mkdir -p... /bin/mkdir -p
11
checking for gawk... gawk
12
checking whether make sets $(MAKE)... yes
13
checking for gcc... gcc
14
checking whether the C compiler works... yes
15
checking for C compiler default output file name... a.out
16
checking for suffix of executables... 
17
...
18
configure: creating ./config.status
19
config.status: error: cannot find input file: `Makefile.in'



Ich komme hier vom Hundertsten ins Tausendste. Ich möchte doch 
eigentlich etwas ganz anderes, nämlich nur die BDM Tools installieren. 
Muss man bei Linux studiert haben, um ein Programm zu bauen?

Na egal. Was muss ich denn machen, damit ich die BDM Tools gebaut 
bekomme? Es gibt eine Datei namens "Makefile.am". Ist sie der Schlüssel?

von Karsten F. (Firma: von Dänemark) (bingo600)


Lesenswert?

Kein ide , aber villeicht : autoreconf


/Bingo

von Markus F. (mfro)


Lesenswert?

Steffen H. schrieb:
> Muss man bei Linux studiert haben, um ein Programm zu bauen?

Ähem. Studiert zu haben ist natürlich grundsätzlich kein Fehler, aber 
hier - mit Verlaub - reicht es völlig, wenn man lesen (und verstehen) 
kann ;).

Das ist uralte, (wahrscheinlich) nicht mehr gepflegte Software, trotzdem 
funktioniert sie noch recht gut. Die Entwickler haben sich sogar die 
Mühe gemacht, ein vernünftiges README (das ist wörtlich zu nehmen) 
dazuzulegen und da steht folgendes drin:
1
If working from a git checkout you need to bootstrap:
2
3
  $ cd bdm/m68k
4
  $ config/bootstrap
5
  $ cd ../..
6
  $ mkdir build
7
  $ cd build
8
  $ ../bdm/m68k/configure
9
  $ make
10
  $ make install

Wenn man sich daran hält, dann funktioniert das auch ohne Studium ;)

von Steffen H. (steffenh)


Lesenswert?

Ach so, ich hab so ein "Git Checkout"? In der Anleitung aus dem Artikel 
M68k GCC hatte ich von der selben Seite heruntergeladen und da hatte 
ja alles gleich geklappt. Ich dachte, ich würde jetzt das Gleiche tun... 
Puh, mit dem Tipp von Markus hat es jedenfalls funktioniert. Vielen 
Dank!


Leider bekomme ich auch mit der neuen Version der BDM-Tools weiterhin 
die Fehlermeldung aus meinem Eröffnungspost:
1
(gdb) targ rem | m68k-bdm-gdbserver pipe /dev/bdmicd0
2
Remote debugging using | m68k-bdm-gdbserver pipe /dev/bdmicd0
3
trying kernel driver: /dev/bdmicd0
4
m68k-bdm: architecture CPU32 connected to /dev/bdmicd0
5
Process /dev/bdmicd0 created; pid = 0
6
Ignoring packet error, continuing...
7
warning: unrecognized item "timeout" in "qSupported" response
8
Ignoring packet error, continuing...
9
Ignoring packet error, continuing...
10
Ignoring packet error, continuing...
11
Ignoring packet error, continuing...
12
Ignoring packet error, continuing...
13
warning: Invalid remote reply: timeout

Wenn ich den gdbserver von der Kommandozeile aufrufe, passiert auch 
nichts:
1
me@linux-6hnn:/opt/m68k/bin> m68k-bdm-gdbserver pipe /dev/bdmicd0
2
trying kernel driver: /dev/bdmicd0
3
m68k-bdm: architecture CPU32 connected to /dev/bdmicd0
4
Process /dev/bdmicd0 created; pid = 0

Kann ich den gdbserver irgendwie testen? Also beispielsweise einzelne 
Kommandos an mein Target senden und seine Antwort empfangen? Die 
Hardware-Verbindung funktioniert ja prinzipiell, da "bdm-cpu32-chk 
/dev/bdmicd0" sauber durchläuft.

Oder muss ich da noch irgendwas konfigurieren? Ich habe ja bspw. 
nirgends mein Prozessor-Derivat angegeben (nur allgemein "CPU32"). Oder 
irgendwelche Timing-Parameter.

: Bearbeitet durch User
von Markus F. (mfro)


Lesenswert?

wo hängt denn dein BDM dran? Parallelport?

von Steffen H. (steffenh)


Lesenswert?

Markus F. schrieb:
> wo hängt denn dein BDM dran? Parallelport?

Ja genau. Und mein Interface ist das ICD (mit dem GAL). BD32 
funktioniert damit übrigens auch.

: Bearbeitet durch User
von Markus F. (mfro)


Lesenswert?

Dann könnte es sich möglicherweise lohnen, mal mit dem -t Parameter 
rumzuspielen.

von Steffen H. (steffenh)


Lesenswert?

Der -t Parameter hat mir leider nicht weitergeholfen. Ich probiere jetzt 
seit gestern Abend rum, komme aber nicht weiter. Ich hab alles vor- und 
rückwärts ausprobiert. Es ist wirklich zum verzweifeln.

Es gibt in den BDM Tools ja auch noch das Unterverzeichnis "M683xx", das 
scheinbar noch besser mit der CPU32 funktionieren soll. Um das zu 
verwenden, muss man sich aber scheinbar mit Unix noch besser auskennen. 
Ich bekomme die Installation jedenfalls nicht hin :-(

Eine Idee habe ich noch: In den alten Anleitungen steht, dass GDB 
gepatcht werden muss. Im Artikel M68k GCC steht davon aber nichts 
mehr (und in einer der unzähligen READMEs, die ich mittlerweile gelesen 
habe, stand auch etwas in der Richtung, dass das nicht mehr notwendig 
sei).

Kannst Du (oder jemand anderes) das bestätigen?

: Bearbeitet durch User
von Markus F. (mfro)


Lesenswert?

Steffen H. schrieb:
> Kannst Du (oder jemand anderes) das bestätigen?

Da kann ich leider nicht weiterhelfen. Ich benutze BDM nur mit 
ColdFire-Boards und da gibt's das Problem nicht.

von G. S. (varda)


Lesenswert?

Hallo Stefan,

lese mal ...

Beitrag "Re: Motorola MC68332 und BD32"

Da wird der BDM Mode ein wenig genauer beschrieben. Erfüllt deine 
Schaltung diese Anforderungen ?

Hast Du schon ein Programm auf den Controller geladen ? oder ist der 
noch "jungfräulich" ;)

von geezer (Gast)


Lesenswert?

Hmmm, mit der Konfiguration habe ich vor ca. 15 Jahren mal schaffen 
müssen... wenn ich es recht erinnere, ist es beim BDM über Parallel 
elementar wichtig, den Parallelen Porttreiber richtig zu konfigurieren 
(also ob EPP etc). Wie man das unter Linux macht, weiss ich nicht, 
damals unter Windows mußte ich das in der BIOS Konfiguration verbiegen.

Das BDM Interface war damals extrem fehleranfällig und empfindlich, es 
wollte nur in ganz bestimmten Konfigurationen laufen (bei der VM tippe 
ich mal auf heftige Virtualisierungsprobleme).

Good luck!

von Steffen Hausinger (Gast)


Lesenswert?

G. S. schrieb:
> Da wird der BDM Mode ein wenig genauer beschrieben. Erfüllt deine
> Schaltung diese Anforderungen ?

Ja, auf der Hardware-Seite passt es. Ich bekomme mit BD32 eine 
Verbindung und kann damit Register auslesen und auch debuggen. Alles 
funktioniert.

Auch mit den BDM Tools kann ich prinzipiell auf die Hardware zugreifen: 
es gibt extra ein Testprogramm namens "bdm-cpu32-chk", welches genau das 
prüft. Es funktioniert bei mir einwandfrei.



G. S. schrieb:
> Hast Du schon ein Programm auf den Controller geladen ? oder ist der
> noch "jungfräulich" ;)

Es ist bereits ein Programm geladen (externer ROM).



geezer schrieb:
> Das BDM Interface war damals extrem fehleranfällig und empfindlich, es
> wollte nur in ganz bestimmten Konfigurationen laufen (bei der VM tippe
> ich mal auf heftige Virtualisierungsprobleme).

Ja, das kann ich bestätigen. Ich habe erst mit dem public-domain Nachbau 
begonnen und bin dann zum ICD gewechselt. Vor Kurzem habe ich mir nun 
einen Pentium-I gekauft und Windows 95 darauf installiert. Inzwischen 
läuft es recht stabil.



Leider habe ich den GDB immer noch nicht ans Laufen gebracht.

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.