MikroKopter - Forum » Navi-Ctrl & MK GPS » Navi-source compilieren

Navi-source compilieren

Neues Thema Antwort

Seite: 1 2 >

Autor Neuer Beitrag
Mitglied
Registriert seit: Jul 2008
Beiträge: 678
Ort: tiefstes Allgäu
Kann mir jemand sagen, wie das compilieren des Navi-codes funktioniert? Sprich ich mein Hex-file selber erzeugen mag?

am besten DAU-verständlich? :oops: :roll: :oops:

den FC-code bekomme ich ja compiliert, sprich SVN habe ich dank Tortoise auf meiner Platte und WinAVR ist auch installiert.
Moderator, MK-Betatester
Registriert seit: Aug 2007
Beiträge: 2908
du brauchst die Keil uvision dafür
Mitglied
Registriert seit: Jul 2008
Beiträge: 678
Ort: tiefstes Allgäu
Ahso. Danke. Aber ich bin doch DAU diesbezüglich :oops:
Beim googlen bin ich soweit gekommen:
http://www.keil.com/download/list/uvision.htm
Und dann? :oops:
« Bearbeitet von Jumpjet am 21.12.2008 13:09. »
Mitglied
Registriert seit: Sep 2008
Beiträge: 18
Ort: Ilsede
Jumpjet meinte
Beim googlen bin ich soweit gekommen:
http://www.keil.com/download/list/uvision.htm
Und dann? :oops:

µVision ist Bestandteil des RealView Microcontroller Development Kit der Firma Keil. Kostet hier ab etwa 2.000 Euro.

Ob sich der Navi-Ctrl-Source mit der Testversion in Anbetracht der Einschränkungen übersetzen lässt kann ich nicht entscheiden.

-Lutz
Mitglied
Registriert seit: Jul 2008
Beiträge: 678
Ort: tiefstes Allgäu
Na super. 32kbyte limit.

