Forum: Mikrocontroller und Digitale Elektronik Atmel-ICE mit AVR unter Linux / atprogram.exe-Ersatz


von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Hallo Zusammen,

für einen räumlich entfernten Kollegen, der unter irgendeinem Linux 
arbeitet, suche ich ein Commandline-Werkzeug das die Funktion von 
atprogram.exe übernimmt.

Konkret möchte ich über den Atmel-ICE in einem Tiny1616 einen UPDI-Reset 
ausführen. In atprogram.exe sähe das ungefähr so aus:
atprogram -t atmelice -i updi -d attiny1616 reset

Das Kommando soll in ein Skript eingebaut werden.

Ich habe selbst aktuell kein Linux hier, möchte dem Kollegen aber 
zumindest einen Tipp geben können.

Danke,
 marcus

von Jim M. (turboj)


Lesenswert?

Schau Dir mal avrdude an.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Danke für die Rückmeldung.
Ich hatte vor meinem Eingangspost ein bisserl rumrecherchiert, wurde 
aber aus den Suchergebnissen, inkl. avrdude, nicht schlau.

->
Konkret möchte ich über den Atmel-ICE in einem Tiny1616 einen UPDI-Reset
ausführen. In atprogram.exe sähe das ungefähr so aus:
atprogram -t atmelice -i updi -d attiny1616 reset
<-

Bezüglich avrdude:
Wie würde das von mir beschriebene Kommando mit avrdude aussehen?

von Axel S. (a-za-z0-9)


Lesenswert?

Marcus H. schrieb:
> Konkret möchte ich über den Atmel-ICE in einem Tiny1616 einen UPDI-Reset
> ausführen.

Was nennst du "einen UPDI-Reset"? Willst du einfach nur ein Reset auf 
dem Target-µC ausführen?

> In atprogram.exe sähe das ungefähr so aus:
> atprogram -t atmelice -i updi -d attiny1616 reset
>
> Wie würde das von mir beschriebene Kommando mit avrdude aussehen?

Da man den µC reseten muß, um mit ISP oder UPDI zu sprechen, würde ich 
einfach irgendeine lesende Operation ausführen. Z.B. ein Fuse-Byte 
lesen. Natürlich muß man avrdude den µC und vor allem den Programmer 
(ATMEL ICE im UPDI Modus) richtig verklickern. Dazu braucht man die -p 
und -c Kommandozeilenoptionen.

Allerdings braucht man eine brandneue avrdude Version, die das ICE als 
UPDI Programmer unterstützt. Ich habe weder ein ICE noch einen UPDI 
fähigen µC, deswegen kann ich das nicht testen.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Axel S. schrieb:
> Marcus H. schrieb:
>> Konkret möchte ich über den Atmel-ICE in einem Tiny1616 einen UPDI-Reset
>> ausführen.
>
> Was nennst du "einen UPDI-Reset"? Willst du einfach nur ein Reset auf
> dem Target-µC ausführen?

Das hier:
-> atprogram -t atmelice -i updi -d attiny1616 reset <-
Reset der MCU über UPDI. Der Resetcontroller zeigt dann der Firmware 
beim Start, dass UPDI die Resetquelle war (statt WDT oder POR). Damit 
wird ein für diesen Reset spezifisches Verhalten ermöglicht.

>
>> In atprogram.exe sähe das ungefähr so aus:
>> atprogram -t atmelice -i updi -d attiny1616 reset
>>
>> Wie würde das von mir beschriebene Kommando mit avrdude aussehen?
...
> Allerdings braucht man eine brandneue avrdude Version, die das ICE als
> UPDI Programmer unterstützt. Ich habe weder ein ICE noch einen UPDI
> fähigen µC, deswegen kann ich das nicht testen.
Ich finde keine avrdude Doku, die beschreibt wie der Befehl aussehen 
sollte.
Ein Linux in einer VM würde ich zum Testen noch zur Not noch aufsetzen.
-> https://sourceforge.net/p/ardude/home/Home/

: Bearbeitet durch User
von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

In der Zwischenzeit habe ich Ubuntu 18.04LTS in eine VM installiert und 
den Atmel-ICE angehängt.

Dann habe ich gemäß diesem Link
http://ubuntuhandbook.org/index.php/2017/01/install-avrdude-6-4-ubuntu-16-04/ 
den avrdude installiert.

sudo add-apt-repository ppa:ubuntuhandbook1/apps
sudo apt-get update
sudo apt-get install avrdude avrdude-doc

Leider kennt avrdude in der aktuellen Version 6.3 den attiny1616 nicht.


