Forum: Compiler & IDEs ATmega16 jtag-Probleme


von Stefan (Gast)


Lesenswert?

Hallo,

ich habe mit dem jtag-Emulator (ATmega16) und gdb/avarice folgendes
Problem:
avarice connected mit dem jtag-Emulator und wartet auf Port 3333 (4242
habe ich auch schon probiert). Sobald ich in insight auf "connect"
gehe, bricht avarice die Verbindung ab und es wird "E01" gemeldet.

Ich benutze WIN98.
Zuerst starte ich:
  avarice -d -f test.bin -j com1 :3333
Dann starte ich insight, lade test.elf, stelle Remote/TCP, localhost,
3333 ein. Dann gehe ich auf "connect to target". Danach werkelt
avarice los und bricht kurz darauf wieder ab, folgende Zeilen werden
dabei ausgegeben:

Output von avarice:
-------------------

Connection opened by host 127.0.0.1, port 3412.
GDB: <Hc-1>
->GDB:
GDB: <qC>
->GDB:
GDB: <qOffsets>
->GDB:
GDB: <?>
->GDB: S05
GDB: <Hg0>
->GDB:
GDB: <g>

GDB: (Registers)Read 32 bytes from 0x800000
jtagRead
command[R, 1]: 52 20 1F 00 00 00 20 20
response: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
07 07 07 0
7 07 07 07 07 07 07 07 07 00 46
->GDB: E01
gdb exited.

command[G, 1]: 47 20 20
response:

Die Einstellungen habe ich von
http://www.avrfreaks.net/phorum/read.php?f=2&i=11328&t=11328
abgeschaut, aber es funktioniert nicht.

Was mache ich falsch?

Danke im Vorraus, Stefan

von Stefan (Gast)


Lesenswert?

Mittlerweile habe ich 2 Scripte gefunden:

gdb-avarcice-script   in \share\avarice    und
ice-gdb               in \bin

mit denen man den Start von insight und avarice wohl automatisieren
kann und die noch eine Menge Zeug einstellen. Mein Problem ist nur: wie
bekomme ich diese Scripte zum laufen??

Bis jetzt habe ich insight und avarice immer direkt gestartet.

Wo finde ich eine Beschreibung der Syntax dieser Scripte, um das Ganze
mal nachvollziehen zu können?

Danke, Stefan

von Joerg Wunsch (Gast)


Lesenswert?

