Nano - programmieren über ISP

Hallo,

ich habe einen Sketch auf einem NANO am laufen. Dieser ist mittlerweile "etwas" groß geworden. Ich muss beim debuggen mit Serial.print schon andere Zeilen auskommentieren damit er noch compiliert wird. (Der Sketch verwendet 30674 Bytes (99%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes). Brauchen würde ich etwa 31400 Bytes wenn alles drin ist.
Umstellen auf MEGA geht (fast) nicht da die restliche Hardware auf den NANO abgestimmt ist. Optimierungen habe ich ziemlich durch (print(F(), Variablentypen passen).

Meine Frage/Überlegung: Wenn ich den NANO über ISP programmiere müssten doch die vollen 32 kB Speicher verfügbar sein. Erkennt das die ARDUINO-IDE beim compilieren? Ich habe einen mySmartUSB light ISP-Programmer. Der scheint ja mit der ARDUINO-IDE zu funktionieren. Aber: Was muss ich da konkret machen. Ich habe schon einiges gefunden, aber ganz schlau werde ich nicht daraus.

Würde mich freuen wenn ich da mit eurer Hilfe weiter käme....

Gruß

uk1408:
Würde mich freuen wenn ich da mit eurer Hilfe weiter käme....

Soweit ich weiß, ist ein Teil des Flash durch den Bootloader belegt, was Du durch die Programmierung via ISP nicht umgehen kannst. Ohne Arduino-Bootloader ist der µC nunmal kein Arduino-µC mehr. Kann sein, dass ich das bislang aber nicht richtig verstanden habe.

Könntest Du den Sketch posten oder irgendwo bereit legen? Vielleicht hast Du ja noch nicht alle Einsparmöglichkeiten genutzt und jemand findet noch ein paar Bytes, die Du übersehen hast.

Gruß

Gregor

Das ist ja genau der Sinn der Programmierung über ISP, dass man dann keinen Bootlader mehr hat und damit diesen Speicherbereich selbst nutzen kann.

Gruß Tommy

hi,

lies mal hier. der nano bootloader braucht anscheinend 2k. den bist Du nach dem programmieren mit ISP definitiv los.

lies am besten den ganzen thread, da ging's genau um Dein problem.

gruß stefan

Fuses umstellen nicht vergessen, sonst knallts...

hi,

Fuses umstellen nicht vergessen, sonst knallts...

wieso das? hab' ich noch nie gemacht...

gruß stefan

Ich auch nicht.

Das ist wahres Heldentum!
Ein Problem solange ausblenden, bis es einem auf die Füße fällt.
Und dann...

Ich erzähle euch eine Geschichte:
Angenommen ein Nano!
Der Eigentümer braucht mehr Platz auf seinem Nano.
Also muss der Bootloader weg, damit er den gesamten Flash mit seinem Zeugs fluten kann.
Der Resetvektor zeigt aber immer noch auf den Bootloader Bereich.

Jetzt gemerkt, wo der Hase im Pfeffer liegt?
Reicht die Fantasie?
Oder muss ich die Geschichte bis zum bitteren Ende weiter erzählen?

Ihr wisst doch alle, was ein Resetvektor ist?
Und, was ein solcher tut!

combie:
Der Resetvektor zeigt aber immer noch auf den Bootloader Bereich.

Jetzt gemerkt, wo der Hase im Pfeffer liegt?
Reicht die Fantasie?
Oder muss ich die Geschichte bis zum bitteren Ende weiter erzählen?

Es ist doch ganz offensichtlich, dass der Threadstarter nicht mit den Interna der Mikrocontroller vertraut ist. Dann erkläre ihm doch einfach, was passiert und schwurbel nicht ums Thema herum. Vielleicht lernen dann Mitlesende auch was dazu.

combie:
Ihr wisst doch alle, was ein Resetvektor ist?
Und, was ein solcher tut!

Nein, es wissen nicht alle. Also Hose runter, Fakten auf den Tisch.

[edit] Mein rudimentäres Wissen habe daher: Bootloader-Grundlagenartikel bei mikrocontroller.net

Das habe ich sicherlich schon ein Dutzend mal gemacht.

Nein, heute spiele ich nicht den Papagei!
Nein, ich lese heute nicht das Internet vor!
Tipp: Selber lesen, macht selber schlau.

Und: Heute darf selber gedacht werden.

sth77:
Es ist doch ganz offensichtlich, dass der Threadstarter nicht mit den Interna der Mikrocontroller vertraut ist. Dann erkläre ihm doch einfach, was passiert und schwurbel nicht ums Thema herum. Vielleicht lernen dann Mitlesende auch was dazu.
Nein, es wissen nicht alle. Also Hose runter, Fakten auf den Tisch.

[edit] Mein rudimentäres Wissen habe daher: Bootloader-Grundlagenartikel bei mikrocontroller.net

DANKE !!!

combie:
Tipp: Selber lesen, macht selber schlau.

Sagt ausgerechnet der Dokuleseverweigerer. Supi!

Gruß

Gregor

gregorss:
Sagt ausgerechnet der Dokuleseverweigerer.

:smiling_imp: Ja, so ist er! :smiling_imp:
Und das, mit Überzeugung!

Übrigens:
Ich habe mich jetzt umbenannt!
Hoffentlich gefällt dir das besser..

combie:
DokuVorLeseVerweigerer

Wunderbar :slight_smile: :slight_smile:

Hallo nochmal,

nachdem ich einiges über Fuses und Bootloader und so gegoogelt habe kam ich auch auf diesen Beitrag:
http://forum.arduino.cc/index.php?topic=269598.0 .
Da geht es u.a. um den Austausch des Bootloaders gegen einen Opti-Bootloader. Mit dem könne man 1,5 kB mehr bekommen und das müsste mir dann einfach reichen. Ohne Bootloader geht ja auch USB und damit der Monitor nicht und dann ginge ja auch Serial.print zum debuggen nicht :confused:
Also habe ich den Beitrag mehrfach durchgelesen und dann mal probiert.
Als erstes die boards.txt um

nanoOpti.name=Arduino Nano Opti-Bootloader
nanoOpti.upload.protocol=arduino
nanoOpti.upload.maximum_size=32256
nanoOpti.upload.speed=115200
nanoOpti.bootloader.low_fuses=0xff
nanoOpti.bootloader.high_fuses=0xde
nanoOpti.bootloader.extended_fuses=0x05
nanoOpti.bootloader.path=optiboot
nanoOpti.bootloader.file=optiboot_atmega328.hex
nanoOpti.bootloader.unlock_bits=0x3F
nanoOpti.bootloader.lock_bits=0x0F
nanoOpti.build.mcu=atmega328p
nanoOpti.build.f_cpu=16000000L
nanoOpti.build.core=arduino
nanoOpti.build.variant=eightanaloginputs

ergänzt.

Nach einigen Versuchen habe ich noch folgendes geändert/ergänzt:

nanoOpti.upload.tool=avrdude
nanoOpti.upload.maximum_data_size=2048
nanoOpti.upload.speed=57600
nanoOpti.bootloader.file=optiboot/optiboot_atmega328.hex
nanoOpti.build.board=AVR_NANO
nanoOpti.build.mcu=atmega328p

dann gab es beim kompilieren keine Fehlermeldungen mehr. (Nebenbei: mit welchem Editor, (WIN10), editiert man das am besten?).

Dann habe ich die optiboot_atmega328.hex mit dem myAVR-Tool gebrannt und die Fuses geändert (low Fuse FF, high Fuse DE, extend FD, lockbits FF). Hat auch geklappt.

Dann die Arduino IDE gestartet, den NANO mit Opti-Bootloader gewählt und ein Sketch hochgeladen - und das war es dann, da blieb er dann hängen und hat nichts hochgeladen.
Dann alles wieder zurückgeflasht, den NANO in der IDE genommen und alles war beim alten.

Was könnte da fasch sein? Müsste der Opti-Bootloader mit dem NANO-Clone mit einem CH340G funktionieren?

Gruß Uwe

(Nebenbei: mit welchem Editor, (WIN10), editiert man das am besten?).

Ich bevorzuge PsPad als universellen Editor.

Ohne Bootloader geht ja auch USB und damit der Monitor nicht und dann ginge ja auch Serial.print zum debuggen nicht

Ja?
:o Das wundert mich aber sehr :o
Sage das ja nicht meinen Arduinos!
Sonst bekommst aber derbe Ärger mit mir.

combie:
Ich bevorzuge PsPad als universellen Editor.

Ja?
:o Das wundert mich aber sehr :o
Sage das ja nicht meinen Arduinos!
Sonst bekommst aber derbe Ärger mit mir.

Ich meine das so aus diversen Beiträgen herausgelesen zu haben.... :confused:

Ohne Bootloader geht ja auch USB und damit der Monitor nicht

Falsch

Auch ob du einen CH340 oder einen FTDI auf dem Nano hast, oder einen Mini und nur einen externen SerialTTL-Wandler (z.B. auf CP2102-Basis) nimmst, sollte dem Bootloader egal sein.

Aber bei deinem eigentlichen Problem bin ich auch ratlos:
High Fuse 0xDE passt wohl zum kleinen Optiboot,
während 0xDA zum Original Nano mit großem Bootloader passt.

nehme doch den Bootloader vom UNO, der läuft auch auf dem NANO und der ist ca, 2k kleiner als der vom NANO

ardubu:
nehme doch den Bootloader vom UNO, der läuft auch auf dem NANO und der ist ca, 2k kleiner als der vom NANO

Ja das ist ja diese : uno.bootloader.file=optiboot/optiboot_atmega328.hex. Die habe ich ja genommen. Der Fehler muss woanders sein...

Jetzt habe ich es immerhin geschafft, das HEX-File aus der Arduino IDE mit allem was ich brauche ohne Bootloader in den NANO zu flashen - und es klappt. Auch Serial.print :slight_smile: :slight_smile: .
Ich weiß nicht ob der Weg richtig ist: Kompilieren, die HEX-Datei aus dem ...LOCAL/Temp-Ordner nehmen und mit dem myAVR flashen.
Eleganter wäre es halt via USB direkt....

Gruß Uwe