Jump to content

Fehler beim Compilieren von Brick-Firmware


Recommended Posts

Hallo zusammen,

 

ich habe unter Windows 7 eine Build-Umgebung aufgesetzt, um selbst Brick Firmware ändern und kompilieren zu können.

 

Dazu habe ich mich an diese Anleitungen gehalten:

http://www.tinkerforge.com/de/doc/Software/FirmwaresAndPlugins_BuildingBrickFirmware.html

http://www.tinkerforge.com/de/doc/Software/Firmwares_And_Plugins.html#firmwares-and-plugins-install

 

Ich habe Sourcery CodeBench Lite 2013.11-24, CMake 3.61 und Make 3.8.1 installiert - die Versionsabfragen auf Kommandozeilenebene funktionieren alle (Path-Variable ist entsprechend gesetzt), demnach sollten die Tools alle einsatzbereit sein.

Entsprechend der o.a. Anleitung zum Compilieren einer Brick-Firmware starte ich dann das Skript "generate_makefile.bat" - auch das funktioniert noch, der "build" Ordner wird entsprechend angelegt. Mit

c:\mulc\tf\master-brick\software\build
make

starte ich dann den Compilier-Vorgang - das funktioniert auch soweit, bis am Ende dann eine Fehlermeldung kommt, auf die auch bereits in der Tinkerforge-Anleitung verwiesen wird:

process_begin: CreateProcess(NULL, S -O binary master-brick.elf master-brick.bin, ...) failed.
make (e=2): Das System kann die angegebene Datei nicht finden.

 

Entsprechend den Empfehlungen bzgl. dieser Fehlermeldung führe ich "generate_makefile.bat" nochmals aus und starte danach erneut

c:\mulc\tf\master-brick\software\build
make

 

Laut Anleitung sollte der Compilier-Vorgang nun durchlaufen und eine .bin-Datei im Ordner "build" erzeugen. Das tut bei mir leider nicht, nach dem erneuten make-Aufruf kommt bei mir die Fehlermeldung:

 

ARM-NO~3.EXE: error: nosys.specs: No such file or directory
make[2]: *** [CMakeFiles/master-brick.elf.dir/src/communication.obj] Fehler 1
make[1]: *** [CMakeFiles/master-brick.elf.dir/all] Fehler 2
make: *** [all] Fehler 2

 

Auffallend ist, dass zuvor nur beim 2. Aufruf von "generate_makefile.bat" eine CMake Warning kommt:

Manually specified variables were not used by the project:
CMAKE_TOOLCHAIN_FILE

 

Beim 1. Aufruf der Batch-Datei kommt diese Warnung nicht.

 

Letztendlich liegt im "build" Ordner dann nur die compilierte .elf-Datei, die .bin-Datei wird aufgrund des Fehlers nicht erzeugt.

 

Könnt ihr mir bitte einen Tipp geben, wo hier der Haken ist?

 

(Der Quellcode ist übrigens von Stand heute, frisch aus den Git-Repos als zip-Dateien geladen...)

 

Besten Dank vorab und viele Grüße,

Tinkee24-7

 

 

 

 

Link to comment
Share on other sites

Hallo photron,

 

gar kein Problem...

 

Vielen Dank für den von dir geposteten Link zu der Anleitung. Diese kenne ich auch - bin aber eben eher in Windows zu Hause und wollte es deswegen erst mal auf dem Windows-Weg probieren  ;)

 

Nun habe ich mich als völliger Linux-Newbee mal daran gewagt - hab's nun auch zum Laufen bekommen, hatte auch noch etwas Support von einem netten Kollegen!  :D :D

 

Da ich mich einfach noch nicht so richtig in der Linux-Welt auskenne, noch ein paar Fragen mit Blick auf die Anleitung:

 

  • Beim Setzen des Symlinks per

ln -s ../../../bricklib/ .


  • kam eine Fehlermeldung: "File exists". Habe dann im "Explorer" gesehen, dass diese Verknüpfung im entsprechenden Pfad nach dem Klonen der Git-Repos schon da war. Im zweiten Anlauf habe ich diese Zeile dann einfach weggelassen - hat am Ende offenbar auch alles funktioniert - oder hat der Befehl sonst noch irgendwelche Konsequenzen (sollte z.B. die Verknüpfung aus dem Git-Repo gelöscht und durch diesen Befehl ein neuer Symlink erzeugt werden)?
     
  • Ein erneutes Compilieren funktioniert bei mir nur, wenn ich den zuvor automatisch generierten Ordner "build" (samt Inhalt) lösche, dann "generate_makefile" ausführe und dann zuletzt "make" aufrufe. Starte ich nach einem ersten, erfolgreichen Build-Vorgang einen weiteren über "make", dann erscheint direkt die Meldung "[100%] Built target master-brick.elf". Wenn ich dann ins "build" Verzeichnis schaue, dann liegt dort noch die .bin-Datei aus der Zeit des ersten Build-Vorgangs. Löschen des "build" Ordners und alles von vorne funktioniert wie gesagt - aber ist das tatsächlich richtig so?

 

Herzlichen Dank nochmal für die schnelle Rückmeldung und viele Grüße,

Tinkee24-7

Link to comment
Share on other sites

ln -s: Das ist okay. Das build_environment_setup.sh Skript legt das exemplarisch schon für eine Firmware an. Ich habe das in der Dokumentation jetzt zu ln -sf geändert, das überschreibt dann den existierenden Symlink einfach.

 

make: Das ist auch genau richtig so. Wenn du make das zweite mal aufrufst ohne Änderungen am Code gemacht zu haben, dann erkennt make, dass nichts zu tun ist weil du nichts geändert hast. Statt alles zu löschen kannst du aber einfach "make clean" aufrufen, damit make alle erzeugen Dateien löscht. Wenn du dann wieder make aufrufst wird die Firmware wieder neu kompiliert da make clean sie zuvor gelöscht hat.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...