Forum: Mikrocontroller und Digitale Elektronik Arduino nano Bootloader Erfahrungsbericht


von F. F. (foldi)


Lesenswert?

Hallo Forum!

Da ich die billigen Nano Clone immer stoßweise kaufe (um immer auch mal 
wieder einige zu verschenken), wollte ich dort die noch eben mit dem 
Bootloader versehen.
Schon vorher hatte ich mit allen alten Boards Probleme (den eigentlichen 
Fehler erspare ich euch) und musste da schon feststellen, dass man bei 
den Nano "old Bootloader" auswählen muss. Was aber hier 
https://www.arduino.cc/en/Guide/ArduinoNano beschrieben steht.

Nun wollte ich doch den neuen Bootloader (Optiboot, im Arduino 
Programmverzeichnis) ausprobieren, weil der mit 115 000 Baud arbeitet.
Beim Flashen übers Atmel Studio noch eine neue Entdeckung. Bei allen 
neuen Boards muss ich den Resttaster gedrückt halten, sonst wird die 
Design Signature nicht gelesen und kann auch nicht programmiert werden. 
Also auch während des Programmierens den Taster gedrückt halten.

Vielleicht hilft das dem einen oder anderen weiter.

Liebe Grüße
Frank

von Michael U. (amiga)


Lesenswert?

Hallo,

meine Billig-Nanos hatten bisher immer funktionierende Bootloader und 
ich hatte keinen wirklichen Grund, da was zu ändern.
Ich habe zwar nicht von allen Nano-Varianten Schaltpläne, normalerweise 
sollte ein Programmer den Reset sicher auf Low halten sollen. Bei einer 
Serie Nanos ist bei mir allerdings der 10k PullUp am Reset mit 1k 
bestückt, vielleicht schafft das Dein Programmer nicht zuverlässig auf 
Low zu ziehen?

Gruß aus berlin
Michael

von Einer K. (Gast)


Lesenswert?

Vor kurzem wurde die Nano Bootloaderkonfiguration geändert.
Incl. Fuses
?Zum Jahreswechsel?

Die neueren Nanos haben den Optiboot des Uno.
1. Wegen der WDT Abhandlung
2. Höherer UploadSpeed
3. Kleinerer Bootloader

F. F. schrieb:
> Bei allen
> neuen Boards muss ich den Resttaster gedrückt halten,
Die Hardwarekonfiguration hat sich nicht geändert.
Das kann ich mir also nicht erklären.....

von F. F. (foldi)


Lesenswert?

Arduino F. schrieb:
> F. F. schrieb:
>> Bei allen
>> neuen Boards muss ich den Resttaster gedrückt halten,
> Die Hardwarekonfiguration hat sich nicht geändert.
> Das kann ich mir also nicht erklären.....

Ich klemme gleich noch einmal den ICE an.
Laptop ist leer. Kann sein, dass es am Programmer liegt. Musste etwas an 
dem basteln.

von Michael U. (amiga)


Lesenswert?

Hallo,

Arduino F. schrieb:
> Die Hardwarekonfiguration hat sich nicht geändert.
> Das kann ich mir also nicht erklären.....

mir ist das mit dem 1k PullUp nur aufgefallen, als ich bei einem meiner 
Nanos geschaut habe, wie man notfalls den 100n vom DTR getrennt bekommt.

Gruß aus Berlin
Michael

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

F. F. schrieb:
> (Optiboot, im Arduino
> Programmverzeichnis) ausprobieren, weil der mit 115 000 Baud arbeitet.

Das ist ziemlich unwichtig, ob das Laden nun etwas länger dauert. 
Interessant ist, dass der Optiboot kleiner ist und ca. 1500 Byte mehr 
Programmspeicher erlaubt.

> https://www.arduino.cc/en/Guide/ArduinoNano

Danke für den Hinweis, dass der nun also "offiziell" auf den Nano 
gehört.

Michael U. schrieb:
> meine Billig-Nanos hatten bisher immer funktionierende Bootloader

Ich hatte mal zwei, wo er fehlte. Nach etwas Zickerei hat der Chinese 4 
USD wieder herausgerückt - wenn ich A* kaufe, erwarte ich, dass der 
einsatzfähig ist.

> ich hatte keinen wirklichen Grund, da was zu ändern.

Ich habe neulich getestet, in meiner Anwendung geht mir der 
Programmspeicher aus.

> Ich habe zwar nicht von allen Nano-Varianten Schaltpläne, normalerweise
> sollte ein Programmer den Reset sicher auf Low halten sollen. Bei einer
> Serie Nanos ist bei mir allerdings der 10k PullUp am Reset mit 1k
> bestückt,

Nach den Stromläufen von Gravitech und Arduino gehören da 1k drauf, 10k 
sehe ich auf einem China-Schaltbild.

> vielleicht schafft das Dein Programmer nicht zuverlässig auf
> Low zu ziehen?

Ich habe mir 2015 über Ali einen TinyUSB-Nachbau gekauft, war mit 4,55€ 
relativ teuer - spielt direkt aus der A*-IDE heraus.

von Michael U. (amiga)


Lesenswert?

Hallo,

Manfred schrieb:
> Nach den Stromläufen von Gravitech und Arduino gehören da 1k drauf, 10k
> sehe ich auf einem China-Schaltbild.

ok, dann hatte ich wohl eben dieses Schaltbild erwischt...

Gruß aus Berlin
Michael

von F. F. (foldi)


Lesenswert?

Jau!

Dann habe ich bei dem eHajo wohl doch die Leiterbahn mit dem Skalpell 
erwischt.

Habe das gerade noch mal mit nem orginalen MK II gemacht.
Lag am Programmer.

von F. F. (foldi)


Lesenswert?

Morgen bekomme ich zwei neue von Hannes.
Irgendwie war die Software von dem einen weg und ich musste den neu 
flashen. Dazu den Reset auf der Platine brücken. Hinterher war das Lot 
wohl nicht ganz weg und ich Dösel schneide in Richtung der Leiterbahn 
den Spalt frei.
Nochmal mache ich den nicht auseinander. Ganz schöne Sauerei.

von F. F. (foldi)


Lesenswert?

Arduino F. schrieb:
> 1. Wegen der WDT Abhandlung

Kannst du da mal was zu sagen oder linken!

von Einer K. (Gast)


Lesenswert?

F. F. schrieb:
> Arduino F. schrieb:
>> 1. Wegen der WDT Abhandlung
>
> Kannst du da mal was zu sagen oder linken!

Wenn man den WDT im Programm (oder per Fuse) aktiviert, wird er nicht 
durch den Reset abgeschaltet. Aber dessen Teiler wird durch den Reset 
auf den kleinsten Wert gesetzt.

Wenn der Bootloader das nicht behandelt, bleibt der AVR in einem "Dauer 
WDT Reset Loop" kleben, und ein Anwendungsstart, oder Upload ist 
unmöglich.

von F. F. (foldi)


Lesenswert?

Manfred schrieb:
> Ich hatte mal zwei, wo er fehlte.

Je billiger, desto weniger Bootloader.
Ich hatte schon sehr viele ohne Bootloader. Haben dann auch ca. 2 Euro 
gekostet. Mit Versand natürlich.

von F. F. (foldi)


Lesenswert?

Manfred schrieb:
> Das ist ziemlich unwichtig, ob das Laden nun etwas länger dauert.
> Interessant ist, dass der Optiboot kleiner ist und ca. 1500 Byte mehr
> Programmspeicher erlaubt.

Soll aber der gleiche Speicherplatz belegt werden. Sicher lässt sich das 
ändern, aber nicht automatisch kleiner.
Siehe auch hier: 
https://www.heise.de/make/artikel/Arduino-Nano-mit-neuem-Bootloader-4011641.html

von Einer K. (Gast)


Lesenswert?

Dazu muss ich sagen, dass ich vom Boardverwalter, der IDE, gebeten wurde 
das Update zu machen. Ein vollautomatisches Update gibts sowieso nicht. 
Es geht immer über den Boardverwalter. Man muss aktiv den "Update" Knopf 
drücken, dazu gibt es keine echte Alternative.

von Manfred (Gast)


Lesenswert?

F. F. schrieb:
> Soll aber der gleiche Speicherplatz belegt werden. Sicher lässt sich das
> ändern, aber nicht automatisch kleiner.
> Siehe auch hier:
> https://www.heise.de/make/artikel/Arduino-Nano-mit-neuem-Bootloader-4011641.html

Das ist nun aber konträr zu anderen Funden, z.B. auf Github
https://github.com/Optiboot/optiboot

"Allows larger sketches. Optiboot is a quarter of the size of the 
default bootloader, freeing 1.5k of extra space!"

Quer durch's Internet findet man diverse Beschreibungen, wie man 
Optiboot lädt und in der A*-IDE die Boards.txt anpasst. Wie kann man 
zuverlässig testen, ob ein großs Programm wirklich stabil 
funktioniert?

von Einer K. (Gast)


Lesenswert?

Manfred schrieb:
> Quer durch's Internet findet man diverse Beschreibungen, wie man
> Optiboot lädt und in der A*-IDE die Boards.txt anpasst.
Vieles, was man im Internet sieht, ist einfach nur irre!

1. ISP an den betreffenden Arduino stecken
2. Arduino IDE öffnen
3. gewünschtes Board wählen
4. Bootloaderbrennen drücken.
Die richtigen Fuses werden gleich mit geschrieben.

Der UNO Bootloader konnte so schon immer auf den Nano gepflanzt werden.
Ab dann verhält er sich wie ein UNO.

Manfred schrieb:
> Wie kann man
> zuverlässig testen, ob ein großs Programm wirklich stabil
> funktioniert?
Was meinst du mit "stabil"?
Wegen dem Flash Verbrauch?
An dem Punkt gibt es keine "stabil" Diskussion.

Zumindest die Arduino IDE schreit auf, wenn das Programm zu groß ist.
Die anderen IDEs sollten das auch können.

von F. F. (foldi)


Lesenswert?

Wenn wir hier schon beim Thema sind.
Kein Programmer wird unter der Arduino IDE und Windows 10 erkannt.
Arduino findet weder einen MK II Clone (eHajo), noch den originalen und 
auch nicht den AVR ICE.
Sie funktionieren alle aber gut übers Atmel Studio.

Hier noch die Fehlermeldung:
avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is 
"C:\Users\Foldi\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6 
.3.0-arduino9/etc/avrdude.conf"

         Using Port                    : usb
         Using Programmer              : atmelice_isp
avrdude: jtag3_open_common(): Did not find any device matching VID 
0x03eb and PID list: 0x2141

avrdude done.  Thank you.

Wenn jemand was weiß, immer her damit!

von Manfred (Gast)


Lesenswert?

Arduino F. schrieb:
> Vieles, was man im Internet sieht, ist einfach nur irre!
> 1. ISP an den betreffenden Arduino stecken
> 2. Arduino IDE öffnen ...

Ich kann das, schon seit längerem :-)

> Der UNO Bootloader konnte so schon immer auf den Nano gepflanzt werden.
> Ab dann verhält er sich wie ein UNO.

Ich sehe da, außer in der mechanischen Bauform, keinen Unterschied. 
Beide haben einen AT328 und beide kommen mit CH340 aus China.

> Zumindest die Arduino IDE schreit auf, wenn das Programm zu groß ist.

Aber, die IDE nimmt die Angabe aus \hardware\arduino\avr\boards.txt, 
z.B.

"uno.upload.maximum_size=32256"
oder
"nano.menu.cpu.atmega328.upload.maximum_size=30720"

Vor wenigen Wochen habe ich mal einen aktuellen Optiboot von Github 
geholt, auf den Nano gespielt und mir einen Eintrag "Nano Optiboot mit 
upload.maximum_size=32256" fuer die IDE erzeugt. Bleibt nur offem, ob 
32000 Bytes wirklich funktionieren, ladbar sind die.

von Einer K. (Gast)


Lesenswert?

F. F. schrieb:
> Kein Programmer wird unter der Arduino IDE und Windows 10 erkannt.
> Arduino findet weder einen MK II Clone (eHajo), noch den originalen und
> auch nicht den AVR ICE.
Ich verwende hier den Atmel ICE.
Der funktioniert mit der Arduino IDE und Win 10 problemlos.
Ebenso alle anderen ISP Programmer, welche bei mir in der Schublade 
liegen.
Einen MK II habe ich leider nicht zum testen da, weiß aber, dass dieser 
auch funktioniert.

KA, was du falsch machst, aber du machst was falsch.




------

Manfred schrieb:
> Ich sehe da, außer in der mechanischen Bauform, keinen Unterschied.
> Beide haben einen AT328 und beide kommen mit CH340 aus China.

Richtig!
Darum funktioniert das ja auch problemfrei.
Es muss nur die gewünschte Boardkonfiguration ausgewählt werden.




Manfred schrieb:
>> Zumindest die Arduino IDE schreit auf, wenn das Programm zu groß ist.
>
> Aber, die IDE nimmt die Angabe aus \hardware\arduino\avr\boards.txt,
> z.B.
Wofür ist dein "aber" ?
In der boards.txt befindet sich die Bootloader Konfiguration!
Auch mit den (hoffentlich) korrekten Speicherangaben.
Ohne wenn und aber.

Manfred schrieb:
> Vor wenigen Wochen habe ich mal einen aktuellen Optiboot von Github
> geholt, auf den Nano gespielt und mir einen Eintrag "Nano Optiboot mit
> upload.maximum_size=32256" fuer die IDE erzeugt. Bleibt nur offem, ob
> 32000 Bytes wirklich funktionieren, ladbar sind die.

Wenn du das richtig gemacht hast, dann funktioniert das auch.
Warum plagen dich da Ängste?
Welche Probleme hättest du denn da gerne?

von Einer K. (Gast)


Lesenswert?

F. F. schrieb:
> avrdude: jtag3_open_common(): Did not find any device matching VID
> 0x03eb and PID list: 0x2141

Avrdude kann den Atmel ICE offensichtlich nur anfassen, wenn der 
libusb-win32 Treiber für das CMSIS-DAP Gerät installiert wurde.

Das kollidiert (scheinbar) mit den Treibern, welche beim Atmelstudio 
mitgeliefert werden.
(Atmelstudio habe ich nicht installiert)

z.B. Zadig hilft beim Treiberwechsel.

von F. F. (foldi)


Lesenswert?

Manfred schrieb:
> Bleibt nur offem, ob
> 32000 Bytes wirklich funktionieren, ladbar sind die.

Ja.
Wurde im Studio so angezeigt.

von Stefan F. (Gast)


Lesenswert?

> Kein Programmer wird unter der Arduino IDE und Windows 10 erkannt.

Erwartest du, dass die Arduino IDE einen COM-Port im Menü anzeigt?
Das wäre die falsche Erwartungshaltung, denn die oben genannten 
Programmieradapter emulieren keinen COM Port (es gibt allerdings welche, 
die das tun).

von F. F. (foldi)


Lesenswert?

Stefanus F. schrieb:
> Erwartest du, dass die Arduino IDE einen COM-Port im Menü anzeigt?

Natürlich nicht, habe ich doch auch gar nicht gesagt.
Aber egal was ich dran klemme, ich kann mit keinem Programmer mehr 
"Sketch hochladen mit Programmer" ausführen.

von F. F. (foldi)


Lesenswert?

F. F. schrieb:
> Ja.
> Wurde im Studio so angezeigt.

War nicht im Studio, sondern Arduino IDE.
>Der Sketch verwendet 926 Bytes (3%) des Programmspeicherplatzes. Das Maximum sind 
30720 Bytes.

von Stefan F. (Gast)


Lesenswert?

> Avrdude kann den (Programmieradapter) offensichtlich nur anfassen, wenn der
> libusb-win32 Treiber ... installiert wurde.

Hast du das gemacht? Wird der Treiber im Gerätemenager ohne 
Fehlermeldung angezeigt (gelbes Ausrufzeichen)?

Falls nicht, folge dieser Anleitung: 
http://stefanfrings.de/avr_tools/libusb.html

> Das kollidiert (scheinbar) mit den Treibern, welche beim Atmelstudio
> mitgeliefert werden.

Nein.

von Einer K. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Nein.
Schreibst du doch in deinem eigen Beitrag!
> Das AVR/Atmel Studio hingegen benutzt den Jungo
> Treiber, um den es hier nicht geht.

Stefanus F. schrieb:
> Hast du das gemacht?
Natürlich!



Stefanus F. schrieb:
> Wird der Treiber im Gerätemenager ohne
> Fehlermeldung angezeigt (gelbes Ausrufzeichen)?
Bei mir: Keine Ausrufezeichen gesehen.

Ich habe gerade auf 2 Rechnern getestet!
(beide habe ich nicht selber eingerichtet)

Einen mit Atmelstudio und einen ohne.

Auf dem ohne, konnte AVRdude sofort mit den Atmel Ice quatschen.

Auf den mit Atmelstudio, hat es erst die Zusammenarbeit verweigert, aber 
nach der Zadig Operation funktionierte es.

von F. F. (foldi)


Lesenswert?

Stefanus F. schrieb:
> Hast du das gemacht?

Jetzt ja!

Stefan, du bist ne "geile Sau"!

Vielen Dank!

Hatte immer ein bisschen Angst das auszuprobieren, weil danach (früher) 
die Atmel Treiber nicht mehr funktionierten.
Passt alles. Studio und Arduino funktioniert.

Nochmal danke!

von Manfred (Gast)


Lesenswert?

Arduino F. schrieb:
> Wenn du das richtig gemacht hast, dann funktioniert das auch.
> Warum plagen dich da Ängste?

Hier baut sich ein Widerspruch auf:
https://www.heise.de/make/artikel/Arduino-Nano-mit-neuem-Bootloader-4011641.html 
interpretiere ich so, dass trotz neuem Optiboot nicht mehr 
Programmspeicher als vorher verfügbar ist, also 30720 Byte.

Andere Fundstellen sagen aus, dass der Optiboot 1,5k kleiner ist und 
damit 32256 Bytes für das Programm zur Verfügiung stehen.

Meine Bedenken, von mir aus nenne sie auch Ängste, wollen wissen, was 
denn nun tatsächlich richtig ist!

F. F. schrieb:
> War nicht im Studio, sondern Arduino IDE.
>>Der Sketch verwendet 926 Bytes (3%) des Programmspeicherplatzes. Das Maximum 
sind 30720 Bytes.

Und da sollte bei Optiboot eben "Maximum sind 32256" stehen dürfen.

von Einer K. (Gast)


Lesenswert?

Meine Arduino IDE zeigt bei beiden Nanos, sowohl dem alten, als auch dem 
neuen:
> Das Maximum sind 30720 Bytes.
Das ist offensichtlich falsch.

Beim UNO zeigt es:
> Das Maximum sind 32256 Bytes
Das ist richtig, und sollte auch beim neuen Nano so sein

