Forum: Mikrocontroller und Digitale Elektronik wer programmiert nano328p clones mit dem neuen Bootloader?


von Joachim B. (jar)


Lesenswert?

es ist zum Mäusemelken,

neuer Bootloader, schneller mehr Platz aber nur wenn ich
"Arduino/Genuino Uno" wähle!
"Das Maximum sind 32256 Bytes"

Wähle ich den "Arduino Nano" kann ich zwar wählen zwischen
"ATmega328P" oder "ATmega328P (Old Bootloader)"
aber beide geben mir nur "Das Maximum sind 30720 Bytes"

Irgendwo muss eine falsche Definition sein, nur ich finde sie nicht.

von Einer K. (Gast)


Lesenswert?

Joachim B. schrieb:
> es ist zum Mäusemelken,
>
> neuer Bootloader, schneller mehr Platz aber nur wenn ich
> "Arduino/Genuino Uno" wähle!
> "Das Maximum sind 32256 Bytes"
>
> Wähle ich den "Arduino Nano" kann ich zwar wählen zwischen
> "ATmega328P" oder "ATmega328P (Old Bootloader)"
> aber beide geben mir nur "Das Maximum sind 30720 Bytes"
>
> Irgendwo muss eine falsche Definition sein, nur ich finde sie nicht.

DU machst nichts falsch.

Da ist den Arduino Machern ein dummer Fehler unterlaufen.
Das "mehr Platz" funktioniert leider nicht.
Da sie in der Produktion vergessen haben die Fuses auf den kleineren 
Bootloader anzupassen.

Und jetzt können sie aus Kompatibilitätsgründen nicht mehr runter davon.

Meine Alternative:
Ich mache meine Nanos zu UNOs.
Also, mit UNO Bootloader und spreche sie danach als UNO an.
Dann passt das alles.

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Meine Alternative:
> Ich mache meine Nanos zu UNOs.
> Also, mit UNO Bootloader und spreche sie danach als UNO an.
> Dann passt das alles.

den neuen Bootloader Optiboot habe ich ja schon auf alle meine Nanos 
geflasht, das ist nicht das Problem.
Auch als Arduino/Genuino Uno anzusprechen und zu flashen ist nicht mein 
Problem, das mache ich und klappt, aber es nervt.

Man brächte doch nur die Board.txt patchen und die passenden Werte 
einzutragen, aber ich habe es an beiden Orten versucht, in der local 
boards.txt und in der unter liberary boards.txt, er macht es nicht, das 
muss irgendwo versteckt sein, vermutlich im Boardverwalter, aber wo 
steckt der?

von Joachim B. (jar)


Lesenswert?

gefunden
%AppData%\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\boards.tx 
t

nun wird der gepatched und getestet.

von Einer K. (Gast)


Lesenswert?

Joachim B. schrieb:
> Man brächte doch nur die Board.txt patchen und die passenden Werte
> einzutragen, aber ich habe es an beiden Orten versucht, in der local
> boards.txt und in der unter liberary boards.txt, er macht es nicht, das
> muss irgendwo versteckt sein, vermutlich im Boardverwalter, aber wo
> steckt der?

Tu das nicht....
Mache sie zu UNOs...


Zu deinem Patch Problem:
Die boards.txt ist schon richtig.

Bei der Programm Installation wird eine boards.txt angelegt.

Beim Board Update, wird eine zweites Verzeichnis auf deinem Rechner 
angelegt.
blabla\packages\blabla
Diese boards.txt wird genutzt.

Ausführliche Meldungen beim kompilieren anzeigen lassen, dann siehst du 
wo dein packages Verzeichnis steckt.
Bei mir ist das:
E:\Programme\arduino\portable\packages\arduino\hardware\avr\1.6.21\board 
s.txt

Aber, wie schon gesagt, lass das!
Und wenn, dann nicht nur MemorySize ändern, sondern auch die Fuses.
Sonst knallt es.

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Aber, wie schon gesagt, lass das!
> Und wenn, dann nicht nur MemorySize ändern, sondern auch die Fuses.
> Sonst knallt es.

zu spät,
es funktioniert mit dem Patch! :))))

Ich kann ja wählen auf Old Bootloader und wenns klemmt brenne ich den 
Bootloader mit Fuses neu!, ist ja kein Problem!

richtiger Pfad:
1
%AppData%\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\boards.txt

Ich grübel gerade ob ich die Boards.txt noch erweitere auf

## Arduino Nano w/ ATmega328P (new Bootloader old size)
## --------------------------
nano.menu.cpu.atmega328old=ATmega328P (New Bootloader Old Size)

nano.menu.cpu.atmega328old.upload.maximum_size=30720
nano.menu.cpu.atmega328old.upload.maximum_data_size=2048
nano.menu.cpu.atmega328old.upload.speed=115200

nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega3 
28.hex

nano.menu.cpu.atmega328old.build.mcu=atmega328p

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Man kann (nahezu) alle Anpassungen in *.local.* Dateien machen.

Beispiel:
Du legst neben deine boards.txt eine boards.local.txt Datei.
Dann musst du nicht die original Dateien verbasteln.
Und deine Änderungen überleben ein boards Update.

Joachim B. schrieb:
> zu spät,
> es funktioniert mit dem Patch! :))))
Hast du jetzt auch die Fuses angepasst?
Nein?
Dann wird dir der Kram irgendwann mit Karacho auf die Zehen fallen.

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Hast du jetzt auch die Fuses angepasst?

an welcher Stelle?

Ich schrieb ja ich habe die Nanos neu programmiert, Optiboot und Fuses!

> Nein?
> Dann wird dir der Kram irgendwann mit Karacho auf die Zehen fallen.

das begründe mal wieso das sollte!
(mit neuem Bootloader und neuen Fuses!)

Das Erweitern um ein Menü hat nicht geklappt, der Boardverwalter nimmt 
davon keine Kenntnis, muss noch tief im 1.6.21 stecken aber da suche ich 
weiter.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Joachim B. schrieb:
> Das Erweitern um ein Menü hat nicht geklappt,
Dann machst du was falsch!
Das steckt alles in der boards.txt

>an welcher Stelle?
Der Resetvektor!
Wenn du den nicht änderst, darfst du den neu dazugewonnenen Speicher 
nicht nutzen.


Joachim B. schrieb:
> das begründe mal wieso das sollte!
> (mit neuem Bootloader und neuen Fuses!)
Wenn du die Fuses angepasst hast, ist alles ok.

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Dann machst du was falsch!
> Das steckt alles in der boards.txt

ja nur kann der Boardverwalter 1.6.21 nur aus 2 Menüeinträgen 
unterscheiden
Entweder:
-------------------------------------------------------
## Arduino Nano w/ ATmega328P
oder
## Arduino Nano w/ ATmega328P (Old Bootloader)
-------------------------------------------------------

wenn ich das Menü
## Arduino Nano w/ ATmega328P (new Bootloader old size)

hinzufüge gibt es nur die Auswahl
-------------------------------------------------------
## Arduino Nano w/ ATmega328P
oder
## Arduino Nano w/ ATmega328P (New Bootloader Old size)
-------------------------------------------------------

aus 3 auswählen kann man nicht



> Wenn du die Fuses angepasst hast, ist alles ok.
siehste :)

von Einer K. (Gast)


Angehängte Dateien:

Lesenswert?

Habe dir mal schnell eben eine Menueerweiterung, für den Nano, 
gebastelt.
Sie zeigt den neuen Eintrag:
"ATmega328P (New Bootloader full Mem)"

Lege die, im Anhang beiliegende, boards.local.txt, neben deine, im 
packages Ordner befindliche, boards.txt

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Habe dir mal schnell eben eine Menueerweiterung, für den Nano,
> gebastelt.

soweit war ich doch auch schon, nur kann man nicht aus 3 Menüpunkten 
auswählen für den 328p sondern immer nur für 2.

Bis jetzt bleibe ich bei den 2 Auswahlmöglichkeiten nano328p mit mehr 
Speicher und schnellerm upload und old bootloader,
die dritte Auswahlmöglichkeit schenke ich mir dann mal,
New Bootloader (Alte Speicherbelegung)


Joachim B. schrieb:
> ja nur kann der Boardverwalter 1.6.21 nur aus 2 Menüeinträgen
> unterscheiden
> Entweder:
> -------------------------------------------------------
> ## Arduino Nano w/ ATmega328P
> oder
> ## Arduino Nano w/ ATmega328P (Old Bootloader)
> -------------------------------------------------------
>
> wenn ich das Menü
> ## Arduino Nano w/ ATmega328P (new Bootloader old size)
>
> hinzufüge gibt es nur die Auswahl
> -------------------------------------------------------
> ## Arduino Nano w/ ATmega328P
> oder
> ## Arduino Nano w/ ATmega328P (New Bootloader Old size)
> -------------------------------------------------------
>
> aus 3 auswählen kann man nicht

: Bearbeitet durch User
von Einer K. (Gast)


Angehängte Dateien:

Lesenswert?

Joachim B. schrieb:
> soweit war ich doch auch schon, nur kann man nicht aus 3 Menüpunkten
> auswählen für den 328p sondern immer nur für 2.

Mal angenommen, du glaubst das wirklich...
Dann irrst du!

Siehe Bild im Anhang

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Joachim B. schrieb:
>> soweit war ich doch auch schon, nur kann man nicht aus 3 Menüpunkten
>> auswählen für den 328p sondern immer nur für 2.
>
> Mal angenommen, du glaubst das wirklich...
> Dann irrst du!
>
> Siehe Bild im Anhang

hey klasse, nur was habe ich falsch gemacht?

die IDE nicht neu gestartet?
den Rechner nicht neu gestatet?
den Cache nicht geleert?

ich war ja schon soweit das meine Änderung akzeptiert wurde nur nicht 
das Menü in der IDE alle 3 (4 mit 168) zeigte

von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

Arduino Fanboy D. schrieb:
> Mal angenommen, du glaubst das wirklich...
> Dann irrst du!
>
> Siehe Bild im Anhang

ich danke dir, ich weiss nicht was vorher schief lief, aber nun

von Einer K. (Gast)


Lesenswert?

Schön, dass es jetzt funktioniert!
Und danke für die Rückmeldung.

von Manfred (Gast)


Lesenswert?

Joachim B. schrieb:
> gefunden
> %AppData%\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\boards.tx
> t

Schon Scheiße. Befrage arduino cc nach "portable"! Lege im 
Arduino-Programmordner ein Unterverzeichnis "portable" an, dann bleiben 
Einstellungen und Libraries im Programmverzeichnis und landen nicht 
irgendwo unter dem Windows-Benutzer.

Ich habe die A*-IDE auf mehreren Rechnern und synchronisiere sie mit 
einem simplen Copy-Job. Disziplin ist natürlich gefordert, Programme nur 
am Master-PC zu ändern bzw. manuell auf diesen zurück zu sichern.

von Manfred (Gast)


Lesenswert?

In meiner boards.txt habe ich erfolgreich gebastelt, sie liegt unter 
D:\Arduino_IDE\hardware\arduino\avr:
1
##############################################################
2
atmega328o.name=Arduino Nano 328 Optiboot
3
4
atmega328o.upload.tool=avrdude
5
atmega328o.upload.protocol=arduino
6
atmega328o.upload.maximum_size=32256
7
atmega328o.upload.speed=115200
8
9
atmega328o.bootloader.tool=avrdude
10
atmega328o.bootloader.low_fuses=0xff
11
atmega328o.bootloader.high_fuses=0xde
12
atmega328o.bootloader.extended_fuses=0x05
13
atmega328o.bootloader.file=optiboot_201712/optiboot_atmega328.hex
14
15
atmega328o.bootloader.unlock_bits=0x3F
16
atmega328o.bootloader.lock_bits=0x0F
17
atmega328o.build.mcu=atmega328p
18
atmega328o.build.f_cpu=16000000L
19
atmega328o.build.core=arduino:arduino
20
atmega328o.build.variant=arduino:standard
21
22
## https://itzwieseltal.wordpress.com/2016/01/10/arduino-nano-als-isp-programmiergeraet/
23
##############################################################

Wie man in der Datei sieht, habe ich einen aktuelleren Optiboot (Github) 
geholt und in ein eigenes Verzeichnis ..\optiboot_201712\ verfrachtet. 
Ich habe mich damit befasst, weil ich Platzprobleme hatte, sehe aber 
keinen Grund, meine Nanos generell umzuflashen. Es wird immer palawert, 
wie toll die höhere Uploadgeschwindigkeit dank Optiboot sei, Kasperei, 
die paar Sekunden bringen mich in Anbetracht des gesamten Zeitaufwandes 
kein Stück vorwärts.

von Einer K. (Gast)


Lesenswert?

Manfred schrieb:
> Kasperei,

Der wichtigste Grund, ist der WDT.
Das andere Verhalten kann man meist tolerieren.

von Joachim B. (jar)


Lesenswert?

Manfred schrieb:
> Schon Scheiße. Befrage arduino cc

hast ja so Recht

aber ich habe 3 winXP PC, zwei Raspi und einen win7

zumindest alle Sourcen & LIBs liegen auf dem NAS und so kann ich von 
jedem Rechner zugreifen

Jeder will es anders haben, klar wäre mir ein Ort am liebsten, aber nach 
endlosen Versuchen musste ich einsehen das der ESP32 nur mit dem win7 
geht, am PI weiss ich es nicht mal was ausser AVR geht.

Irgendwie nervig, aber auch toll wenns endlich so klappt wie man denkt.
Der Versuch meinen Hauptarbeitsrechner auf win7 umzustellen ist erst mal 
gescheitert, irgend einen moderneren kaufen ist mom. nicht geplant, zu 
viele Baustellen.

von Manfred (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
>> Kasperei,
> Der wichtigste Grund, ist der WDT.

Kannst Du dazu bitte detaillierte Infos liefern?

Den Watchdogtimer habe ich bislang nur einmal mit dem Pro-Mini benutzt, 
der ja den gleichen Bootloader wie der Nano benutzt. Mir ist dabei kein 
Problem aufgefallen.

von Einer K. (Gast)


Lesenswert?

Manfred schrieb:
> Kannst Du dazu bitte detaillierte Infos liefern?

Ein Reset stoppt nicht den WDT.
Setzt aber dessen Vorteiler auf den kleinst möglichen Wert.

Diese Zeit reicht nicht um den Bootloaderlauf durchzustehen.
Während der Bootloader noch arbeitet, schlägt der WDT wieder zu.

Der Nano hängt in einem WDT endlos Reset Loop fest.

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Ein Reset stoppt nicht den WDT.
> Setzt aber dessen Vorteiler auf den kleinst möglichen Wert.
>
> Diese Zeit reicht nicht um den Bootloaderlauf durchzustehen.

an welcher Stelle schlägt denn das "Problem" durch?

beim alten Bootloader mit langsamen upload oder beim neuen bootloader 
mit doppelt schnellem Upload.

Noch verstehe ich nicht auf was du hinaus willst, du schreibst immer 
relativ kurz.

von Einer K. (Gast)


Lesenswert?

Bei dem alten!

Der Neue, Optiboot, wurde eingeführt um das Problem zu umgehen.

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Bei dem alten!
>
> Der Neue, Optiboot, wurde eingeführt um das Problem zu umgehen.

na denn ist es ja fast gelöst, sobald alle nanos umgestellt sind

von Manfred (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Der wichtigste Grund, ist der WDT.

Ich ziehe den alten Thread nochmal hoch: Wenn ich
http://www.martyncurrey.com/arduino-atmega-328p-fuse-settings/
glaube, ist beim Arduino der WDT im default aus.

----------

Was mich aber gerade beschäftigt, einen 8MHz ProMini mit dem Optiboot zu 
versehen. Da greifen die High Byte Fuses:
Beim UNO mit Optiboot $DE, bei den anderen $DA.

Laut Beschreibung sind das 256x4 = 1024 Bytes gegen 512x8 = 4096 - 
daraus rechne ich 3072 Bytes Differenz.

In der Boards.txt sehe ich dann maximum_size=32256 gegenüber 30720, was 
nur die Hälfte, 1536 Bytes mehr Platz ergibt.

Warum ist das so?

von Einer K. (Gast)


Lesenswert?

Manfred schrieb:
> Arduino Fanboy D. schrieb:
>> Der wichtigste Grund, ist der WDT.
>
> Ich ziehe den alten Thread nochmal hoch: Wenn ich
> http://www.martyncurrey.com/arduino-atmega-328p-fuse-settings/
> glaube, ist beim Arduino der WDT im default aus.
>
> ----------

Du hast einen Widerspruch gefunden, wo keiner ist.

Meinen Glückwunsch.

>
> ----------

Manfred schrieb:
> was
> nur die Hälfte, 1536 Bytes mehr Platz ergibt.
Der Flash Bereich ist Wortweise organisiert.
Was dann eben die Hälfte ergibt.
? ?

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.