Das dürften Shell-Scripts sein.  Allerdings ist es sicherlich nicht
notwendig, daß Du deren Syntax komplett verstehst, bevor Du sie
benutzen kannst.  Allerdings mußt Du wohl entweder Dein Windows davon
überzeugen, zu deren Ausführung eine Unix-Shell (`bash.exe') zu
benutzen.  Unter Unix wird dies mit der ersten Zeile (#!/bin/sh)
gemacht.

Ggf. einfach starten mit

bash <name des scripts>

von Stefan (Gast)


Lesenswert?

Vielen Dank, Jörg.
Ich habe mir jetzt mal Cygwin installiert und es mit dessen bash.exe
probiert. Die Scripte scheinen damit teilweise zu laufen, an einer
Stelle will er wohl noch einen Perl-Interpreter haben.. Aber das kann
ich mir erst wieder genauer anschauen, wenn die Familie wieder komplett
gesund ist :-(
Klar kann ich die Scripte auch benutzen, ohne dass ich sie verstehe.
Aber ein bischen Hintergrundwissen kann nicht schaden, vor Allem, wenns
mal nicht klappt, wie bei mir gerade mit dem avarice.

Stefan

von Joerg Wunsch (Gast)


Lesenswert?

Hmm, eine bash sollte bei WinAVR eigentlich sowieso schon dabei sein,
»make« benötigt sie zu seiner Kommandoausführung.

Aber Du hast Recht, einer der Scripts ist auch ein Perl-Script.

Klar ist es immer gut, wenn man sich mit den Details ein wenig
auskennt, aber sowohl Unix-Shell als auch erst recht Perl sind zwei
ziemlich komplexe Sprachen, die man (typischerweise) nicht durch Lesen
eines Manuals an einem Abend erlernt.

Perl ist ohnehin syntaktisch ein ziemlicher Mischmasch aus Unix-Shell,
C, awk, paar Pascal-Einstreuungen, und allem, was Larry Wall sonst
noch so in den Sinn kam. ;-)  Aber die Sprache ist mächtig bequem für
alle möglichen Aufgaben vor allem im Bereich der Systemadministration
und hat sich dadurch beliebt gemacht.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

s/komplexe/häßliche/

von Stefan (Gast)


Lesenswert?

Tja, scheint wohl so zu sein, dass avarice unter WIN98 nicht läuft.

Auf meinem XP-System habe ich bisher 2-mal einen Connect zwischen gdb
und avarice gehabt (von unzähligen Versuchen), ich denke, hier ist das
Problem, dass ich keinen "echten" COM-Port habe, sondern nur ein
USB-Replacemet mit FTDI-Chip.

Zur WIN98-Problematik eine Mail, die ich aus Italien bekommen habe:

Hi Stefan,

I have done some tests and I have discover that Insight and avarice
work ok on NT4, XP (probably also Win2K but I have not tested).
I also checked that Insight and simulavr work ok on win98.
So the problem is avarice.
Now I have completed the 2 projects I was working on (atmega8 and
atmega128). To complete the projects I used a double boot PC with Win98
and Xp installed on.

I also have mailed the problems and the tests to avr-gcc-list (see the
complete archive at http://www.avr1.org/pipermail/avr-gcc-list ).

Marc Wetzel tested Insight and avarice on XP PC: he replied that he
will give when he will have some free time (probably he needs to set-up
a win98 system).

I would like to check the problem, but I do not have Cygwin on my PC
and my
internet connection is too slow to download all the package.

So probably we will have the solution between some time.

Patrizio.



Viele Grüße, Stefan

von Bertolt Mildner (Gast)


Lesenswert?

Ich verwende avarice + Insight unter W2k, das Verbinden zum JTagIce
(über normalen COM Port) bzw. zum avarice macht mir keine Probleme.

Allerdings ist das Debugen schnarch langsam, ist hart an der Grenze zur
Unbrauchbarkeit. Das "Durchsteppen" ist (besonders wenn man noch ein
paar Variablen im Watch hat) echt eine Qual.

BTW: Ich hab mir mal eben die avarice Sourcen angesehen und so weit ich
das sagen kann redet avarice bei 115200 Baud mit der JTAG Box und die
Kommunikation zwischen JTAG Box und dem AVR wird auf 1 MHz
eingestellt.
Wenn ich das AS auf die selben Geschwindigkeiten einstelle geht das
Debugen um ein Vielfaches schneller!

Hat wer ne Idee was da los sein könnte?

@Jörg: Verwendest du avarice unter Linux? Wie sieht es da mit der
Geschwindigkeit aus?

Bertolt

von Joerg Wunsch (Gast)


Lesenswert?

Ich verwende AVaRICE unter FreeBSD, also auch einem Unix.

Habe allerdings noch nicht zu viele große Dinge damit erledigt,
insofern kann ich Dir das nicht genau sagen.  Problematisch ist meiner
Erinnerung nach, daß teilweise die Flash-Pages neu programmiert werden
müssen, um breakpoints zu implementieren (sollte allerdings bei
single-step nicht sein).

Außerdem kann ich Dir nicht sagen, ob nicht die Kommunikation zwischen
GDB und Insight zum Flaschenhals werden kann; Du sagt ja selbst, daß
es bei vielen `watches' langsamer wird.  Ich benutze den GDB
ausschließlich direkt (im Emacs, so daß ich eine ,,IDE'' darum
habe),
das ist recht flink.  Ein Konzept wie `watches' benutzt man dort aber
eher selten (im GDB `display' genannt), sondern man läßt sich die
nötigen Variablenwerte meist dann ausgeben, wenn man sie braucht
(mittels `print', der GDB kann beliebig komplexe C-Ausdrücke live
berechnen).

von Bertolt Mildner (Gast)


Lesenswert?

@Jörg:

Oha, ein BSD User der Linux als Unix bezeichnet!? Zur Strafe bekommst
du drei Schläge mit dem Dreizack! :-))))

Also es ist auch ohne Watches sehr langsam.
Es dauert immer mindestens 10 - 15s, auch wenns letztendlich nur eine
ASM Instruction ist :-(

Was die Sache noch verschärft ist dass Insight alle Eingaben während es
beschäftigt ist verwirft -> wenn ich zwei Zeilen weiter will, kann ich
nicht einfach zweimal 'n' (=next) tippen.
Breakpoint setzen ist auch manchmal etwas nervig weil Insight einen
nicht warnt dass man mehr als die erlaubten 3 (oder 4?) Breakpoints
gesetzt hat.

Zur Kommunikation zwischen GDB und Insight:
GDB ist in dem Fall der avarice, oder?

D.h. es ist eine lokale TCP Verbindung. Die sollte doch (sebst unter
Windoof + cygwin/mingw) nicht derart bremsen!?

Bertolt

von Joerg Wunsch (Gast)


Lesenswert?

> Oha, ein BSD User der Linux als Unix bezeichnet!?

Ich habe ja nicht »UNIX[tm]« geschrieben.  Unix (in dieser
Schreibweise) wird gemeinhin als Synonym für »Unix-artige
Betriebssyteme« genutzt (und da sehe ich Linux auf alle Fälle).

*BSD ist ja auch kein UNIX[tm], obwohl es von der Abstammung halt in
einem früheren Leben auch mal dessen Code miterlebt hat. ;-)

Nee, aber 10...15 Sekunden für einen Einzelschritt habe ich nicht so
erlebt.  Kann sein, daß es 1 Sekunde dauert. Ich muß das mal wieder
testen.

> Zur Kommunikation zwischen GDB und Insight:
> GDB ist in dem Fall der avarice, oder?

Nein.  Insight sitzt oberhalb GDB, wahrscheinlich reden die beiden
über eine Pipe miteinaner.  GDB redet mit AVaRICE dann via TCP.

Ich denke, Du bist mit Deinen Fragen auf der avr-gcc Liste besser
aufgehoben, Ted Roth ist sicher die Person #1, die hier zu den
möglichen Verzögerungen, Kommunikationsproblemen usw. etwas sagen
kann, auch wenn er selbst (natürlich :) kein Windows benutzt.  Auf der
Liste hast Du dann auch Eric Weddington wieder mit drauf.  Ich weiß
gar nicht, ob der AVaRICE auch selbst benutzt.

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.