nach, sehr, langer Zeit möchte ich wieder ein wenig programmieren. Da ich keine Lust mehr auf Netzteil, STK 500, breadboard und das ganze Gerödel auf dem Schreibtisch haben möchte, habe ich mir ein Nano V3 Board besorgt.
Treiber ist installiert, Gerät wird erkannt. In Microchip Studio unter "external tools" bereits angegeben wo sich avrdude befindet.
Fehlen nur die "Arguments" Wo finde ich die? Da gibt es doch bestimmt eine Art datasheet wo man sich die einzelnen Argumente raussucht und wo auch steht wie die genau eingetragen werden müssen?
Um "-c" Optionen auf der von Dir verlinkten Seite zu finden, bin ich zu
blöd.
Die -c Option hast du ja eigentlich angegeben. Man darf da auch Leerzeichen nach dem Buchstaben einfügen, und mit „-c arduino“ liest sich das etwas verständlicher.
Mir ist aber noch nicht ganz klar, warum dann trotzdem die Beschwerde kommt, du hättest sie nicht angegeben.
Und in meinem Fall kann das eigentlich nur die richtige Wahl sein.
Das ist so wiederum auch noch nicht völlig sicher.
Es gibt da wohl leider verschiedene Bootloader-Versionen, zusätzlich noch hat die Arduino-IDE lange Zeit eine gehackte, sorry, modifizierte Version von AVRDUDE mit verteilt. Dann wiederum ist noch nicht einmal dein "Nano V3" eine irgendwie brauchbare Angabe: ein originaler Arduino Nano? Ein AZ Delivery Nano V3?
Wobei man gut und gern auch gleich das ELF-File flashen lassen kann. Ein einfaches
avrdude … -U resultfile.elf
genügt vollauf. Die "voll ausgebaute" Argumentsyntax hinter -U braucht man nur für anderen Speicherbereiche als flash (bzw. application flash beim Xmega).
Das ist etwas, was nur die IDE auswerten kann, aber nicht avrdude selbst. Der Dateiname, der an das Kommando -Uflash:w: angehängt wird, wird von der IDE beim Aufruf des Tools zusammengebastelt, also darf das nicht in einer von avrdude auszulesenden Konfigurationsdatei stehen.
Denn avrdude weiß weder, was $(ProjectDir) noch was $(TargetName) ist.
schau genau nach wie der Chip auf der Unterseite beschriftet ist.
Wenn da AZ340 aufgedruckt ist hast die einen gefakten Chip der geht nicht mit dem WCH Treiber.
Du musst dir dann ein anderes Board beschaffen, oder einen Treiber suchen der mit der Fälschung klar kommt.
Das ist etwas, was nur die IDE auswerten kann, aber nicht avrdude
selbst. Der Dateiname, der an das Kommando -Uflash:w: angehängt wird,
wird von der IDE beim Aufruf des Tools zusammengebastelt, also darf das
nicht in einer von avrdude auszulesenden Konfigurationsdatei stehen.
Denn avrdude weiß weder, was $(ProjectDir) noch was $(TargetName) ist.
Er will doch aber gerade Mikrochip Studio verwenden und nicht avrdude solo?
Zu avrdude gehört auch immer eine .conf Datei in der Ziel-Mikrocontroller und Programmiergeräte beschrieben sind. Kann es sein, dass das Programmiergerät "arduino" nur in der von der Arduino IDE mitgelieferten avrdude.conf existiert ?
Andererseits äfft der Arduino Bootloader ein Programmiergerät nach Application Note 910 nach. Auch die auf dem Eval-Board STK500 enthaltenen Programmiergeräte funktionieren in der Art.
Der Bootloader der Arduino Boards hat halt nur die Einschränkungen, dass er nicht die ID Bytes des Mikrocontrollers liest und ausgibt, wenn er danach gefragt wird, sondern in der Bootloadersoftware verankerte Konstanten. Auch die Fuse-Bits kann man nicht per Bootloader schreiben. Das Kommando Full-Chip-Erase kann natürlich auch über den Bootloader nicht wie bei einem externen Programmiergerät funktionieren.
Kann es sein, dass das Programmiergerät "arduino" nur in der von der
Arduino IDE mitgelieferten avrdude.conf existiert ?
Wenn sie derjenige, der AVRDUDE auf dem Computer installiert hat, nicht explizit modifiziert hat: nein. "arduino" ist bereits seit vielen Jahren ein gültiger Programmer-Eintrag. Im Wesentlichen ein STK500v1, aber leicht modifiziert.
Das konnte ich aber bei "avrdude-v8.0-windows-x64.zip" z.B. nicht
finden.
Der MinGW-Build im CI sollte es eigentlich mit bauen, nur der MSVC-Build nicht:
1
mingw:
2
runs-on: windows-latest
3
…
4
install: >-
5
…
6
mingw-w64-${{matrix.env}}-python
7
mingw-w64-${{matrix.env}}-swig
Python und SWIG sind erstmal die Voraussetzungen, dass das GUI überhaupt gebaut werden kann.
Allerdings werden die entsprechenden Ergebnisse offenbar nicht installiert:
1
- name: Archive executables
2
uses: actions/upload-artifact@v3
3
with:
4
name: avrdude-mingw-${{matrix.env}}
5
path: |
6
build/src/avrdude.exe
7
build/src/avrdude.conf
Ich bin aber hinsichtlich der Github-Workflows arg unterbelichtet. Ich habe mal probiert, ob ich in meinem Fork des offiziellen Repos den Workflow-Script so modifizieren kann, dass er die entsprechenden Teile mit archiviert.
Was man auf jeden Fall dann noch auf dem Zielsystem benötigt ist ein Qt5 mit PySide2 oder Qt6 mit PySide6. Das können und dürfen wir natürlich nicht mit ausliefern, aus lizenzrechtlichen Gründen.
Ich habe mal probiert, ob ich in meinem Fork des offiziellen Repos den
Workflow-Script so modifizieren kann, dass er die entsprechenden Teile
mit archiviert.
Pah:
Starting January 30th, 2025, GitHub Actions customers will no longer be able to use v3 of actions/upload-artifact or actions/download-artifact.
Da bin ich natürlich jetzt genau zur Deadline rein getappt. :-/
Also: Ich habe die Arduino IDE installiert und das Nano "spricht" mit mir. Es hat aber darauf bestanden mit dem "old bootloader" gefüttert zu werden.
@ Jo U. : Command-Fenster? Arguments_Fenster? Wo finde ich das?
@ Thomas Z: Beide Chips ohne Beschriftung. Aber dass er mit der Arduino IDE spricht ist doch ein gutes Zeichen?
@Arduino F. : Welche Zeile muss ich wo kopieren? Und: "-b57600" hatte ich eingetragen.
@Flunder : Die conf Datei ist ein Teil von einem avrdude den ich aus dem Netz habe: "avrdude-v8.0-windows-mingw-x64" In der dazugehörenden conf Datei ist auch "arduino" aufgeführt.
Die conf Datei ist ein Teil von einem avrdude den ich aus dem Netz habe
Das solltest du nicht tun.
Gerade „große“ Versionssprünge werden dann angesetzt, wenn sich irgendwas inkompatibel geändert hat, und Änderungen der Konfigurations-Syntax gehört da gut und gern mit dazu.
Die conf Datei ist ein Teil von einem avrdude den ich aus dem Netz habe
Das solltest du nicht tun.
Gerade „große“ Versionssprünge werden dann angesetzt, wenn sich
irgendwas inkompatibel geändert hat, und Änderungen der
Konfigurations-Syntax gehört da gut und gern mit dazu.
Die conf Datei ist ein Teil von einem avrdude den ich aus dem Netz habe
Das solltest du nicht tun.
Gerade „große“ Versionssprünge werden dann angesetzt, wenn sich
irgendwas inkompatibel geändert hat, und Änderungen der
Konfigurations-Syntax gehört da gut und gern mit dazu.
WAS sollte ich tun?
Welches avrdude mag Microchip Studio denn? Wie findet man so etwas heraus?
Ein avrdude.conf gehört zu einem avrdude.exe. Beide zusammen benutzen.
Dem Studio ist die exakte Version vermutlich mittelmäßig egal.
Ja selbstverständlich kam das conf zusammen mit dem avrdude. Hab so schon genug Schwierigkeiten.
Es bleibt beim "Error: no programmer has been specified on the command line or in the config file(s); specify one using the -c option and try again" obwohl ich da "-carduino" stehen habe.
Ist jetzt aus dem CI meines privaten Forks, aber der Code selbst sollte identisch mit dem offiziellen Tree sein.
Wie oben geschrieben, du musst Qt + PySide (von Qt gelieferte Python-Integration) vorher installieren. Bei mir startet es unter Wine, beschwert sich dann nur genau über letzteres.
Es bleibt beim "Error: no programmer has been specified on the command
line
Dann müsstest du mal gucken, ob du dem Studio irgendwie entlocken kannst, welches Kommando er denn tatsächlich aufgerufen hat. Diese Ausschrift stammt direkt aus AVRDUDE, aber sie wird nur dann produziert, wenn es keine -c Option gab.
Es bleibt beim "Error: no programmer has been specified on the command
line
Dann müsstest du mal gucken, ob du dem Studio irgendwie entlocken
kannst, welches Kommando er denn tatsächlich aufgerufen hat. Diese
Ausschrift stammt direkt aus AVRDUDE, aber sie wird nur dann produziert,
wenn es keine -c Option gab.
Diese Meldung erscheint wenn ich versuche den von mir im "external tools" erstellten Tool aufzurufen. Wie man dem Studio entlockt was es dabei aufruft weiß ich nicht.
du musst doch eine funktionierende Kommandozeile zur Hand haben die du in einem Terminal eintippst. Vorher brauch man nicht weitermachen. Wenn du immer nur in Microchip Studio rumprobierst, kann das nichts werden. Viel zu viele Fehlerquellen.
Wenn du eine funktionierende Kommandozeile hast, gehts hier weiter.
2 Bsp.:
Beitrag "Re: UPDI Programmer bauen - alias "El Tangas""
"Funktionierende Kommandozeile"? Was ist das? Wo finde ich das?
Bei dir fehlt -C am Anfang der Parameters
versuch mal
-C"C:\Users\attil\Downloads\avrdude-v8.0-windows-mingw-x64\avrdude.conf"-pm328p
-carduino -PCOM5 -b57600 -Uflash:w:
Genial! Leider habe ich trotzdem noch eine Fehlermeldung:
Error: cannot set com-state for \.\COM5
Error: unable to open port COM5 for programmer arduino
Possible candidate serial ports are:
-P COM1
-P COM3
-P COM4
-P COM5 or -P ch340
Note that above ports might not be connected to a target board or an AVR programmer.
Also note there may be other direct serial ports not listed above.
Avrdude done. Thank you.
Mein Nano V3 hängt am COM 5. Ich habe kein serielle Schnittstelle Ausleser am laufen ( Gerne bei Arduino ein Problem)
Ok: Ich hatte jetzt mit der arduino IDE eine vergleichbare Fehlermeldung. Nach Installation eines anderen Ch340 Treibers funktioniert es wieder mit arduino.
Mit Microchip Studio erhalte ich allerdings folgende Fehlermeldung:
OS error: file .hex is not readable: No such file or directory
OS error: cannot open input file Debug.hex : No such file or directory
Error: reading from file .hex failed
Zeige die Einstellungen die UsbTreeView für deinen COM Port ausgibt. Ich vermute immer noch dass du einen Fake CH340 hast und den Original Treiber von WCH installiert hast. DAS FUNKTIONIERT NICHT!
Vendor ID : 0x1A86 (Nanjing Qinheng Microelectronics Co., Ltd.)
Product ID : 0x7523
Manufacturer String : ---
Product String : USB2.0-Ser!
Serial : ---
USB Version : 1.1
Port maximum Speed : High-Speed (Companion Port 1-21 is doing the SuperSpeed)
Device maximum Speed : Full-Speed
Device Connection Speed : Full-Speed
Self powered : no
Demanded Current : 96 mA
Used Endpoints : 4
Und bekomme dies als Fehlermeldung:
OS error: file is not readable:
OS error: unable to open : Invalid argument
Error: cannot determine file format for , specify explicitly
Error: reading from file failed
man muss den Pfad zur avrdude.conf nicht angeben.
Der Pfad zur avrdude.exe reicht aus.
Lesestoff haste erstmal genug. Darfst nur nicht wild probieren, auch wenn das manchmal verleidet, führt am Ende selten zum Ziel.
no programmer has been specified on the command line or in
the config file(s); specify one using the -c option and try
again" obwohl ich da "-carduino" stehen habe.
Und "-carduino" macht das gleiche wie "-c arduino" ?
Ja, das genau hindert mich daran weiter Neugierig zu sein.
Naja, mit irgendwas muss man ein GUI halt bauen.
Qt ist ein netter Toolkit, der ein plattformübergreifendes GUI zumindest überhaupt erstmal ermöglicht. Python wiederum war zusammen mit SWIG der einfachste Weg, um die libavrdude in irgendeine andere Sprache einzubinden.
Das Ganze ist auch eher ein Demonstrator um zu zeigen, dass ein GUI doch einiges mehr oder schöner machen kann, indem es auf der libavrdude aufsetzt statt auf den CLI.
Auf Windows hatte ich es jetzt aber auch noch nicht zum Laufen bekommen. Anbei ein Screenshot von meinem FreeBSD.
Google Suche ergab die üblichen Verdächtigen. Ich konnte aber praktisch alles ausschliessen da es ja mit der Arduino IDE funktioniert. (Hardwarefehler, Bootloader, fehlende Treiber usw.)