Heisst das für mich, ich habe zwar den source-code, könnte ihn auch beliebig abändern nach meinen Vorstellungen, kann ihn aber nicht kompilieren, bzw nur unter Einsatz von 2000 Euronen? :roll: :( :'(
Moderator, MK-Betatester
Registriert seit: Aug 2007
Beiträge: 2908
Imho nutzt die uvision den gcc als unterbau - müsste eigentlich nur n makefile geschrieben werden und man kann das auch ohne Uvision übersetzen. Vielleicht findet sich ja jemand der über die feiertage ein wenig zeit hat und das mal angeht - ich fänd das auch sehr cool. Die bindung an die Uvision hat mich bisher davor abgehalten mich intensiver mit dem code der navi zu beschäftigen.
Mitglied
Registriert seit: Jul 2007
Beiträge: 61
Hallo,

ich habe den Source der Navi-Ctrl noch nicht gesehen, aber wenn keine
Keil spezifischen Teile enthalten sind sollte es mit GCC funktionieren.

Hier könnte man dann als IDE Eclipse benutzen.

Folgende freie Optionen gibt es:

WinARM
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/#winarm

GNUARM
http://www.gnuarm.org/

anglia
http://www.anglia.com/columbus/software.asp

anglia hat sich auf die STR Linie spezialisiert, und hat eine eigene IDE.

CodeSourcery
http://www.codesourcery.com/gnu_toolchains/sgpp/editions.html

YAGARTO
http://www.yagarto.de/index.html

Als IDE wird hier Eclipse eingesetzt, OpenOCD ist etwas älter.

Viele Grüße,

mifi
« Bearbeitet von mifi am 21.12.2008 16:08. »
Entwickler, Admin
Registriert seit: Feb 2006
Beiträge: 3790
Ort: Ostfriesland
Hallo,

uVision ist bloss der Editor, benutzt wird gcc (kann man bei Keil auswählen)

Gruß,
Ingo
MK-Betatester
Registriert seit: Jan 2008
Beiträge: 1834
Jumpjet meinte
Na super. 32kbyte limit.
Heisst das für mich, ich habe zwar den source-code, könnte ihn auch beliebig abändern nach meinen Vorstellungen, kann ihn aber nicht kompilieren, bzw nur unter Einsatz von 2000 Euronen? :roll: :( :'(


Also, so schlimm ist es ja nun nicht.

Als erstes läd man dich von https://www.keil.com/demo/eval/arm.htm
die Entwicklungsumgebung Uvision mit dem Keil-Compiler (MDK324.EXE) herunter,
und anschließend von der gleichen Seite den passenden GCC-Compiler GCCARM331.EXE.
Dann installiert man beides.

In den Sourcen für die NC befindet sich die UVision Projektdatei mit dem Namen Navi-Ctrl.Uv2, welche bereits den GCC als Compiler verwendet.
Nun klickt man doppelt auf diese Datei und das Uvision öffnet sich, und man kann das Projekt kompilieren.
Es werden wahrscheinlich keine Fehler aber 12 Warnungen auftauchen. Danach hat man im Ordner OBJ die Hex-Datei liegen, welche man dann auf die NC flashen kann.

Aber Achtung, die GPS-Routinen sind im public code nicht enthalten. Ein Blick in die GPS.c offenbart es im Detail. Der Logigframework ist komplett enthalten. Lediglich die berechnung der GPS-Stick-Bewegungen aus den Lageinforamtionen muss noch implementiert werden.

Alle anderen Funktionen wie KML-Logging etc. sollten funktionieren.

Viel Spass beim Programmieren

Gregor
MK-Betatester
Registriert seit: Jun 2008
Beiträge: 1030
Ort: Essen NRW
Hallo Gregor
bei mir sieht es so aus:

Build target 'Navi-Ctrl'
compiling main.c...
compiling interrupt.c...
compiling ramfunc.c...
compiling menu.c...
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
2 [main] arm-uclibc-gcc 2972 sync_with_child: child 5780(0x11C) died before initialization with status code 0x1
25809 [main] arm-uclibc-gcc 2972 sync_with_child: *** child state waiting for longjmp
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
1344988 [main] arm-uclibc-gcc 2972 sync_with_child: child 5848(0x120) died before initialization with status code 0x1
1381574 [main] arm-uclibc-gcc 2972 sync_with_child: *** child state waiting for longjmp
compiling printf_P.c...
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
2 [main] arm-uclibc-gcc 4840 sync_with_child: child 1876(0x11C) died before initialization with status code 0x1
65934 [main] arm-uclibc-gcc 4840 sync_with_child: *** child state waiting for longjmp
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
1176804 [main] arm-uclibc-gcc 4840 sync_with_child: child 3896(0x130) died before initialization with status code 0x1
1210205 [main] arm-uclibc-gcc 4840 sync_with_child: *** child state waiting for longjmp
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
3321364 [main] arm-uclibc-gcc 4840 sync_with_child: child 4204(0x13C) died before initialization with status code 0x1
3365606 [main] arm-uclibc-gcc 4840 sync_with_child: *** child state waiting for longjmp
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
7470437 [main] arm-uclibc-gcc 4840 sync_with_child: child 5740(0x148) died before initialization with status code 0x1
7499046 [main] arm-uclibc-gcc 4840 sync_with_child: *** child state waiting for longjmp
arm-uclibc-gcc: fork: Resource temporarily unavailable

von mir gekürzt


compiling usb_int.c...
compiling usb_init.c...
compiling usb_mem.c...
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
2 [main] arm-uclibc-gcc 5280 sync_with_child: child 1880(0x11C) died before initialization with status code 0x1
25872 [main] arm-uclibc-gcc 5280 sync_with_child: *** child state waiting for longjmp
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
1223304 [main] arm-uclibc-gcc 5280 sync_with_child: child 5424(0x120) died before initialization with status code 0x1
1245349 [main] arm-uclibc-gcc 5280 sync_with_child: *** child state waiting for longjmp
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
2336694 [main] arm-uclibc-gcc 5280 sync_with_child: child 3524(0x144) died before initialization with status code 0x1
2374260 [main] arm-uclibc-gcc 5280 sync_with_child: *** child state waiting for longjmp
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
4480978 [main] arm-uclibc-gcc 5280 sync_with_child: child 5504(0x150) died before initialization with status code 0x1
4507722 [main] arm-uclibc-gcc 5280 sync_with_child: *** child state waiting for longjmp
C:\Cygnus\arm-tools\bin\arm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
8602308 [main] arm-uclibc-gcc 5280 sync_with_child: child 3396(0x160) died before initialization with status code 0x1
8663671 [main] arm-uclibc-gcc 5280 sync_with_child: *** child state waiting for longjmp
arm-uclibc-gcc: fork: Resource temporarily unavailable
linking...
arm-uclibc-gcc: ./obj/printf_p.o: No such file or directory
arm-uclibc-gcc: ./obj/timer.o: No such file or directory
arm-uclibc-gcc: ./obj/i2c.o: No such file or directory
arm-uclibc-gcc: ./obj/ubx.o: No such file or directory
arm-uclibc-gcc: ./obj/uart2.o: No such file or directory
arm-uclibc-gcc: ./obj/fifo.o: No such file or directory
arm-uclibc-gcc: ./obj/usb_mem.o: No such file or directory
Target not created

Gruss Peter
« Bearbeitet von micropet am 21.12.2008 17:53. »
Mitglied
Registriert seit: Mar 2007
Beiträge: 4485
Ort: MVP
.
hat einer den ARM-GCC schon unter ECLIPSE zusammengebaut?


.
MK-Betatester
Registriert seit: Jul 2008
Beiträge: 1104
Ort: ERH
Hi,

selbst wenn ich es schaffen würde die Quellen zu übersetzen wäre das Ergebnis doch ziemlich wertlos, da in gps.c eine Kleinigkeit fehlt:

// IMPORTANT NOTE:
// This is only a dummy implementation for errorfree compiling of the NaviCtrl sources.
// The GPS navigation routines are NOT included !
......
// implement your control code here based
// in the info available in the TargetDeviation, GPSData and FromFlightCtrl.GyroHeading
GPS_Stick.Nick = 0;
GPS_Stick.Roll = 0;
GPS_Stick.Yaw = 0;

Das NC schickt somit keine Steuerkommandos an die FC!
Ich dachte, dass wenn schon die Quellen nicht dabei sind, dass wenigstens das Object-File dabei wäre. Ist es aber nicht.

Somit wären eigene Anpassungen erst mal nicht möglich.
Oder sehe ich da was falsch?

Viele Grüße
Rainer
Mitglied
Registriert seit: Jul 2008
Beiträge: 678
Ort: tiefstes Allgäu
Nein, das siehst Du leider völlig richtig :(
Mitglied
Registriert seit: May 2007
Beiträge: 2495
Ort: Liebenburg
Hallo

ja unter Eclipse kann man die Sourcen compilieren, es fehlt nur ein bisschen.

Gruß Wolfgang
Mitglied
Registriert seit: Apr 2007
Beiträge: 1248
ich habe mir die Navi-Ctrl Quellen zwischenzeitlich bzgl. GPS auch schon mal angesehen. Also bis auf wirklich ganz wenige Zeilen ist da im Grunde alles drin. Die komplette Logik bzgl. GPS-Modi, Waypoint, usw.

Sofern Holger, Ingo und Killagreg (bitte Feedback von euch) nichts dagegen haben könnte ich eine Version im SVN zur Verfügung stellen. Es wird jedoch nicht 100% die gleiche GPS Performance sein, da ich einfach einen simplen PID Regler einbauen würde. Falls es also einen Object-Code geben wird, wäre diese Lösung fürs selbercompilieren sicherlich professioneller.

Schöne Grüße
Jochen
Mitglied
Registriert seit: Oct 2008
Beiträge: 45
Ort: Bad Harzburg
Hat sich zu diesem Thema schon was getan? Ich habe jetzt mit Keil änderungen am Code gemacht und würde die natürlich gerne auch mit allen funktionen nutzen. Ist denn GPS inzwischen zum "selbercomilieren" drin oder fehlt mir da jetzt was?
MK-Betatester
Registriert seit: Jan 2008
Beiträge: 1834
KiliPet meinte
Hat sich zu diesem Thema schon was getan? Ich habe jetzt mit Keil änderungen am Code gemacht und würde die natürlich gerne auch mit allen funktionen nutzen. Ist denn GPS inzwischen zum "selbercomilieren" drin oder fehlt mir da jetzt was?


Das GPS-Objectfile ist noch nicht drin. Zeitmangel und andere Prioritäten zwingen einen derzeit dazu. Wenn aber hier mal jemand die Lust verspürt, die Navi Sourcen auf ein Makefile für den verwendeten GCC umzurüsten, würde das sicher viel schneller gehen.
Mitglied
Registriert seit: Apr 2007
Beiträge: 1248
da es beim Compilieren der FC Sourcen ja in letzter Zeit Problemchen mit der jeweiligen Compilerversion gab, würde mich mal interessieren welche Version denn für die NC Software verwendet wird.
Mitglied
Registriert seit: Apr 2009
Beiträge: 60
killagreg meinte
KiliPet meinte
Hat sich zu diesem Thema schon was getan? Ich habe jetzt mit Keil änderungen am Code gemacht und würde die natürlich gerne auch mit allen funktionen nutzen. Ist denn GPS inzwischen zum "selbercomilieren" drin oder fehlt mir da jetzt was?


Das GPS-Objectfile ist noch nicht drin. Zeitmangel und andere Prioritäten zwingen einen derzeit dazu. Wenn aber hier mal jemand die Lust verspürt, die Navi Sourcen auf ein Makefile für den verwendeten GCC umzurüsten, würde das sicher viel schneller gehen.



Gibt's es Neuigkeiten in diesem Bereich?
Hat jemand eventuell auch eine alternative implementiert?

Ich arbeite an eigenem GPS code (zum Spass und lernen), aber idealerweise moechte ich das der originalcode den Kopter Steuert, mein eigener Code soll im Hintergrund laufen damit ich differenzen in den Steuerkommandos und Fehler im Code loggen kann. Meinen eigenen Code gleich von Anfang an fliegen lassen (wenn es mal soweit ist, momentan stehen nur ein paar gleichungen auf dem Papier) gefaellt mir nicht so.

Dazu habe ich noch eine allgemeine Frage: Wie testet ihr euren Code (im allgemeinen, FC, BL, NC etc) ? Durch simulation?

arti
« Bearbeitet von arti am 22.09.2009 13:28. »
Mitglied
Registriert seit: Apr 2009
Beiträge: 60
Wie bereits im Forum vorgeschlagen habe ich den uVision und GCC compiler von Keil installiert, beim ersten compilieren festgestellt das das Projekt den Codesourcery compiler sucht, welchen ich auch gleich installiert habe. Jetzt kommt am Ende trotzdem noch eine Fehlermeldung:



linking...
c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.3.3/../../../../arm-none-eabi/lib\libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text+0x18): undefined reference to `_sbrk'
collect2: ld returned 1 exit status
Target not created


Ideen?
Mitglied
Registriert seit: Apr 2009
Beiträge: 60
CodeSourcery llinkt mit de newlib von RedHat. Was fehlt sind einige syscalls. Im Netzfindet man einige Beisiele, z.b hier: http://www.yagarto.de/download/yagarto/syscalls.c Diese Datei packt man einfach zu den anderen Sourcen, dann klappt das mit dem Compilieren. Das Resultierende .hex File ist etwas groesser als die originale (trotz fehlendem GPS Code), laeuft aber Problemlos. Nun versuche ich das ganze unter Linux hinzubekommen, aber Das .hex File lasuft nicht, der Loader sagt beim flashen das der Controllertyp nicht stimmt. Die Compiler und Linkerflags sind aber die gleichen. Aber das Thema wurde schon unter dem Post http://forum.mikrokopter.de/topic-11624.html angefangen, und dort mache ich auch weiter...

arti
Mitglied
Registriert seit: Apr 2009
Beiträge: 60
Hi,

NaviControl kann man jetzt auch unter Linux compilieren. Im Thread http://forum.mikrokopter.de/topic-11624-2.html
beschreibe ich wie es geht. Jetzt fehlt nur noch der GPS code als Lib zum linken ;-)

Gruesse,

Arti
« Bearbeitet von arti am 03.12.2009 09:55. »
Mitglied
Registriert seit: Nov 2010
Beiträge: 132
Ort: Landshut
Hallo,
weis jemand wie der aktuelle Stand hier ist? Würde gerne auch an der NC Firmware testen (Logmöglichkeiten auf der SD). Finde leider keine uvision Demo mehr zum downloaden?!
Gruß Florian
Mitglied
Registriert seit: Apr 2009
Beiträge: 60
Hi,

I got a couple of requests for instructions by mail. I did not compile NC since 0.15c, as more code was removed from svn. Thus it made to much work to continue and I stopped working on it. I can not provide more support as I did post. If you try to compile NC by your own, please try 0.15c or earlier and follow the instructions. In same cases there might be minor issues with filenames and lower/upper case. You have to fix it.

Good luck,

arti
Mitglied
Registriert seit: Jan 2010
Beiträge: 332
Ort: München Zentrum
micropet meinte
C:Cygnusarm-toolsbinarm-uclibc-gcc.exe: *** heap allocated but not at 0x7A0000
2 [main] arm-uclibc-gcc 2972 sync_with_child: child 5780(0x11C) died before initialization with status code 0x1
25809 [main] arm-uclibc-gcc 2972 sync_with_child: *** child state waiting for longjmp

Das Problem hab ich hier auch. Andere offenbar nicht. Weiß jemand, wie man das löst?

Ich habe die MDK324.EXE nicht auftreiben können, dafür aber eine MDK311.EXE. Ob es daran liegt?
Allerdings scheint das ja eine Fehlermeldung von den gcc-Tools zu sein - und da habe ich die GCCARM331.EXE installiert, die ja wohl heder andere hier auch verwendet, nicht?

(Nachtrag)

Ich hab die selbe Keil-Software nochmal unter XP SP2 installiert - da gibt's diese Fehler nicht! Dank VMware :)

Das heißt: Es gibt wohl Probleme mit dem GCC unter Windows 7. Lösung: XP.
« Bearbeitet von tempolo am 05.08.2012 18:11. »

Neues Thema Antwort

Seite: 1 2 >

MikroKopter - Forum » Navi-Ctrl & MK GPS » Navi-source compilieren