Debugging per JTAG mittels define erkennen

Gast #3064519
Lesenswert?

Gibt es im Atmel Studio 6 ein globales define, mit dem ich zu 
compilierzeit feststellen kann, ob das JTAG-Interface zum debuggen oder 
nur zu, Programmieren genutzt wird?
Ich programmiere den mega1284P per JTAG ohne zu debuggen. in dem fall 
kann ich per software das JTAG-Interface im AVR abschalten, weil ich die 
Pins anderweitig benötige.wenn ich nun aber am Debuggen bin, muss ich 
die Zeilen in denen ich JTAg abschalte auskommentieren.
Dies möchte ich nun automatisieren!
#3064547
Lesenswert?

Das kann eigentlich nicht funktionieren.
Wenn du debuggst wurden deine Sourcen ja schon lange kompiliert, sprich 
es ist zu spät da irgendwelche #defines zu setzen

Ich weiss nicht, ob man im Atmel Studio leicht zwischen einerm Build 
Release und einem Debug Release wechseln kann, so wie es zum Beispiel im 
Visual Studio geht(ich befürchte aber das es diese Option nicht gibt)
Dort werden dann je nach gewähltem Release Mode unterschiedliche Defines 
gesetzt, und du könntest z.B. im Release Modus das JTAG Interface 
deaktivieren
Moderator Persönliche Seite #3064603
Lesenswert?

Max schrieb:
> wenn ich nun aber am Debuggen bin, muss ich
> die Zeilen in denen ich JTAg abschalte auskommentieren.

Musst du nicht: das JTD-Bit muss ja in einer zeitlichen Abfolge
zweimal hintereinander geschrieben werden, damit die Abschaltung
wirksam wird.  Wenn du nun einen Breakpoint auf den ersten dieser
Befehle setzt und dann einzelschrittweise durch die zwei Zeilen gehst,
dann ist die Zeitbedingung nicht mehr erfüllt, und die Abschaltung
wird nicht wirksam.
Gast #3064927
Lesenswert?

das is ne gute idee, das werd ich machen.
ich hatte nur die idee, das vielleicht von der entwicklungsumgebung ein 
globales define vorhanden sein könnte, mit dem ich beim compilieren 
schon erkennen kann ob debuggt werden soll oder nur geflasht
Moderator Persönliche Seite #3064941
Lesenswert?

Ich glaube, Atmel Studio unterscheidet in der Tat zwischen "Release"
und "Debug", weil sie das von der Microsoft-Umgebung so geerbt haben.
Ob sie davon abhängig auch ein #define setzen, weiß ich nicht.

Nur: letzten Endes wird man früher oder später immer mal gezwungen
sein, exakt das fertige Programm zu debuggen, und nicht eins, was
sich irgendwie davon dann doch wieder unterscheidet.  Spätestens
am Tag X, an dem entweder die Debug-Version gar nicht mehr in den
Flash passt, oder aber die Debug-Version im Prinzip läuft (nur zu
viele Ressourcen verbraucht), die Release-Version beim Kunden aber
doch bloß nicht.

Von der Warte her bin ich immer ganz vorsichtig mit solchen separaten
Debug-Builds, und debugge lieber gleich die Version, die dann später
auch produktiv werden soll.

Eine weitere Möglichkeit, in der Firmware zu entscheiden, ob man
das JTAG abklemmen soll oder nicht wäre es, wenn man noch einen freien
Pin als Eingang übrig hat: den Pull-up dafür konfigurieren, und zum
Debuggen dann den Pin auf low ziehen.  Bevor die Firmware das JTD
setzt, prüft sie, ob der Eingang auf low steht oder nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren