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....
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.
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.
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.
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
Also habe ich den Beitrag mehrfach durchgelesen und dann mal probiert.
Als erstes die boards.txt um
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?
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.
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 .
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....