Hat jemand eine weitere Idee, wie man unter Ubuntu 18.04LTS einen 
attiny1616 programmieren kann?

von guest (Gast)


Lesenswert?

Axel S. schrieb:
> Allerdings braucht man eine brandneue avrdude Version, die das ICE als
> UPDI Programmer unterstützt.

Brandneu ist wohl relativ, wenn ich das richtig sehe sind die 
entsprechenden Änderungen Anfang 2018 reingekommen.

Marcus H. schrieb:
> aktuellen Version 6.3

Die ist allerdings alles andere als aktuell, die stammt aus 2016.

von Np R. (samweis)


Lesenswert?

guest schrieb:
> Brandneu ist wohl relativ, wenn ich das richtig sehe sind die
> entsprechenden Änderungen Anfang 2018 reingekommen.
Wo sind die reingekommen?

Auf der Projekt-Homepage ( http://savannah.nongnu.org/projects/avrdude ) 
finde ich als letzte Version die 6.3.

von Np R. (samweis)


Lesenswert?

Leider behandelt Microchip Linux etwas stiefmütterlich.

Wenn es nur darum geht, per Linux und updi einen  Reset zu senden, 
scheint es mir erfolgversprechender, das ganze Atmel/Microchip-Geraffel 
an die Seite zu legen und es statt dessen zu versuchen mit:

Pyupdi: https://github.com/mraardvark/pyupdi/blob/master/pyupdi.py
cupdi: https://github.com/PitterL/cupdi
jtag2updi: https://github.com/ElTangas/jtag2updi

und entsprechender, leicht verfügbarer Hardware. Für die ersten beiden 
braucht's nur einen USB-seriell Adapter, für jtag2updi einen Atmega328p 
bzw. Arduino Nano oder Uno.

von guest (Gast)


Lesenswert?

Np R. schrieb:
> Wo sind die reingekommen?
>
> Auf der Projekt-Homepage ( http://savannah.nongnu.org/projects/avrdude )
> finde ich als letzte Version die 6.3.

In den Sourcen:
https://savannah.nongnu.org/svn/?group=avrdude
bzw. direkt:
http://svn.savannah.gnu.org/viewvc/avrdude/trunk/avrdude/

Beitrag #5999605 wurde vom Autor gelöscht.
von Np R. (samweis)


Lesenswert?

guest schrieb:

> In den Sourcen:
> https://savannah.nongnu.org/svn/?group=avrdude
Danke!

Habe ich gleich mal gezogen und ein Debian-Paket davon gebaut.
Nur um dann erst festzustellen, dass die Version in Debian Buster auch 
schon bis svn commit 1429 geht....

von Np R. (samweis)


Lesenswert?

Marcus H. schrieb:
> Hat jemand eine weitere Idee, wie man unter Ubuntu 18.04LTS einen
> attiny1616 programmieren kann?

Die avrdude-Version in meinem Debian Buster unterstützt den Attiny1616.
Da Ubuntu 18.04 auf (einer frühen Version von) Debian Buster basiert, 
sollte es möglich sein, relativ schmerzfrei das Debian-Buster Paket auf 
dem Ubuntu zu installieren.
Auf einer Produktiv-Maschine würde ich Pakete unterschiedlicher Distris 
nicht mischen. In einer VM nur für diesen Zweck spricht aber nichts 
dagegen.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Hallo samweis,
danke für Deine Bemühungen. Ich bin fasziniert davon, dass es unter 
Linux eine ganze Reihe von Möglichkeiten gibt, irgendwie einen AVR zu 
flashen. Was nicht wirklich direkt unterstützt wird, sind aktuelle Chips 
mit dem kommerziellen Standardbrenner AtmelICE. Der Bedarf an 
professionellen Werkzeugen scheint hier nicht zu bestehen.

Np R. schrieb:
> Leider behandelt Microchip Linux etwas stiefmütterlich.
Zumindest was die Atmel-Schiene angeht. MPLAB gibt es für Linux.
>
> Wenn es nur darum geht, per Linux und updi einen  Reset zu senden,
> scheint es mir erfolgversprechender, das ganze Atmel/Microchip-Geraffel
> an die Seite zu legen und es statt dessen zu versuchen mit:
>
> Pyupdi: https://github.com/mraardvark/pyupdi/blob/master/pyupdi.py
> cupdi: https://github.com/PitterL/cupdi
> jtag2updi: https://github.com/ElTangas/jtag2updi
>
> und entsprechender, leicht verfügbarer Hardware. Für die ersten beiden
> braucht's nur einen USB-seriell Adapter, für jtag2updi einen Atmega328p
> bzw. Arduino Nano oder Uno.

Leicht verfügbare Hardware wäre im professionellen Umfeld eher der für 
wenig Geld vom Hersteller gelieferte Atmel-ICE.
Wir haben eine Entwicklungs-/Prüfhardware für Windows. Im Moment mag ich 
nicht glauben, was für eine Aktion es ist, diese unter Linux, in diesem 
Fall Ubuntu 18.04LTS zum Laufen zu bringen.
Natürlich könnte ich die Prüfhardware umbauen, aber das ist irgendwie 
hirnrissig.

Np R. schrieb:
> Marcus H. schrieb:
>> Hat jemand eine weitere Idee, wie man unter Ubuntu 18.04LTS einen
>> attiny1616 programmieren kann?
>
> Die avrdude-Version in meinem Debian Buster unterstützt den Attiny1616.
> Da Ubuntu 18.04 auf (einer frühen Version von) Debian Buster basiert,
> sollte es möglich sein, relativ schmerzfrei das Debian-Buster Paket auf
> dem Ubuntu zu installieren.
> Auf einer Produktiv-Maschine würde ich Pakete unterschiedlicher Distris
> nicht mischen. In einer VM nur für diesen Zweck spricht aber nichts
> dagegen.
Danke, den Tipp werde ich mal an den Linux-Kollegen weitergeben.

Wie oben bereits geschrieben - danke für Deine Bemühungen.

Grüße,
 marcus

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Np R. schrieb:
> guest schrieb:
>
>> In den Sourcen:
>> https://savannah.nongnu.org/svn/?group=avrdude
> Danke!
>
> Habe ich gleich mal gezogen und ein Debian-Paket davon gebaut.
> Nur um dann erst festzustellen, dass die Version in Debian Buster auch
> schon bis svn commit 1429 geht....

Heißt das, dass Du eine einfache Möglichkeit gefunden hast, einen Atmel 
ICE / attiny1616 kompatiblen avrdude in Ubuntu 18.04LTS zu installieren?
Wie läuft das ab?

Danke Dir,
 marcus

von Np R. (samweis)


Lesenswert?

Marcus H. schrieb:
> Heißt das, dass Du eine einfache Möglichkeit gefunden hast, einen Atmel
> ICE / attiny1616 kompatiblen avrdude in Ubuntu 18.04LTS zu installieren?
> Wie läuft das ab?
>
> Danke Dir,
>  marcus

Nach dem Posting von guest 
Beitrag "Re: Atmel-ICE mit AVR unter Linux / atprogram.exe-Ersatz" 
habe ich mir die aktuellen Quellen ("trunk") von avrdude 
heruntergeladen, kompiliert und ein Debian-Paket davon gebaut.

Das geht auf jeden Fall auch auf dem Ubuntu.
Eine Anleitung dazu gibt's in den Quellen selbst: 
http://svn.savannah.gnu.org/viewvc/avrdude/trunk/avrdude/BUILD-FROM-SVN?view=markup
Ein paar Header-Dateien und Dependencies wirst Du noch brauchen.

Das so erstellte Paket ist aber genauso aktuell wie das aktuelle Paket 
aus Debian Buster.

Du kannst aber auch einfach das avrdude-Paket aus Debian Buster herunter 
laden: https://packages.debian.org/buster/avrdude
Das sollte mit dpkg -i <Paketname> auf dem Ubuntu installierbar sein 
(könnte aber erfordern, dass Du Abhängigkeiten nachinstallieren musst).

Oder Du benutzt gleich eine Debian Buster VM.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Ich stehe hier gerade wie die Kuh vorm Gnu...

Als Zielsystem ist Ubuntu 18.04LTS vorgegeben.
Tatsächlich fehlen ein paar Abhängigkeiten.
Insbesondere kennt aptitude unter Ubuntu 18.04LTS  nur libtinfo5.


mah@ubuntu:~$ sudo dpkg -i avrdude_6.3-20171130+svn1429-2_amd64.deb
(Reading database ... 134695 files and directories currently installed.)
Preparing to unpack avrdude_6.3-20171130+svn1429-2_amd64.deb ...
Unpacking avrdude (6.3-20171130+svn1429-2) over (6.3-20171130+svn1429-2) 
...
dpkg: dependency problems prevent configuration of avrdude:
 avrdude depends on libhidapi-libusb0 (>= 
0.8.0~rc1+git20140201.3a66d4e+dfsg); however:
  Package libhidapi-libusb0 is not installed.
 avrdude depends on libncurses6 (>= 6); however:
  Package libncurses6 is not installed.
 avrdude depends on libtinfo6 (>= 6); however:
  Package libtinfo6 is not installed.

dpkg: error processing package avrdude (--install):
 dependency problems - leaving unconfigured
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Errors were encountered while processing:
 avrdude

  * *

Start von AVRDUDE:

mah@ubuntu:~$ avrdude
avrdude: error while loading shared libraries: libhidapi-libusb.so.0: 
cannot open shared object file: No such file or directory


  * *

Kannst Du mir bitte einen Tipp geben, wie es hier weitergeht?

: Bearbeitet durch User
von Np R. (samweis)


Lesenswert?

Marcus H. schrieb:
> dpkg: dependency problems prevent configuration of avrdude:
Das ist normal.
dpkg installiert nur das Paket aber nicht dessen Abhängigkeiten. Es 
meckert nur, dass diese Abhängigkeiten fehlen.

Wenn Du jetzt z.B. aptitude startest, wird es Dir avrdude als "broken 
package" anzeigen. Aptitude kümmert sich aber auch um die Auflösung von 
Abhängigkeiten. Wenn Du in aptitude "e" drückst, zeigt Dir der 
Anhängigkeits-Auflöser die Möglichkeiten an, das Problem zu beheben. 
Blättern zwischen den Lösungen kannst Du mit "," und ".".
Eine Lösung wird sein, einfach avrdude wieder zu deinstallieren. Das 
willst du natürlich nicht. ;-)
Die andere Lösung sollte sein, die fehlenden Pakete nachzuinstallieren.

Diese sollten in den Ubuntu Repositories alle vorhanden sein. Es kann 
aber sein, dass die Versionen in dem alten Ubuntu zu alt sind. (Dann 
findet aptitude keine Lösung, sondern meckert, dass Paket abc nicht in 
Version xy verfügbar ist).
Dann müsstest Du die entsprechenden Pakete, auf die dies zutrifft, auch 
noch aus dem Debian Buster Repo holen.
Mit der Gefahr, dass auch diese wieder Abhängigkeiten nach sich 
ziehen...

Probier's einfach. Möglicherweise reicht das Ubuntu Repo. Dann bist Du 
schnell fertig.
Wenn nicht und wenn es zu kompliziert wird, bleiben Dir zwei 
Möglichkeiten:

1. Debian Buster VM
2. avrdude aus den Quellen selber kompilieren.
Dazu solltest Du vorher folgende Pakete installieren:
libhidapi-dev
libftdi1-dev
libusb-1.0-0-dev
libbison-dev

und wahrscheinlich auch noch
bison
flex
byacc
autoconf
build-essential
wenn die noch nicht installiert sind.

(Sollte ich etwas vergessen haben, wird ./configure schon meckern ;-) ).

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Np R. schrieb:
> Leider behandelt Microchip Linux etwas stiefmütterlich.

Kann man in diesem Falle gar nicht mal so sagen. Der UPDI-Code ist von 
Atmicrochip direkt aus Norwegen ins AVRDUDE gekommen. Es bin hier eher 
ich, der einfach keine Zeit findet, endlich mal alle möglichen Bugs und 
Patches durchzugehen, und der sich andererseits schämt, einfach den 
Status Quo als Version 6.4 mal rauszublasen.

Aber vielleicht wäre die letztgenannte Variante wirklich die vorerst 
günstigste, nachdem nun die UPDI-basierten AVRs deutlich an Masse 
zugenommen haben. Ist schade, dass der entsprechende Code bislang nur im 
SVN und noch nicht in einem Release ist.

Wenn drei Leute jetzt rufen: „Ja, mach das so!“, dann mach ich es. :-)

von Aber Aber (Gast)


Lesenswert?

Jörg W. schrieb:
> dann mach ich es.

Ja wie jetzt, mit Bugfixes oder einfach den Status rauslasen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Aber Aber schrieb:
> Jörg W. schrieb:
>> dann mach ich es.
>
> Ja wie jetzt, mit Bugfixes oder einfach den Status rauslasen?

Letzteres. Mehr als das habe ich mir zwar immer mal vorgenommen, aber 
dann doch bloß nicht die Zeit gefunden – weshalb sich ein Release immer 
weiter rausschiebt. :(

Also, wenn hier jemand auftaucht und mir zusichert, dass er die Bug- und 
Patchliste durchzugehen gewillt ist und dann die entsprechenden 
Codeänderungen einpflegt, testet und ggf. die Doku anpasst, dann würde 
er von mir sofort Commit-Rechte bekommen. Das Problem ist ja nur, dass 
ich (ungewollt) Einzelkämpfer bin und eben auch noch 'ne ganze Menge 
anderer Dinge an der Backe habe.

von Aber Aber (Gast)


Lesenswert?

Jörg W. schrieb:
> Wenn drei Leute jetzt rufen: „Ja, mach das so!“, dann mach ich es.

Dann melde ich mich jetzt mit drei verschiedenen User Namen
an und rufe "Ja, mach das so!"

von Np R. (samweis)


Lesenswert?

Jörg W. schrieb:
> Wenn drei Leute jetzt rufen: „Ja, mach das so!“, dann mach ich es. :-)

