~2kB mehr platz auf dem NanoWii

ronco

Erfahrener Benutzer
#1
Hi,

da auf dem leonardo ja nur wenig platz (flash) ist, hab ich heute mal versucht nochwas raus zu holen :D

also arduino läd mit MWC immer gleich auch den USB support (code) mit hoch. dieser ist im orginal zusatnd 4.2KB groß. und da auch der bootloader ja wegen dem USB kram größer ist, frisst das insgesamt rund 8KB! also arduino läd sketche bis zu ner größe von 28672 byte auf den leonardo (von 32kB gesamt speicher) und in jedem sketch sind halt schon die 4KB usb kram drinn (die rechnet der einfach zu MWC dazu).
an der bootloader größe lässt sich so einfach nix ändern.

aber wenn ihr die dateien im anhang in arduino 1.0.3 installiert, läd er nur noch das nötigste mit MWC drauf und das sind eben nur 2kB ... also hat man 2KB mehr platz :)

installation:
kopiert die dateien aus der zip datei (im anhang)
in den ordner arduino/hardware/arduino/cores/arduino und überschreibt die existierenden.

ich hab den support für HID (maus oder tastatur) und die Serial fuktionen für den USB entfernt. beides wird aber für MWC nicht benötigt.

solltet ihr das doch wieder haben wollen .. die orginal files giebts bei arduino.cc ;)


gruß

Felix
 

Anhänge

Zuletzt bearbeitet:

mrheat

Neuer Benutzer
#4
endlich passt meine traumconfig drauf, endlich nanowii + i2c gps + mag 5883 + bmp085 althold + camstab + ppm

danke dir felix

ps: hats von euch einer unter OSX versucht? habs damit nicht hingekriegt, unter Win7 ging es aber problemlos
 

ronco

Erfahrener Benutzer
#5
endlich passt meine traumconfig drauf, endlich nanowii + i2c gps + mag 5883 + bmp085 althold + camstab + ppm

danke dir felix

ps: hats von euch einer unter OSX versucht? habs damit nicht hingekriegt, unter Win7 ging es aber problemlos
Hi,

ne habe keinen mac :( was geht denn da nicht? dacht immer diese files wären für alle OS gleich .. weils ja de files sind die mit auf die MCU geladen werden ..

gruß

felix
 

Mike81

Erfahrener Benutzer
#6
Hab zwar keinen Leonardo zum testen, aber eigentlich müsste es funktionieren, man muss erstmal in den Paketinhalt:
slim_leonardo1.png



Dann in folgendes Verzeichnis hangeln:
slim_leonardo.png
 
#9
Hi,

da auf dem leonardo ja nur wenig platz (flash) ist, hab ich heute mal versucht nochwas raus zu holen :D

also arduino läd mit MWC immer gleich auch den USB support (code) mit hoch. dieser ist im orginal zusatnd 4.2KB groß. und da auch der bootloader ja wegen dem USB kram größer ist, frisst das insgesamt rund 8KB! also arduino läd sketche bis zu ner größe von 28672 byte auf den leonardo (von 32kB gesamt speicher) und in jedem sketch sind halt schon die 4KB usb kram drinn (die rechnet der einfach zu MWC dazu).
an der bootloader größe lässt sich so einfach nix ändern.

aber wenn ihr die dateien im anhang in arduino 1.0.3 installiert, läd er nur noch das nötigste mit MWC drauf und das sind eben nur 2kB ... also hat man 2KB mehr platz :)

installation:
kopiert die dateien aus der zip datei (im anhang)
in den ordner arduino/hardware/arduino/cores/arduino und überschreibt die existierenden.

ich hab den support für HID (maus oder tastatur) und die Serial fuktionen für den USB entfernt. beides wird aber für MWC nicht benötigt.

solltet ihr das doch wieder haben wollen .. die orginal files giebts bei arduino.cc ;)


gruß

Felix
Hi Felix,

ich hab' gerade diesen Mod mit Arduino V1.0.3 und MultiWii MultiWii version r1356 (20130301) - pre2 ausprobiert.

Mein Arduino (auf Mac OSX) zeigt mir jedoch immer noch eine maximale Codegröße von 28672bytes an.

Bist du dir sicher dass du in deiner 'Boards.txt' keine Änderung gemacht hast? Die sieht bei mir so aus (nur der Teil zum Leonard):

Code:
##############################################################

leonardo.name=Arduino Leonardo
leonardo.upload.protocol=avr109
[COLOR="#FF0000"]leonardo.upload.maximum_size=28672[/COLOR]
leonardo.upload.speed=57600
leonardo.upload.disable_flushing=true
leonardo.bootloader.low_fuses=0xff
leonardo.bootloader.high_fuses=0xd8
leonardo.bootloader.extended_fuses=0xcb
leonardo.bootloader.path=caterina
leonardo.bootloader.file=Caterina-Leonardo.hex
leonardo.bootloader.unlock_bits=0x3F
leonardo.bootloader.lock_bits=0x2F
leonardo.build.mcu=atmega32u4
leonardo.build.f_cpu=16000000L
leonardo.build.vid=0x2341
leonardo.build.pid=0x8036
leonardo.build.core=arduino
leonardo.build.variant=leonardo

##############################################################
EDIT: So sieht das aus wenn man die maximale Codegröße in der 'boards.txt' um 2kbytes größer macht.

mod der Datei boards.jpg

@Felix: Jetzt müsste man noch wissen wie groß der Sketch denn wirklich werden darf. Unter Umständen müssen aber auch die Fuses angepasst werden (falls das Bootloader-Segment mit 4kbytes reserviert ist).

Gruss
Jörg

aBUGSworstnightmare
 
Zuletzt bearbeitet:

ronco

Erfahrener Benutzer
#10
hi jörg,

die max upload size bleibt gleich ;) da diese sich ja an dem freien plaz der neben dem bootloader bleibt orientiert. der mod ändert nur die größe des sketch wenn du ihn kompilierst.

also mach mal

Code:
void setup(){}

void loop(){}
das ist bei mir ohne mod 4242 bytes groß.. und mit mod 2.290 bytes..

wiegesagt habe auch versucht den bootloader kleiner zu machen .. aber das bisher eider ohne erfolg.

gruß

Felix
 
#11
Hi Felix,

noch schöner wäre es halt mit einem kleinen Bootloader! Leider haben die Arduino-Jungs (oder wer auch immer den Catarina Bootloader verbrochen hat) vergessen dass 4kbytes bei einer kleinen MCU echt viel ist (zumal der Großteil des Catarina-Loaders aus 0xFF - d.h. leerem Speicher - besteht.

Das Ding nutzt LUFA. Soweit, so gut! Problem ist nur, dass die aktuelle Version den Bootloader nicht überstetzt und ich die alte partout nicht zur Mitarbeit bewegen kann. Ist halt doof wenn einem die CMD-Shell sagt dass das 'make' Kommando eine Datei nicht finden konnte. Besser wäre halt, wenn da auch stehen würde welche, bzw. wo die denn aufgerufen wird. So ist das munteres Rätselraten was ich nach mittlerweile einigen Stunden endgültig zu den Akten gelegt habe.

Wer die AVR-GCC Tools und LUFA installiert hat soll bitte mal einen neuen Bootloader machen. Dazu im Makefile (im Ordner Caterina) die folgende Änderung machen:

Code:
# Starting byte address of the bootloader, as a byte address - computed via the formula
#   BOOT_START = ((FLASH_SIZE_KB - BOOT_SECTION_SIZE_KB) * 1024)
#
# Note that the bootloader size and start address given in AVRStudio is in words and not
# bytes, and so will need to be doubled to obtain the byte address needed by AVR-GCC.
FLASH_SIZE_KB        = 32
#BOOT_SECTION_SIZE_KB = 4 --> das gibt einen 4kBytes großen Bootloader(!)
BOOT_SECTION_SIZE_KB = 2
BOOT_START           = 0x$(shell echo "obase=16; ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024" | bc)
Der Rest sollte unverändert bleiben können; bzw. Felix, was hast du geändert um ihn schneller starten zu lassen? Kann sein dass der Bootloader-Code zu groß fr das 2kBytes Segment ist; ist auf alle Fälle einen Versuch wert.

Schön wäre es, wenn die Arduino-Jungs ein vernünftiges Projekt-Template für eigene Bootloader anbieten würden.

Zum Glück wird man sowas bei meinem neuen FC (wenn er denn mal fertig ist) nicht brauchen!

Gruss
Jörg
 
Zuletzt bearbeitet:

ronco

Erfahrener Benutzer
#13
Hi Jörg,

also die lufa 111009 lib haste ja .. hier sind die sources mit denen ich rumprobiert habe .. die fast_start ist die, die jetzt überall drauf ist.. und das leonardo_optiBL war mein letzter versuch den zu verkleinern .. beim kompilieren mit windAVR sagt der mir das die 33xxbytes groß sei.. und wenn ich im make file auf 2kb umstelle mekert AVR studio das das net passt ;) .. aber wenn du das was hinbekommst.. den kram kann man so kompilieren .. musst nur den pfad zur lufa lib im makefile anpassen.

gruß

Felix
 

Anhänge

fuerty

Neuer Benutzer
#14
Hallo guten abend
hab auch dass problem mit file zu gross hab auch schon den patch drin aber immer noch am meckern , jemand noch eine idee?
gruss jürgen
 

Ori0n

Back again
#15
alles ausklammern was du nicht brauchst. Nur die wichtigsten einstellungen drin lassen, GPS und den ganzen Blödsinn ausklammern. Wennsa dann nicht geht haben wir echt ein Problem.

Oder die elegantere Variante: MultiWii 2.1 verwenden
 

fuerty

Neuer Benutzer
#16
Hallo OriOn nur mit den wichtigsten geht es jetzt gerade aber wieso kauft man sich dann ein gpsboard mit wenn man es auskommentieren muss. :-( werd wohl mal warten was da noch aus frankreich kommt an antwort....
gruss jürgen
 

Ori0n

Back again
#17
wenn du GPS benutzt, dann natürlich nicht auskalmmern. Das war eher allgemein gemeint, nicht auf dich bezogen
dann versuch Versoin 2.1, da geht soweit ich weiß alles.
 

cesco1

Erfahrener Benutzer
#18
Ich habe die slim_leonardo installiert und das geht wunderbar, es passen 2k mehr drauf.

Aber die blaue arm led meiner nanowii läuft nicht mehr. Das verhalten ist dass die led läuft wenn ich über usb einen sketch hochgeladen habe, aber sie geht nicht wenn ich vorher nichts hochgeladen habe. Ich vermute da wird etwas nicht initialisiert.
 

Ori0n

Back again
#20
Funktioniert auf allen Boards mit dem 32u4 Prozessor. Du brauchst es nur, wenn du GPS benutzen willst, wenn nicht, dann ist der Speicher im Prozessor auch ohne diesem Mod ausreichend
 
FPV1

Banggood

Oben Unten