mit und ohne Bootloader auswählen

Ich programmiere meine Arduinos meistens über den Bootloader.

Im Playground ist beschrieben wie man mit einem ISP ohne Bootloader schreiben kann. Jedoch muss man dafür die ?preferences.txt“ ändern. Wenn man dann wieder mit Bootloader arbeiten möchte, muss man wieder die ?preferences.txt“ abändern.

Um dies zu umgehen habe ich die ?boards.txt“ um folgendes erweitert:

atmegaohneboot.name=Arduino ATmega168 mit USBTinyISP ohne bootloader

atmegaohneboot.upload.using=usbtinyisp atmegaohneboot.upload.maximum_size=16382

atmegaohneboot.build.mcu=atmega168 atmegaohneboot.build.f_cpu=16000000L atmegaohneboot.build.core=arduino

Jetzt kann man innerhalb der PDE wählen auf welchem Weg das Programm ins Arduino kommt.

Wobei ich mir nur nicht sicher bin was ich bei maximum_size eintragen soll? Es müsste ja jetzt der gesamte Speicher zur Verfügung stehen. Reicht das aus den Wert hier einzutragen, oder muss ich an einer anderen Stelle noch was anpassen?

Grüße aus Aachen

Boah, wo genau im Playground steht das? Habe ich auf die Schnelle nicht gefunden, interessiert mich aber sehr.

Was die verfügbare Größe angeht: dazu sagt das Datenblatt (Kapitel 26-27), daß der verfügbare Flash für Anwendungsprogramme von verschiedenen Fuses abhängt. Ich nehme mal an, daß "neue" Atmels den vollständigen Speicher verfügbar haben, Arduinos aber per Default auf Bootloader gefused sind --> weniger Speicher solange man das nicht wieder zurückdreht.

Ich würde an Deiner Stelle einfach mal die Fuses nachschauen.

Gruß, Udo

Hallo, das ist vielleicht etwas Offtopic, aber vielleicht im Bezug auf Dein Vorhaben interessant.

Ich verweise mal auf folgenden Thread: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1271415071/12

Aus eigener Erfahrung heraus, wobei diese zugegebenermaßen allerdings noch nicht besonders umfassend ist, scheint die Max-Size die maximale Grenze eines uploadbaren Sketches bzw. Kompilats zu sein. Im Normalfall wird man wohl nie bis auf das letzte Byte den Speicher belegen.

Es gib eine Funktion, mit der man den freien Speicher anzeigen kann. Im Kehrschluß müßte man aus dem Maximalen Speicher - Bootloadergröße eigenlich auf die Max-Size schließen können. Allerdings nur ungefähr.

Für die "private" Anwendung würde ich sagen, bemese dem Wert nicht zuviel Aufmerksamkeit... es dürften in 99% aller Projekte eher die Kilobyte als die Byte entscheidend sein.

Aber um es auf den Punkt zu bringen: "Zur Laufzeit kann es sein, daß das RAM nicht reicht. Das liegt daran, daß der Stack und der Heap von verschiedenen Seiten allokiert werden." ;) Zitat ist geklaut ;)...

Lieber Gruß ChrisS

OK es war nicht im Playground sondern bei learning :) http://www.arduino.cc/en/Hacking/Programmer

Wenn man es so macht, wie dort beschrieben erscheint beim hochladen halt die maximale Größe wie sie im ?boards.txt“ drinsteht. Binary sketch size: #### bytes (of a 14336 byte maximum)

An den Fuses für den Bootloader wird von der IDE beim hochladen mit dieser Methode nichts geändert. Diese habe ich von Hand geändert.

Ich weiß nur nicht ob es ausreicht die maximale Größe im ?boards.txt“ zu setzen.

Aber es scheint zu funktionieren. Wenn ich mit großen statischen Tabellen jenseits der 14336 bytes hantiere schaufelt die IDE es ohne zu murren hoch.

Das mit dem malloc fürs RAM steht auf einem anderen Blatt, aber der reicht mir (noch :) )

Ich finde es halt nur praktisch in der IDE zu wählen, ob ich jetzt den Bootloader oder den ISP benutzen möchte. Darum habe ich das neue board eingetragen.

Grüße aus Aachen

Aha, jetzt hab ich's kapiert. Ist ja cool. Besten Dank für den Hinweis. Damit kann ich ab sofort also jeden beliebigen Atmel über die Arduino IDE flashen. Ich mag sie zwar nicht besonders aber gelegentlich ist sie ja ganz bequem ;)

Udo

Ich benutze die Auswahlmöglichkeit für den Seeeduino Stalker. Ich hätte ihn im "boards.txt" auch so nennen können. Aber so ist es allgemeiner.

Grüße aus Aachen