Hallo,
ich habe mir Eclipse und das AVR-Plugin nebst Toolchain heruntergeladen
und es funktioniert auch fast alles. Alles unter Ubuntu 16.04.
Leider kann ich kein Target einstellen, da der Aufruf von avrdude immer
mit der Meldung "The port "/dev/ttyUSB0" for the Programmer "avrisp2" is
blocked.
dmesg liefert:
540.726014] usb 3-2: new full-speed USB device number 3 using xhci_hcd
[ 540.871166] usb 3-2: New USB device found, idVendor=0403,
idProduct=6001
[ 540.871169] usb 3-2: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[ 540.871170] usb 3-2: Product: USB SERIAL CONVERTER
[ 540.873971] ftdi_sio 3-2:1.0: FTDI USB Serial Device converter
detected
[ 540.874374] usb 3-2: FTDI USB Serial Device converter now attached to
ttyUSB0
/dev sieht so aus:
crw-rw---- 1 root dialout 188, 0 Feb 7 15:45 /dev/ttyUSB0
Mein User ist auch der Gruppe dialout zugeordnet.
Ein manueller Aufruf von avrdude liefert:
$ avrdude -p m168 -P /dev/ttyUSB0 -cavrispv2
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
0.01s
avrdude: Device signature = 0x1e9406 (probably m168)
avrdude: safemode: Fuses OK (E:F9, H:DF, L:E2)
avrdude done. Thank you.
Ich möchte Eclipse nicht unter root starten. Hat jemand vielleicht noch
einen Tipp? Besten Dank!
Pete K. schrieb:> Ein manueller Aufruf von avrdude liefert:> $ avrdude -p m168 -P /dev/ttyUSB0 -cavrispv2
In der Konsole von Eclipse wird angezeigt mit welcher Kommandozeile
Eclipse versucht den avrdude zu starten. Zeig mal was da steht, bzw
finde den Unterschied.
Da steht drin:
Launching /usr/bin/avrdude -pm16 -cavrisp2 -P /dev/ttyUSB0 -v
-Uflash:w:OLED.hex:a -Ueeprom:w:OLED.eep:a
Output:
avrdude: Version 6.3
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/home/piet/.avrduderc"
User configuration file does not exist or is not a regular
file, skipping
Using Port : /dev/ttyUSB0
Using Programmer : avrisp2
avrdude: ser_open(): can't open device " /dev/ttyUSB0": No such file or
directory
avrdude done. Thank you.
avrdude execution aborted
Oder starte Eclipse mal neu, evtl ist noch ein vorheriger
Programmierversuch im Hintergrund am Laufen (sieht man auch unten rechts
in der Statusleiste von Eclipse wenn es noch auf irgendeinem nicht
abgeschlossenen oder hängengebliebenen Vorgang herumkaut)
Wenn man den Programmer abzieht und wieder ansteckt, springt er einen
Port weiter. Probier's mal mit /dev/ttyUSB1.
Nach dem Neustarten des Rechners, geht's wieder bei /dev/ttyUSB0 los ;-)
In der "Using Port"-Zeile scheint auch eins zu sein.
[Edit:]
Anscheinend packt das AVR-Plugin das -P und das /dev/ttyUSB0 beim
Starten des Prozesses in das selbe argv Element (etwa so als hätte man
in einer Shell "-P /dev/ttyUSB0" geschrieben) und das was das Plugin
dann in der Konsole ausgibt was angeblich übergeben wurde hat nichts
mehr mit dem zu tun was eine Shell mit dem Leerzeichen gemacht hätte
(die würde zwei Argumente draus machen).
Ich kann Deinen Fehler reproduzieren wenn ich in den
avrdude-Einstellungen von Eclipse vor dem Devicenamen ein Leerzeichen
einfüge.
Die Fehlermeldung in dem Popup (von wegen blockiert) ist auch
irreführend und aus der Luft gesaugt und hat nichts mit der
Fehlermeldung zu tun die avrdude eigentlich wirklich liefert.
[Edit2:]
Ganz unten im Fehler-Popup steht der wahre Grund (no such file) das
hättest Du lesen und hier komplett zitieren sollen, nicht nur den ersten
Satz. Merke: Immer vollständige Fehlermeldungen. Immer alles zuende
lesen.
Vielen Dank für die Hilfe. Jetzt komme ich ein Stück weiter, allerdings
kommt eine nächste Fehlermedung (siehe Screenshot).
Ich kann den MCU-Type auch nicht manuell setzen, die Combobox zur
Auswahl ist ausgegraut.
Jemand anders muss übernehmen, ich hab grad nichts funktionsfähiges zur
Hand das ich bei mir mal anschließen könnte zwecks Vergleich. Aber auch
hier wieder wäre es interessant zusätzlich auch die komplette
Konsolenausgabe von avrdude zu sehen die zu diesem Fehler führt, evtl
versteckt sich da noch ein Hinweis.
Wo bekomme ich die Konsolenausgabe her? Vorhin habe ich einfach eine
Übertragung gestartet, das geht jetzt nicht.
Und in der Build-Console stehen keine AVR Details.
Ich habe keinen Schalter für die AVR-Console gefunden.
Pete K. schrieb:> Ich kann den MCU-Type auch nicht manuell setzen, die Combobox zur> Auswahl ist ausgegraut.
Da war doch neulich irgendwas, ich hab über das selbe Problem (Plugin
hat keinen einzigen Controller in der Liste) in einem anderen Thread
gelesen. Irgendwer hier wird sich erinnern können.
Pete K. schrieb:> Wo bekomme ich die Konsolenausgabe her?
Im Konsolentab von Eclipse (das hat auch ein kleines Dropdown oben,
zweites von rechts bei dem man zwischen verschiedenen Konsolen
umschalten kann (build console, gdb, etc.), eine davon ist AVRDude)
In den Screenshot siehst Du wo man die Konsole auswählt. In meinem
Beispiel habe ich einen Upload auf den Arduino gestartet aber der
Arduino war nicht angeschlossen. Grün zu sehen ist die
Orginalfehlermeldung vom avrdude.
Aber das Problem daß die MCU-Auswahlbox bei Dir leer ist (da müsste eine
lange Liste von AVRs sein) deutet auf den anderen Fehler hin der hier
letztens mal diskutiert wurde, ich glaube ein möglicher Fix war
irgendeine gepatchte Version den Plugins zu nehmen.
Erstaunlicherweise habe ich das Problem noch nie gehabt, obwohl ich das
ganz normale Plugin in der offiziellen Version habe.
Habe das jetzt mal mit dem Plugin aus
Beitrag "Helpthread zum Wikiartikel AVR Eclipse" probiert, geht auch nicht.
Kann es sein, dass der avr-gcc hier Probleme macht? Siehe Screenshot
anbei.
Compilieren und Linken ist aber kein Problem. (Versionen siehe oben)
Habe jetzt auf die aktuellste Neon Version von Eclipse upgedated und im
Window->Preferences Window fehlt wohl eine Datei mit den AVR Typen.
Kennt jemand diese Datei und weiss, wie diese aussehen soll?
OK, jetzt bekomme ich die MCU-Liste angezeigt. Ich habe nach der
aktuellen Neon Version 4.6.2 das Plugin 2.4.2 manuell eingespielt und
nun geht es.
Nachtrag: Wenn ich auf "Load from MCU" klicke, dann bekomme ich diesen
Output: