[[http://wiki.mikrokopter.de/en/SoftwareDevelopment|English]] = Softwareentwicklung, Compilieren = Das Downloaden und Compilieren eines im SVN abgelegten Quelltextes wird im Folgenden beschrieben. Interessierte können die Firmware der Flightcontrol selber modifizieren. Das Projekt ist zwar kein kompletter Open-Source, aber die hinein linkbare Lib (>V0.74) ist verfügbar und beinhaltet: - Bootloader Check ab FC2.1 - Empfängerroutinen - Telemetrie Grundprotokoll - + ? == unter Windows == Zuerst wird das komplette Projekt incl. aller Dateien auf deinen lokalen Computer übertragen, um es selber kompilieren zu können. Es hat sich folgende Vorgehensweise als vorteilhaft erwiesen: 1. Download und Installation von [[http://downloads.sourceforge.net/winavr/WinAVR-20060421-install.exe?use_mirror=mesh|WinAVR (LINK)]] (Alle neueren Versionen als WinAVR-20060421 zeigen Performanceverluste). Siehe auch [[http://forum.mikrokopter.de/topic-post124526.html|Forum]] * Zur Softwareentwicklung für den neuen AtMega1284-Prozessor benötigt man den [[http://downloads.sourceforge.net/winavr/WinAVR-20060421-install.exe?use_mirror=mesh|WinAVR-20060421 Compiler]] und einen [[http://www.mikrocontroller.com/files/WinAVR-20060421-patch_MikroKopter.zip|speziellen Patch von H&I]]. Der Patch ersetzt einige Ordner im Installationsverzeichnis von WinAVR. * Zusätzlich muss in der Datei "makefile" des Projekts, der Prozessortyp mit dem Befehl "MCU = atmega1284p" gewählt werden. 2. Download und Installation von einem [[Subversion]]-Client und Einrichten des Zugriffs auf den Source-Code. Das alles steht hier: MikroKopterRepository Oder auch hier im Forum von Cascade; [[http://forum.mikrokopter.de/topic-post368406.html#post368406|Link]] Weiter gehts mit dem Kompilieren, was jetzt nur noch ein paar Klicks sind. Zum Kompilieren startet man "Programmers Notepad", welches mit "WinAVR" mit installiert wurde. Im "Programmers Notepad" öffnen wir unter "File" -> "Open Project(s)..." die jeweilige Projektdatei der Quellen, welche kompiliert werden sollen. Angenommen, es sollen Jokos Sourcen kompiliert werden, dann wählt man {{{ C:\MKSVN\FlightCtrl\branches\Flight-Ctrl_V0_xx_GPS_Joko\Quellen_Flight-Ctrl_V0_68d_4_GPS_CMPS_MM3FP_FREEUART\flight.pnproj }}} aus. Nun muss im "Programmers Notepad" nur noch unter "Tools" zuerst der Punkt "Make Clean" und dann "Make All" ausgewählt werden. Nachdem der Compiler fertig ist und im "Output" Fenster (unten) ein {{{ Errors: none kore-------- end -------- }}} zeigt, steht das neue Hexfile zur Verfügung. Die erzeugten Hexfiles werden üblicherweise im Stammverzeichnis der jeweiligen Sourcedateien erzeugt, bei manchen Sourcen extra Verzeichnisse wie z.B. "Hex-Files" vorhanden sind. Wer nicht sicher ist, prüft das Datum der Files. Ein "Make Clean" räumt das Sourcen-Verzeichnis auf, in dem es sämtliche nicht benötigten, beim Kompilieren erstellten Temporär-Dateien löscht. Die Hex Datei bleibt dabei erhalten. {{/ucwiki//ucwiki//ucwiki//ucwiki//ucwiki//ucwiki//ucwiki/../../../mk-style/img/alert.png%3Faction%3Dcontent%3Faction%3Dcontent%3Faction%3Dcontent%3Faction%3Dcontent%3Faction%3Dcontent%3Faction%3Dcontent?action=content|/!\|width="16",height="16"}} Falls die Kompilierung unter Windows 7 x64 aufgrund von nicht gefundenen Pfaden fehlschlägt ist ein einmaliges Starten von "Programmers Notepad [WinAVR]" mit Administratorrechten notwendig. Zum Upload des Compilats in die FC benutzt man am besten das KopterTool. Alternativ kann auch AvrDude benutzt werden. == unter Linux == Bevor man loslegen kann, benötigt man den "avr-gcc"-Compiler. Unter Debian-basierten Betriebssystemen wie etwa Ubuntu installiert man diesen mit {{{ apt-get install gcc-avr avr-libc }}} . Zum Übertragen des übersetzten elf-files über die SerCon benötigt man AvrDude. Das aktuelle AvrDude aus Debian unterstützt dies nicht, man muss erst ein eigenes AvrDude übersetzen. Wie dies funktioniert, steht hier im Wiki unter AvrDude. Man kann den Mikrokopter-Quellcode auch unter Linux übersetzen. Ein beherztes: {{{ svn co http://mikrokopter.de/mikrosvn/FlightCtrl }}} bringt auch unter Linux die Sourcen auf die Platte. Will man nur die aktuelle Version haben, reicht auch ein {{{ svn co http://mikrokopter.de/mikrosvn/FlightCtrl/tags/ }}} Wobei man die Versionsnummer durch die aktuelle ersetzt (z.B. V0.71h). (Mehr zu Subversion und dem Repository findet sich hier: MikroKopterRepository) Der Befehl {{{svn co}}} (Subversion checkout) sorgt dafür, dass eine lokale Kopie des FlightCtrl-Quellcodes auf die Festplatte des lokalen Rechners kopiert wird. Sobald SVN den Kopiervorgang beendet hat, wechselt man einfach in das Unterverzeichnis mit dem Quellcode, den man übersetzen möchte und führt den Befehl {{{make}}} aus. Daraufhin wird eine .elf-Datei erstellt. Diese kann man nun mittels AvrDude an den Quadcopter übertragen. Falls es bei {{{make}}} den Übersetzungs-Fehler gibt (Ubuntu 8.10 intrepid): {{{ uart.c: In function ‘__vector_20’: uart.c:133: warning: asm operand 0 probably doesn’t match constraints uart.c:133: error: impossible constraint in ‘asm’ }}} dann hilft es, im File /usr/avr/include/avr/wdt.h nach {{{#define wdt_enable(value)}}} zu suchen und dort nach der Zeile {{{ || defined(__AVR_ATmega644__) \ }}} die folgende Zeile einzufügen: {{{ || defined(__AVR_ATmega644P__) \ }}} = Einspielen der neuen Firmware = Die Firmware muss mit dem KopterTool eingespielt werden (wie jede normale Firmware auch) /!\ Einspielen über einen ATMEL ISP-Programmer würde den Bootloader löschen, danach könnte man keine normale Firmware mehr auf die FC laden -> also immer seriell per KopterTool updaten = Projekt Beispiele = [[http://www.mikrokopter.de/ucwiki/Firmware-0.88e-Telemetrie%2B-V1.01|Telemetrie+ Version v0.88e]] [[http://forum.mikrokopter.de/topic-29470.html|Jeti+ Version v0.86d]] [[http://forum.mikrokopter.de/topic-30377.html|HOTT+ Testversion, FC v0.86d]] [[http://forum.mikrokopter.de/topic-24157.html|Spektrum DX8 Channel Expander for 12 Channels!]] [[http://forum.mikrokopter.de/topic-30863.html|ACC-HH Version: V0.86d_ACC-HH_HR_MartinR]] [[http://forum.mikrokopter.de/topic-3581.html|Code Redesign by killagreg]] [[http://forum.mikrokopter.de/topic-23651.html|Support für Mode 1 und 4 in FC V0.84a]] [[http://forum.mikrokopter.de/topic-15536.html|dongfang FC Rewrite]]