Eins.

De facto ist die Version "6.4" ja schon Teil z.B. von Debian stable (als 
Version "6.3-20171130+svn1429-2").

Jörg W. schrieb:
> Das Problem ist ja nur, dass
> ich (ungewollt) Einzelkämpfer bin und eben auch noch 'ne ganze Menge
> anderer Dinge an der Backe habe.

Das verstehe ich.
Genauso, wie ich auch verstehe, dass aus so etwas schnell eine 
(würgende) Verpflichtung wird und viele Angst haben, sie nicht wieder 
los zu werden.
Deine Werbung ist also etwas ungeschickt. ;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Np R. schrieb:

> De facto ist die Version "6.4" ja schon Teil z.B. von Debian stable (als
> Version "6.3-20171130+svn1429-2").

Ist ein Argument.

> Deine Werbung ist also etwas ungeschickt. ;-)

Naja, ich wollte hier auch nicht wie ein Staubsaugerverkäufer auftreten. 
:)

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Np R. schrieb:
...

Woah, danke. Ich habe diesen Thread an den Kollegen weitergeleitet.
Bin gespannt, wie wir das Thema lösen werden. Werde Meldung erstatten.

von Np R. (samweis)


Lesenswert?

Jörg W. schrieb:
> Naja, ich wollte hier auch nicht wie ein Staubsaugerverkäufer auftreten.
> :)

