Hallo, ich hab da Fragen bezüglich Tracing und Debbuging. Ich habe selber noch nicht so viel mit Debbugern gearbeitet (bisher nur mit dem Dragon). Von einem Freund habe ich mir jetzt mal den AVR One geliehen. Ich arbeite mit AVR32 Studio 2.5.0 und nutze "quasi" das EVK1100 Board. Nun zu meinen Fragen: (1) Was ist der Unterschied zwischen "Non-intrusive Real-Time Trace" und "Intrusive Real-Time Trace" ??? Mit "Real-Time Trace" kann ich was anfangen, aber nicht mit "non-intrusive". Ich hab mal geschaut was der AVR One mehr kann als der JTAGICE mkII. Und da stand: AVR One: • Nexus and JTAG Interface • Non-intrusive Real-Time Trace • Run-Time Control (Run, Stop, Single-step, Reset) • Program Flash and Fuses JTAGICE mkII • JTAG Interface • Run-Time Control (Run, Stop, Single-step, Reset) • Program Flash and Fuses (2) Wenn ich auf einem Board keine Nexus-Schnittstelle unterstütze, sondern nur die JTAG, habe ich dann trotzdem volle Debbug-Funktionalität mit dem AVR One? (3) Hab ich das richtig verstanden, dass ich mit dem AVR One (aufgrund des für die Trace-Ausgaben zugeordneten begrenzten Speichers) nur gezielte Programmstellen Tracen kann (Instruction or Program Trace)? (4) Gibt es die Möglichkeit selbstdefinierte Trace-Meldungen an vielen Stellen im Programmcode zu setzten, die dann bei durchlaufen an den Debbuger geschickt werden und dieser diese Aufzeichnet? Ich hatte auf die Schnelle diese Meldungen über eine RS232-Schnittstelle rausgeschickt und die Ausgaben mit dem HyperTerminal in einer Datei gespeichert. Die schnelle Lösung hatte aber erhebliche Performance-Einbußen und ein anderes zeitliches Verhalten dss Systems bedeutete. Jetzt dachte ich, ich könnte das über den AVR One realisieren. Geht das? Danke für eure Zeit und Antworten. Thomas
Also, non-intrusive-Trace soll bedeuten, dass über die NEXUS-Schnittstelle jede Befehlsabarbeitung des Prozessorkerns über den Hilfsport ausgegeben und vom AVR32-Studio über die GUI angezeigt und in einer Datei gespeichert werden. Ich habe das mal bei einem Workshop vorgeführt bekommen. Dabei wird die Microkontrollergeschwindigkeit nicht beeinträchtigt (non-intrusiv). Man bekommt dann aber ungefiltert riesen Datenmengen. Das funktioniert nur Prozessoren, die auf der Hardware dafür vorbereitet sich. Das gilt insbesondere für die AVR32-Prozessoren. Um die Datenflut in den Griff zu bekommen, setzt man Triggerpunkte analog zu den Break-points ein, die erst ab einem Point of interesst die Datenerfassung und ausgabe startet. Dann wird noch unterschieden in Programm-Trace und Data-Trace. Programm-Trace ist schon oben erwähnt. Data-Trace sollte Analog zum Data-Breakpoint des statischen Debuggens mit sofortiger Fortsetzung der Programmausführung funktionieren. Nur eben ohne messbare Unterbrechung bei der Rechnergeschwindigkeit. Bei intrusive-Trace wird lt. Atmel-Tutorial im RAM ein großer Bereich für das Zwischenspeicher der Ausführungsdaten reserviert und über JTAG nicht AUX-Port ausgegeben. Dabei muß die Programmausführung für die Dauer der Übertragung gestoppt werden. Mit dieser Technik sollte sogar ein ATmega - getraced werden können. Ich habe das noch nicht ausprobiert. Zw. NEXUS und JTAG-OCD ist der Unterschied, das NEXUS die Kodierungen für die statischen Debugvorgänge (set break point, release break point , etc.) fest und verbindlich vorschreibt. Siehe dazu private-Befehle unter OCDs des AT(x)mega. Diesen Code bekommt man von Atmel erst dann, wenn man ein NDA unterschreibt und mit dem Wissen kommerziell tätig wird. NEXUS ist ein Versuch hier mehr Transparenz zu schaffen und den Third-Party-Toolherstellern eine Chance zu bieten, universelle Technik zu entwickeln, die preislich bezahlbar bleibt. Ein gutes Gegenbeispiel sind die Trace32-Produkte von Lauterbach. Deine Frage nach der Ausgabe über TRACE würde ich mit Nein beantworten. Denn der Data-Trace-Point erfüllt ja so in etwa diesen Zweck. Eine Ausgabe erübrigt sich somit. Soweit meine Infos - ohne Anspruch auf Fehlerfreiheit.
Der Nexus Connector is ein superset zum JTAG, beinhaltet den JTAG plus eine 16bit parallele Verbindung. Daher denk ich wenn man nur JTAG hat, verpasst man zumindest die moegliche Geschwindigkeit. Moeglicherweise koennen die internen Tracebuffer nur parallel ausgelesen werden.
Vielen Dank für eure SCHNELLEN Antworten!!!! Das hat mir enorm weitergeholfen. Oft kommt das Verständis des Ganzen durch die Praxis und weniger durch die Theorie. Daher freue ich mich darüber, dass ihr eure Erfahrungen teilt. Danke und schönes Wochenende Thomas ------------- Hatte eigentlich erwartet, dass ich ne E-Mail zugeschickt bekomme, wenn mir jemand auf meine Frage antwortet. Da kam aber nix - daher erst jetzt meine Rückmeldung. Muss wohl noch mal in den Einstellungen schauen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.