Forum: Mikrocontroller und Digitale Elektronik AT90CAN booted manchmal -> JTAG debugger ?


von Karsten K. (karsten42)


Lesenswert?

Moin Moin,

Ich versuche ein At90CAN128 mit zwei SJA1000 als CAN-Router zu 
entwickeln. Router daher, weil bestimmte Daten nur an den einen oder 
anderen SJA1000 weiter geleitet werden sollen.

Nun habe ich das Problem, das der AT90CAN an einer Bestimmten Stelle 
einfach neu startet. Ich vermute, dass ich irgendwo wild im Speicher 
herumschreibe; ich kenne das zumindest aus "normalen" C-Projekten wobei 
das OS freundlich ein SIGSEGV schickt und man zumindest weiss woran man 
ist.

Um der Sache wirklich auf den Grund gehen zu können benötige ich wohl 
ein JTAG Debugger? Der JTAGICE MK3 scheint mir geeignet dafür zu sein. 
Doch etwas mehr als 100,- EUR sind für mich eine Menge Geld. Auch müsste 
ich dann wohl das ATMEL Studio nutzen was mir etwas widerstrebt. Ich bin 
da so ein UNIX Purist und arbeite mit Vi ald IDE.  Aber ohne 
vernünftigen Debugger werde ich nicht weiter kommen.

Kurz:
Ist der JTAGICE MK3 die richtige Wahl um meinem Problem auf die Schliche 
zu kommen?

Besten dank für Tips!

Karsten

von holger (Gast)


Lesenswert?

>Um der Sache wirklich auf den Grund gehen zu können benötige ich wohl
>ein JTAG Debugger?

Meistens reicht genaues hinsehen und ein paar printf;)

von Karsten K. (karsten42)


Lesenswert?

Moin Holger,

