Ich hatte das Problem, dass bei meiner NanoWii 200 byte Flash Speicher gefehlt hatten. Also was tun? Auf die Arduino IDE verzichten und alles von Hand machen mit arduino-cmake. Allein durch das kompilieren mittels arduino-cmake war die Firmware ca 600 byte kleiner als zuvor. So geht’s:
Neue Firmware bauen
CMakeLists.txt im Verzeichnis der MultiWii Sourcen mit folgendem Inhalt anlegen:
cmake_minimum_required(VERSION 2.8)
set(MultiWii_SRCS MultiWii.ino)
set(MultiWii_BOARD leonardo)
set(MultiWii_SKETCH MultiWii.ino)
generate_arduino_firmware(MultiWii)
Danach folgende Befehle ausführen:
cd $MULTIWII_SOURCE
mkdir build
cd build
cmake -G "MSYS Makefiles" -DCMAKE_TOOLCHAIN_FILE=$ARDUINO_CMAKE\arduino-cmake\cmake\ArduinoToolchain.cmake ..
Im build Verzeichnis liegt danach eine MultiWii.hex
Firmware flashen
Nun wird’s spannend. Es war nicht ganz einfach die Firmware zu flashen, da der Leonardo Bootloader geresettet werden muss bevor man die neue Firmware mit avrdude flashen kann.
Hier findet man ein kleines python Script, welches uns diese Arbeit abnimmt.
Weiter geht’s dann so:
python reset.py /dev/ttyACM0
sleep 2
avrdude -patmega32u4 -cavr109 -P /dev/ttyACM0 -b57600 -D -Uflash:w:./MultiWii.hex:i
Fertig!