Da haben die Jungs/Mädels offenbar Mist gebaut:
>>>
Hi ..... , you are right, but the boards in production have been flashed 
with the old fuse setting, making the bootloader partition larger than 
needed (see arduino/Arduino@1cf34c8#commitcomment-27651798). So we can't 
change the maximum sketch size parameter without affecting the 
functionality on these boards, sorry.
>>>

Es macht also Sinn den UNO Bootloader incl. Fuses da drauf zu brennen, 
und dann auch als UNO zu nutzen.
Dann stimmen auch deine Zahlen.

von Gerhard O. (gerhard_)


Lesenswert?

Arduino F. schrieb:
> Ich werde meine möglichstes geben, dass das beim nächsten Update
> korrigiert wird.

Das kann man bis es so weit ist selber machen:
In C:\Program Files (x86)\Arduino_V182\hardware\arduino\avr
im boards.txt einfach die Zeile anpassen:
...
nano.menu.cpu.atmega328.upload.maximum_size=30720
...

nano.menu.cpu.atmega328.upload.maximum_size=32256


Wenn Du das ändert, stimmt wieder alles. Allerdings musst Du Dir eine 
Kopie sichern weil bei jedem Update der Arduino Version diese Dateien 
mit erneuert werden.

Ich habe das beim ATMEGA1284 so gemacht und konnte dann den ganzen FLASH 
Bereich mit AVRdude abstrecken.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Gerhard O. schrieb:
> Das kann man bis es so weit ist selber machen:
Sorry, ich habe meinen vorherigen Beitrag korrigiert.

Wenn man das wie du händisch macht, wird es versagen.
Die Fuses müssen auch geändert werden.

von Michael U. (amiga)


Lesenswert?

Hallo,

Gerhard O. schrieb:
> Wenn Du das ändert, stimmt wieder alles. Allerdings musst Du Dir eine
> Kopie sichern weil bei jedem Update der Arduino Version diese Dateien
> mit erneuert werden.

ddann mußt Du aber auch die Fusebits korrigieren, sonst kann Dir das 
Programm durchaus den Bootloader zerlegen. Müßte ich jetzt das Mega328 
Datenblatt genauer fragen.

Gruß aus Berlin
Michael

von F. F. (foldi)


Lesenswert?

Wenn es sooo knapp wird, dann ohne Bootlader.
Ist das nicht sinnvoller?

von F. F. (foldi)


Lesenswert?

Dafür bietet sich doch das Übertragen mit Programmer an.

von Manfred (Gast)


Lesenswert?

F. F. schrieb:
> Wenn es sooo knapp wird, dann ohne Bootlader.
> Ist das nicht sinnvoller?

Ich habe eine Hardware komplett, mit Gehäuse drum und allen wesentlichen 
Funktionen laufen. Nach diversen Optimierungen bin ich derzeit bei 
30.400 Bytes, "alter" Bootloader drauf.

Es ist sehr komfortabel, Änderungen per USB einzuspielen und direklt zu 
testen, von daher möchte ich ungerne auf ISP. Wenn ganz fertig, wird in 
der Rückwand eine USB-Buchse sein, für elektrische Kalibrierung und 
evtl. Debugausgaben per Serial.Print (die eine Menge Platz fressen).

von Gerhard O. (gerhard_)


Lesenswert?

Arduino F. schrieb:
> Wenn man das wie du händisch macht, wird es versagen.
> Die Fuses müssen auch geändert werden.

Hi,

das hatte ich vorausgesetzt. Bei mir machte ich das nur für den 
ATMEGA1284P und ich konnte die ganzen 128KB - BL  FLASHEN. Und so genau 
weiß ich die Details vom Kopf her auch nimmer. Ist schon drei Jahre her.

Gerhard

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Arduino F. schrieb:
> Wenn man das wie du händisch macht, wird es versagen.
> Die Fuses müssen auch geändert werden.

Siehe mein Posting Beitrag "Re: Arduino nano Bootloader Erfahrungsbericht" 
- der behauptet, es zu können "Allows larger sketches. Optiboot is a 
quarter of the size of the default bootloader, freeing 1.5k of extra 
space!"

Ist das der gleiche, den Ihr habt?

von F. F. (foldi)


Lesenswert?

Manfred schrieb:
> Ich habe eine Hardware komplett, mit Gehäuse drum und allen wesentlichen
> Funktionen laufen. Nach diversen Optimierungen bin ich derzeit bei
> 30.400 Bytes, "alter" Bootloader drauf.

Ok, das ist ein Grund.

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.