Forum: Mikrocontroller und Digitale Elektronik Tiny45, Mac OS, JTacICE mk2


von Holler (Gast)


Lesenswert?

Habe lange nichts mehr mit uC unternommen, habe jetzt aber Bedarf: für 
den Zweck genügt ein Atmel Tiny 45 aus meinem Bestand. Habe noch einen 
angestaubten JtagICE mk2 mit DebugWIRE-Support. Habe den früher mit Avr 
Studio unter Windows 7 betrieben.
Den PC gibts nicht mehr. Hätte einen Notebook mit Mac OS X und ggf. 
einen Linux Rechner.

Frage: kann ich den Jtagice mk2 sinnvoll ohne Windows einsetzen?
Wie würde man heute so ein Mini-Projkt angehen, welche Tools?
Assembler genügt für meinen Zweck.

von M. K. (sylaina)


Lesenswert?

Schau dir mal das Crosspack an 
(https://www.obdev.at/products/crosspack/index-de.html), ist zwar etwas 
älter, benutze ich aber auch. Es beinhaltet avrdude 6.0.1, den avr-gcc 
4.3, läuft ab Snow Leopard, kann das JTAG MK2 und den Attiny45 in ASM 
und C, außerdem kann man zum Coden Xcode verwenden oder Eclipse mit dem 
entsprechenden AVR-Plugin. Bei Xcode >= 4 empfehle ich Eclipse da bei 
diesen Xcode-Versionen das Code-Folding nicht mehr funktioniert. Eclipse 
ist hier dann viel kompfortabler, vor allem kann man auch aus Eclipse 
noch das Flashen starten (geht bei Xcode nicht, muss man aus dem 
Terminal heraus machen) und auch das Setzen der Fuse ist da besser.

: Bearbeitet durch User
von Holler (Gast)


Lesenswert?

Danke für die detaillierte Antwort, passt perfekt für meinen Zweck! 
Hatte kaum noch mit einer Rückmeldung gerechnet.

Eclipse kenne ich noch aus der Zeit von Symbian OS (Nokia). Mal gespannt 
wie das heute aussieht.

von Holler (Gast)


Lesenswert?

Muss nochmal nachfragen, bekomme das System nicht zum Laufen:

- Das CrossPack AVR mit AVRDude 6.01, gcc etc ist installiert.
- Eclipse mit dem dem AVR Plugin auch, ein kleines Projekt lässt sich 
kompilieren.
- Einen neuen Tiny45 über drei kurze Leitungen an den JTAGICE mkII 
gepackt und mit 2,5V versorgt: Masse, Vcc und Reset/dW.

Will über DebugWire arbeiten, wegen der verfügbaren I/Os am 8-Pin uC.
Liegt vielleicht da schon das Problem?

Egal ob ich einen Upload zum uC versuche oder Fuses auslesen will, es 
kommt eine Timeout-Fehlermeldung:

avrdude: jtagmkII_close(): timeout/error communicating with programmer 
...

Configuration AVRDude:
id    = "jtag2dw";
desc  = "Atmel JTAG ICE mkII in debugWire mode";
baudrate = 115200;
type  = "jtagmkii_dw";
connection_type = usb;

Kommandozeile:
avrdude -cjtag2dw -b19200  [...part specific options...]

Dabei blinken einige LED am JTAGICE mkII und wenn ich einen Oszi an die 
Reiseleitung lege sehe ich ein ca 75ms langes Low. Davor- und danach 
High.

Und wenn ich die 2,5V wegnehme merkt es der AVRDude und es kommt eine 
passende Fehlermeldung.

Deutet vieles darauf hin dass ich mit dem DebugWire etwas falsch mache: 
muss ich die DebugWire Fusel vorher irgendwie anders setzen?

Hatte vor Jahren mal mit DebugWire und unter Windows und AVR-Studio 6 
experimentiert, da konnte ich soweit ich mich richtig erinnere die Fuse 
direkt setzen.

Hoffe mir kann jemand den entscheidenden Hinweis geben, ansonsten:
Guten Rutsch!

von Holler (Gast)


Lesenswert?

Habe erstmal die ISP-Pins SCK, MOSI und MISO angeschlossen, um eine 
Fehlerquelle auszuschalten. Außerdem die ISP-Konfiguration für den 
JTAGICE mkII Debugger für AVRDrude geladen.

Damit gibts eine neue Fehlermeldung:

Launching /usr/local/CrossPack-AVR-20131216/bin/avrdude -cjtag2isp 
-b115200 -pm16
Output:
avrdude: usbdev_open(): did not find any USB device "usb"
avrdude execution aborted

Ist mir auch nicht ganz plausibel, da sich auf den SPI-Leitungen 
durchaus etwas tut.

Konfiguration AVRDrude:
id    = "jtag2isp";
desc  = "Atmel JTAG ICE mkII in ISP mode";
baudrate = 115200;
type  = "jtagmkii_isp";
connection_type = usb;

Hat jemand eine Idee, ist vielleicht etwas mit dem USB_Treiber nicht in 
Ordnung?

von M. K. (sylaina)


Lesenswert?

Bin nicht zu hause, werde morgen mal schaun. Ist deine Zeile zum 
übertragen bzgl avrdude auch richtig? -cjtag2isp sieht mir falsch aus, 
da müsste doch ein Leerzeichen rein und -c jtag2isp stehen, oder?

von M. K. (sylaina)


Lesenswert?

Also bei mir schaut eine Zeile so aus:

avrdude -p atmega328p -P usb -c avrispmkii -b 19200 -U flash:w:main.hex

Leerzeichen sind aber anscheinend kein Problem. Da ich den Atmel JtagICE 
MK II nicht hab kann ich leider auch nicht wirklich sagen was hier das 
Problem sein kann. Da hab ich mit avrdude wieder zu wenig Erfahrung.

von Holler (Gast)


Lesenswert?

Vielen Dank für die Rückmeldung. Anscheinend mag AVRDude meinen JTAGICE 
mkII nicht. Ist soweit ich weiss ein Clone, war aber im Atmel Studio 
nicht unterscheidbar.
Die Leerzeichen sind egal, da hast du Recht.

Meine Komandozeile direkt im Terminal abgeschickt, so dass ich die 
originalen AVRDude-Fehlermeldungen sehe und nicht das was Eclipse daraus 
interpretiert:

_____________________________________________________

avrdude -pt45 -cjtag2isp -P usb -b19200 -B100 -i100 
-Uflash:w:BlinkingLED.hex:a

avrdude: jtagmkII_setparm(): bad response to set parameter command: 
RSP_FAILED
avrdude: jtagmkII_getsync(): ISP activation failed, trying debugWire
avrdude: jtagmkII_setparm(): bad response to set parameter command: 
RSP_DEBUGWIRE_SYNC_FAILED
avrdude: failed to sync with the JTAG ICE mkII in ISP mode
avrdude: jtagmkII_close(): timeout/error communicating with programmer 
(status -1)

avrdude done.  Thank you.
_____________________________________________________

-B100 -i100 sind Bremsen für die Kommunikationsgeschwindigkeit, hilft 
aber auch nicht.

Vielleicht komme ich noch dahinter was hinter "RSP_FAILED" stecken kann.

von Holler (Gast)


Lesenswert?

Habe mal mit Option -v die Kommunikation zum Programmer/Debugger 
getestet, die geht. USB-Kommunikation ist nicht das Problem. Eigentlich 
deutet alles auf einen Verkabelungsfehler zum uC hin, habe ich aber 
schon x-Mal kontrolliert.
Auch 5V statt 2,5V Vcc bringen nichts.

avrdude -pt45 -cjtag2isp -v

avrdude: Version 6.0.1, compiled on Dec 16 2013 at 17:26:24
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is 
"/usr/local/CrossPack-AVR-20131216/etc/avrdude.conf"
         User configuration file is "/Users/Haus/.avrduderc"
         User configuration file does not exist or is not a regular 
file, skipping

         Using Port                    : usb
         Using Programmer              : jtag2isp
avrdude: usbdev_open(): Found JTAGICE mkII, serno: 070000004685
JTAG ICE mkII sign-on message:
Communications protocol version: 1
M_MCU:
  boot-loader FW version:        255
  firmware version:              7.38
  hardware version:              0
S_MCU:
  boot-loader FW version:        255
  firmware version:              7.38
  hardware version:              1
Serial number:                   07:00:00:00:46:85
Device ID:                       JTAGICEmkII
avrdude: jtagmkII_setparm(): bad response to set parameter command: 
RSP_FAILED
avrdude: jtagmkII_getsync(): ISP activation failed, trying debugWire
avrdude: jtagmkII_setparm(): bad response to set parameter command: 
RSP_DEBUGWIRE_SYNC_FAILED
avrdude: failed to sync with the JTAG ICE mkII in ISP mode
avrdude: jtagmkII_close(): timeout/error communicating with programmer 
(status -1)

von Holler (Gast)


Lesenswert?

Bin einen Schritt weiter: nachdem ich zum x-ten Mal die paar ISP-Kabel 
geprüft und für gut befunden habe, wurde der uC gegen einen neuen Tiny45 
getauscht.

AVRDude aus der Kommandozeile erkennt ihn nun!!!

Ich muss den uC irgendwie aus Eclipse heraus abgeschossen haben, 
vermutlich über die Fuses. Eclipse belegt die defaultmäßig mit 00 und 
wenn beim HEX-Upload die Fuse-Programmierung gesetzt ist, ist es um den 
uC vermutlich geschehen.

Habe aber noch ein Problem AVRDude direkt aus Eclipse zu nutzen, hier 
lesen der Fuses:

Launching /usr/local/CrossPack-AVR-20131216/bin/avrdude -cjtag2isp -pt45 
-Ulfuse:r:/var/folders/g5/72xmcgkn19d1z9x1_f0fhgt00000gp/T/fuse0.hex:h 
-Uhfuse:r:/var/folders/g5/72xmcgkn19d1z9x1_f0fhgt00000gp/T/fuse1.hex:h 
-Uefuse:r:/var/folders/g5/72xmcgkn19d1z9x1_f0fhgt00000gp/T/fuse2.hex:h
Output:
avrdude: usbdev_open(): did not find any USB device "usb"
avrdude execution aborted


Genau die gleiche Kommandozeile funktioniert im Terminal. Merkwürdig.

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.