Ich wollte nur sagen, dass Du vielleicht mehr Erfolg hast, wenn Du 
"Häppchen" anbietest, statt interessierte Enthusiasten gleich mit 175 
offenen Bugs zu erschlagen (von denen, wenn ich das richtig sehe, 
zumindest ein Teil sowieso BS ist). ;-)

@ Marcus H.

Np R. schrieb:
> Wenn Du jetzt z.B. aptitude startest,
Synaptic geht natürlich auch. Ich weiß nicht, welche Vorlieben oder 
Vorkenntnisse Dein Kollege hat.
Zum Bauen des Paketes gibt es ja prinzipiell auch zwei Möglichkeiten:
1. Den des upstream-Entwicklers:
./bootstrap
./configure
make
sudo checkinstall -D make install (checkinstall muss installiert sein).

2. Der offizielle Debian Weg:
Buster Quell-Pakete der /etc/apt/sources.list hinzufügen (deb-src ...)
apt-get build-dep avrdude
apt-get source avrdude
dpkg-buildpackage -us -uc
...

Keine Ahnung, was ich da raten soll. Viele Wege führen nach Rom...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Np R. schrieb:
> Ich wollte nur sagen, dass Du vielleicht mehr Erfolg hast, wenn Du
> "Häppchen" anbietest, statt interessierte Enthusiasten gleich mit 175
> offenen Bugs zu erschlagen

Wenn mal jemand 10 oder 20 Bugs oder Patches so einigermaßen am Stück 
durchgehen und entweder bestätigen und reparieren oder schließen würde, 
wäre das ein guter Anfang.

Selbst dazu komme ich nicht. Sind immer mal nur ein oder zwei geworden, 
die ich so nebenbei noch mit hinbekommen habe.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Hallo Zusammen,

ich hatte versprochen mich nochmal zu melden.
Die konkrete Aufgabenstellung die zu meiner Frage geführt hatte, wurde 
anderweitig gelöst, so dass der UPDI-Reset nicht mehr benötigt wird. 
(ich habe auf unseren Baugruppen ein anderes nutzbares Signal gefunden)

Damit hat sich für mich dieses Thema erstmal erledigt.

Vielen Dank für an alle, insbesondere samweis, für die geduldige 
Unterstützung und natürlich an Jörg und seine Mitstreiter für die Arbeit 
an den verschiedenen AVR Werkzeugen.

Vielleicht helfen die hier zusammengetragenen Infos irgendwann einem 
echten Linux-Anwender weiter.

marcus

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.