AVRDUDE kann jetzt auch UPDI am nackten seriellen Port

OP Persönliche Seite #7532572
Lesenswert?

Kann sein, dass was ich hier schreibe, kalter Kaffee ist, in diesem Falle einfach ignorieren.

Bisher hatte ich für erste Gehversuche mit den moderneren Tinys, das Python-Script "pymcuprog" https://pypi.org/project/pymcuprog/ unter Debian 11 genutzt. Nach dem Wechsel auf Debian 12, ließ es sich erst nicht mehr mit "pip install pymcuprog" installieren (mittlerweile hab ich eine Lösung gefunden), aber eigentlich hatte ich es ohnehin nur als Notlösung angesehen und habe auch mit Python und der damit zusammenhängenden Infrastruktur keine Erfahrung. Daher mal den avrdude mit "-c ?" aufgerufen und in der Liste den vielversprechenden neuen Eintrag "serialupdi" gefunden.

1
$ avrdude -c serialupdi -P /dev/ttyUSB0 -p t814 -U flash:w:main.hex:i 
2

3
avrdude: AVR device initialized and ready to accept instructions
4
avrdude: device signature = 0x1e9322 (probably t814)
5
avrdude: Note: flash memory has been specified, an erase cycle will be performed.
6
         To disable this feature, specify the -D option.
7
avrdude: erasing chip
8
avrdude: reading input file main.hex for flash
9
         with 100 bytes in 1 section within [0, 0x63]
10
         using 2 pages and 28 pad bytes
11
avrdude: writing 100 bytes flash ...
12

13
Writing | ################################################## | 100% 0.11 s 
14

15
avrdude: 100 bytes of flash written
16
avrdude: verifying flash memory against main.hex
17

18
Reading | ################################################## | 100% 0.03 s 
19

20
avrdude: 100 bytes of flash verified
21

22
avrdude done.  Thank you.

Also ist mein (nicht einmal geäußerter) Herzenswunsch in Erfüllung gegangen. Vielen Dank an die fleißigen Entwickler von AVRDUDE (Jörg?) und Debian, welches von Version zu Version nutzerfreundlicher wird.

Angehängte Dateien:
(Firma: 1984now) #7532678
Lesenswert?

Gerhard H. schrieb:

Kurze Antwort: JA!

Hast du das auch tatsächlich probiert (zumindest für einige Typen) oder gibst du hier nur die MC-Werbeaussage wieder?

Die habe ich natürlich selber auch gelesen, traue ihr aber, ehrlich gesagt, nicht wirklich über den Weg.

Der Grund ist einfach: Der exorbitante Preis für das Atmel ICE. Das passt irgendwie nicht zusammen. OK, man muss natürlich bedenken, da ist auch noch das SAM-Zeugs mit drin.

(Firma: 1984now) #7532692
Lesenswert?

Wastl schrieb:

Sollte das evtl. bedeuten dass man mit dem Curiosity Nano keine ARMe (ATMEL SAMs) programmieren und debuggen kann?

Das ist wohl so, schließlich sprechen die ja nicht UPDI. Das würde mich aber kein bissel stören, ich mochte die SAMs sowieso nie. Auf ARM-Basis gibt es weit besseres am Markt zu wesentlich geringeren Preisen.

Gast #7532697
Lesenswert?

Ob S. schrieb:

Hast du das auch tatsächlich probiert (zumindest für einige Typen)

Selbstverständlich. Ich habe den Debugger-Teil sogar ganz abgetrennt (obwohl das so nicht vorgesehen und nicht nötig ist). Ein bischen Schrumpfschlauch drum und fertig ist der Mini-Programmer und Debugger für UPDI.

Wastl schrieb:

Aber das Curiosity Nano (ich kenne es nicht weiter) wird doch wohl JTAG können?

Nö das kann es nicht. Und braucht es auch nicht. Was willst Du noch mit dem pininflationären JTAG? Heutzutage reicht ein einzelner UPDI Pin.

#7563566
Lesenswert?

Coole Sache! Weiß jemand mehr über die Hardware-Details der UPDI-Schnittstelle? Also wer spricht wann mit welchen Strömen und Pullups/Pulldowns/Reihenwiderständen?

Hab letztens probiert mit einem Raspberry Pi Pico einen ATtiny424 zu programmieren, doch die Antwort des Tinys kam mit viel zu wenig Pegel raus.

Hatte 3.3V Versorgung, und das Antwortsignal hatte lag etwa zwischen 3.3 und 2.3V, laut Oszilloskop.

OP Persönliche Seite #7563645
Lesenswert?

Der Tx/Rx-Pin (UPDI) des Controllers hat einen Open-Drain-Ausgang und einen sehr hochohmigen PullUp-Widerstand. Üblich sind 2 Varianten den UART (serielle Schnittstelle) vom PC anzukoppeln: Im Eröffnungsbeitrag zu sehen: vom TxD des PC-UART, über einen Vorwiderstand (Beispiel: 470 Ohm) zum UPDI-Pin, den RxD direkt.

Die zweite Variante wäre, den UPDI-Pin über einen Pullup (gleicher Wert wie eben) an die Betriebsspannung, den TxD des UART über eine Diode zum UPDI, so dass nur der Low-Pegel übertragen wird (Kathode zum UART, Anode zum UPDI).

OP Persönliche Seite #7563647
Lesenswert?

Karl Z. schrieb:

Hab letztens probiert mit einem Raspberry Pi Pico einen ATtiny424 zu programmieren, doch die Antwort des Tinys kam mit viel zu wenig Pegel raus.

Hatte 3.3V Versorgung, und das Antwortsignal hatte lag etwa zwischen 3.3 und 2.3V, laut Oszilloskop.

Klingt mir danach, dass dein Serien/Pullup Widerstand etwas zu hochohmig für die Übertragungsrate (üblicherweise 115200 Baud) ist.

#7563808
Lesenswert?

Hatte 3.3V Versorgung, und das Antwortsignal hatte lag etwa zwischen 3.3 und 2.3V, laut Oszilloskop.

Klingt mir danach, dass dein Serien/Pullup Widerstand etwas zu hochohmig für die Übertragungsrate (üblicherweise 115200 Baud) ist.

Ich hab mich etwas unklar ausgedrückt: 2.3/3.3 sind die Pegel für Low/High. Der Open Drain zieht das signal also nicht stark genug nach unten. Ich muss mir die genaue Beschaltung nochmal ansehen. Danke an uebrig.

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