Kannst mir glauben, das ich das schon intensiv gemacht habe. Wenn ich 
z.B. die uart lib entferne gehts wieder. Nur ist damit noch lange nicht 
nachgewiesen, das das Problem in der uart lib von Peter Fleury ein 
problem hat.
Auch gehts wenn ich den Optimizer ausschalte, aber auch das beseitigt ja 
nicht die Ursache :-(

Danke aber für den Tipp,

gruß
Karsten

von Rudolph (Gast)


Lesenswert?

Mach doch erstmal Debug-Ausgaben auf dem CAN um das Problem 
einzukreisen.

Warum eigentlich einen 90CAN und zwei SJA1000? Drei CAN-Busse?
Hast Du die SJA1000 an das externe Speicher-Interface gehängt?

von Karsten K. (karsten42)


Lesenswert?

Hallo Rudolph,

Printf Ausgaben zeigen, dass beim Testen in einer ISR ob ein Buffer mit 
einer Message vorliegt wahrscheinlich zu diesem Problem führt. Wir die 
Zeile mit der Zuweisung an *buf auskommentiert gibt es keinen reboot 
mehr. Dazu muss aber auch ein can_t *buf = NULL; eingefügt werden. Das 
gleiche erreiche ich aber auch, wenn ich keine debug Meldungen menr 
nutze ( Herr Heisenberg hat dann zugeschlagen )
1
ISR(INT0_vect)  {
2
3
  static uint8_t tmp = 0;
4
5
  can_t *buf = can_buffer_get_dequeue_ptr(&buf_control);
6
7
  // check if there are any another messages waiting 
8
  if (buf != NULL) {
9
10
    can_buffer_dequeue(&buf_control);
11
    _send_message(buf, SJA1);
12
    
13
  } else {
14
  
15
           active = 0;
16
17
  }
18
19
  // reset TIE interrupt
20
  tmp = (*((uint8_t *) (base[0] + IR)));
21
}

Ja, leider drei getrennte CAN-Bus. Es ist ja auch ein "router" und in 
Wahrheit liegt hinter einem SJA1000 noch ein CAN-HUB mit bis zu 8! 
getrennten CAN-Traceivern. Leider macht die Hardware der angeschlossenen 
geräte das notwendig, da diese alle einen fest eingebauten 
Abschlusswiderstand beinhalten.

Gruß
Karsten

von Frank K. (fchk)


Lesenswert?

Karsten K. schrieb:

> Ist der JTAGICE MK3 die richtige Wahl um meinem Problem auf die Schliche
> zu kommen?

Ja! Damit arbeitet es sich aus meiner Erfahrung heraus deutlich 
produktiver. Für professionelles Arbeiten, wo Zeit Geld isst, ist das 
unverzichtbar. Und 100€ sind noch preiswert. Das Vorgängermodell hat 
fast 300€ gekostet.

Du hättest natürlich auch einfach einen LPC2294HBD144/01 nehmen können. 
Der 4 CAN Interfaces, und ein FT2232-basiertes OpenOCD-JTAG gibts schon 
für 20€. Aber wahrscheinlich kennst Du nichts anderes als AVR.

fchk

von Jochen .. (nevtag)


Lesenswert?

Nun unter Unix/Linux bietet sich ja openocd an.
Läuft bei mir mit einme jtag Wiggler Nachbau auf einem Debian System mit 
par-Port bestens. Und es ist eine Kostengünstige alternative, gibt es 
bei ebay bereits für 9-12 euro.

von Karsten K. (karsten42)


Lesenswert?

Hallo Frank,

O.K. dann investiere ich das Geld für den JTAG Debugger.

Nur weil ich mich ein wenig mit AVR auskenne bedeutet das ja nicht, das 
ich nicht mit anderen Mikrocontrollern arbeiten wollte. Jedoch ist das 
ja Hobby und LQFP144 ( SOT486-1 ) Gehäuse sind für mich eindeutig nicht 
mehr handelbar. Die Kosten für eine Entwicklungsumgebung für einen 
LPC2294 kämen nochmals hinzu. Es ist aber ein sehr interessanter Chip! 
Danke für den Tipp!

Gruß
Karsten

von Frank K. (fchk)


Lesenswert?

Karsten K. schrieb:

> mehr handelbar. Die Kosten für eine Entwicklungsumgebung für einen
> LPC2294 kämen nochmals hinzu.

Du möchtest für einen gcc und einen gdb Geld bezahlen?
http://www.emdebian.org/about/

Und wenn Du ein TQFP64 löten kannst, kannst Du das bei einem TQFP144 
auch. Sind halt ein paar mehr Pins.

fchk

von Rudolph (Gast)


Lesenswert?

Frank K. schrieb:
> Und wenn Du ein TQFP64 löten kannst, kannst Du das bei einem TQFP144
> auch. Sind halt ein paar mehr Pins.

0,5 mm Pitch sind aber schon was anderes als 0,8 mm.

von Rudolph (Gast)


Lesenswert?

Ich habe gerade den hier gefunden bei Atmel:
http://www.atmel.com/tools/atatmel-ice.aspx?tab=overview

    Programming and on-chip debugging of all Atmel AVR 32-bit MCUs on 
both JTAG and aWire interfaces
    Programming and on-chip debugging of all Atmel AVR XMEGA® family 
devices on both JTAG and PDI 2-wire interfaces
    JTAG and SPI programming and debugging of all Atmel AVR 8-bit MCUs 
with OCD support on either JTAG or debugWIRE interfaces
    Programming and debugging of all Atmel SAM ARM Cortex-M based MCUs 
on both SWD and JTAG interfaces
    Programming of all Atmel tinyAVR® 8-bit MCUs with support for the 
TPI interface


http://de.farnell.com/jsp/displayProduct.jsp?sku=2407171&action=view&CMP=GRHS-1000082
http://de.farnell.com/jsp/displayProduct.jsp?sku=2407172&action=view&CMP=GRHS-1000082

So richtig Infos gibt es noch nicht dazu, vielleicht im Studio.
Die billigere Variante könnte wie der Dragon ohne Gehäuse sein,
die teurere Version kostet bei Farnell 47,25 Euro plus Märchensteuer.

Nett.

von Karsten K. (karsten42)


Lesenswert?

Moin Frank,

Nun, TQFP44 mit 0.8pitch ging gerade noch so von Hand. Den AT90CAN128 
habe ich wohlweißlich als Header-Board von Olimex. Gleichartiges für den 
LPC2294 kostet dort ca. 80,- EUR. Dann habe ich aber noch keinen JTAG 
Debugger :-(

Also eine Platine für ein 0.5Pitch 144 Pin selber herstellen und löten 
ist einfach ausserhalb meiner Fertigkeiten.

Ich werde ja leider nicht besser programmieren können nur weil ich einen 
tolleren Mikrocontroller einsetze.Ich werde also versuchen meinen Fehler 
mit dem JTAG Debugger zu finden, daraus lernen und weiter machen.

@Rudolph
Hei, Danke für den Link. Ich versuche da mal etwas schlauer draus zu 
werden ob es das ist was ich benötige


Einen Schönen Restsonntag noch :-)


Karsten

von Frank K. (fchk)


Lesenswert?

Karsten K. schrieb:

> Hei, Danke für den Link. Ich versuche da mal etwas schlauer draus zu
> werden ob es das ist was ich benötige

Dieses Teil ist noch ganz frisch, das wirst Du anfangs nur und 
ausschließlich in der ganz aktuellen AVRStudio Version einsetzen können. 
Den JTAGice3 kannst Du auch mit avrdude und avarice benutzen.

fchk

von Frank K. (fchk)


Lesenswert?

Karsten K. schrieb:

> Also eine Platine für ein 0.5Pitch 144 Pin selber herstellen und löten
> ist einfach ausserhalb meiner Fertigkeiten.

Platinen mache ich schon lange nicht mehr selber, die Zeiten sind 
vorbei. Es gibt genügend Fertiger, wo Du Dein .brd oder Dein Gerber 
hochlädst und für nicht allzu viel Geld ein professionell gefertigtes 
Board zurück bekommst, mit Lötstopplack, Durchkontaktierungen und wenn 
es sein muss auch mehr als zwei Lagen. Dann sind mit etwas Übung und dem 
richtigen Flussmittel (Gel aus der Spritze) auch 0.5mm kein Problem.

fchk

von MiWi (Gast)


Lesenswert?

Rudolph schrieb:
> Frank K. schrieb:
>> Und wenn Du ein TQFP64 löten kannst, kannst Du das bei einem TQFP144
>> auch. Sind halt ein paar mehr Pins.
>
> 0,5 mm Pitch sind aber schon was anderes als 0,8 mm.

naja, der große Sprung ist vom 1,27-Raster auf die 0,8mm, der Rest ist 
nicht mehr so heikel

gutes Werkzeug ist für beide nötig (Lötkolben, Flußmittel, Lötsauglitze, 
Lupe etc)


Grüße

MiWi

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.