Jump to content

Bricklet umprogrammieren


Recommended Posts

Ich würde mich gern mal vorsichtig an die Aufgabe herantasten, mein IO4-Bricklet mit ein paar speziellen Funktionen zu erweitern. Sprich: private Extrawurst ohne öffentliches Interesse.

 

In der Docus steht etwas von Github und Clonen - aber muss ich das erstens verstehen und zweitens machen? Ich kann doch einfach die C-Sources so runterladen, wie sie dort zugänglich sind. Oder würde mir ohne das Clonen etwas fehlen?

 

Und wo ich beim Thema bin: wieviel des verfügbaren Speicherplatzes belegt die jetzige Firmware?

Link to comment
Share on other sites

Runterladen des Quellcodes sollte für dich äquivalent sein.

 

Klonen bedeutet, dass du Git benutzt um an den Quellcode zu gelangen, das ist ein Versionsverwaltungssystem. Der Nutzen in Git liegt an zwei Stellen:

- du kannst es auch für deinen Kram als Versionsverwaltung nutzen (vereinfacht: als Lösung zum Rückgängig machen von Änderungen und zum merken von funktionierenden Versionen)

- du könntest das ganze zeug auf diese Weise auch wieder anderen zugänglich machen (z.B. via Github)

 

Ist aber beides nciht zwingend nötig, insofern: ZIP ZIP!

Link to comment
Share on other sites

Noch eine Frage: wie setze ich dies um, ohne GIT zu benutzen?

 

"Dann wird noch die bricklib benötigt, diese muss in den software/src/ Ordner der Firmware geclont werden (ein Symlink funktioniert auch)"

 

Ich habe die ZIP heruntergeladen und habe ein Verzeichnis "Tinkerforge-bricklib-2b5c016" mit Unterverzeichnissen und Dateien. Was genau davon soll ich in mein Projekt io4\software\src\ kopieren?

 

Wenn es mir gelungen ist, eine funktionierende Firmware zu kompilieren (erst mal ohne Modifikationen), schreibe ich gern eine Schritt-für-Schritt-Anleitung ins Wiki.

Link to comment
Share on other sites

Also überall wo "clonen" steht müsste auch "kopieren" funktionieren... (kopieren ist ja git-frei ^^)

 

Ich kann selbst auch nur raten, ich vermute im src-ordner muss dann das liegen was im bricklib-ordner war.

 

Also wird aus

Tinkerforge-bricklib-2b5c016/unterverzeichnis-oder-datei

io4/software/src/unterverzeichnis-oder-datei

 

Ist aber auch nur nach bestem Wissen und Gewissen geraten :D

Link to comment
Share on other sites

So weit, so gut.

 

Ich habe ein bisschen im Forum herumgesucht und bin auf dieses Thema gestoßen. Ich habe die dort erwähnte Installationsdatei arm-2011.09-69-arm-none-eabi.exe runtergeladen und installiert.

 

Was mir immer noch fehlt, ist das in generate_makefile.bat aufgerufene "cmake". Stattdessen gibt es ein cs-make, das aber die benutzen Optionen -E und -G bemeckert. Was tun?

 

Link to comment
Share on other sites

Runterladen? Danke für den Hinweis. In der Anleitung steht über den GCC, dass man ihn benötigt und runterladen muss. Über CMake steht da nur, dass er benötigt wird. Deshalb dachte ich, bei dem, was ich runtergeladen hatte, müsste alles dabei gewesen sein.

 

Link to comment
Share on other sites

Das sollte TF dann vielleicht nochmal klarstellen...

Falls du es nicht inzwischen selbst rausgefunden hast:

cmake ist dazu da, dass man auf mehreren Plattformen kompilieren kann, also cmake erzeugt dir am Ende deine Dateien zum bauen (z.B. makefiles unter linux oder csproj wenn du mit Visual Studio bauen möchtest).

Aber ich glaube da du auf den GCC angewiesen bist wirst du wohl am besten auf makefiles zurückgreifen wollen ^^

Wenn du unter Linux arbeitest dann passt das, ansonsten kann es dir auch passieren, dass du dir noch make besorgen musst. Alles Dinge von denen ich übrigens keine tiefe Ahnung habe :D

Link to comment
Share on other sites

Nun, das scheint noch eine relativ kleine Hürde gewesen zu sein. Also cmake runtergeladen und installiert. Dann wieder generate_makefile.bat aufgerufen.

 

Fehler: cmake vermisst ein Verzeichnis "build". Wie was wo? Zum Glück wird es etwas tiefer auf der Seite "Firmware und Plugins" erwähnt. Also "\build" im Verzeichnis ...\software angelegt. Dann wieder generate_makefile.bat aufgerufen.

 

Fehler: cmake vermisst im Verzeichnis \build eine Datei names CMakeLists.txt. Nach einigem Suchen finde ich sie in der ZIP-Datei des IO4. Dann wieder generate_makefile.bat aufgerufen.

 

Fehler: Could not find toolchain file: toolchains/arm-none-eabi.cmake Auf meinem Computer gibt es kein Verzeichnis "toolchains". Meine letzte Hoffnung: die ZIP-Datei. Tatsächlich: unter dem Verzeichnis "build". Schön, dann weiß ich ja sogar, wo das Zeug hingehört. Dann wieder generate_makefile.bat aufgerufen.

 

Ha! Mein Computer ist richtig am arbeiten!  :)

 

Zu früh gefreut:

CMake Error at CMakeLists.txt:30 (ADD_EXECUTABLE):
  add_executable called with incorrect number of arguments

-- Configuring incomplete, errors occurred!

CMake Error at CMakeLists.txt:32 (SET_TARGET_PROPERTIES):
  set_target_properties Can not find target to add properties to:
  io4-bricklet.elf

CMake Error at CMakeLists.txt:35 (SET_TARGET_PROPERTIES):
  set_target_properties Can not find target to add properties to:
  io4-bricklet.elf

CMake Error at CMakeLists.txt:40 (SET_TARGET_PROPERTIES):
  set_target_properties Can not find target to add properties to:
  io4-bricklet.elf

 

Ich glaube, ich muss an dieser Stelle mal wieder um Hilfe bitten.

Link to comment
Share on other sites

Ich habe keine Ahnung von diesem cmake-projekt, deswegen sollte photron oder so sich hier nochmal äußern. Von mir gibt es dennoch einen Versuch:

 

Grundsätzlich kann so ein cmake-script aus verschiedenen CMakeLists.txt bestehen. Es wäre also möglich, dass du die falsche erwischt hast. Versuche am besten eine im root-verzeichnis des zip-files zu finden.

Ansonsten finde ich es komisch, dass du sie im build-verzeichnis ablegen musstest.

 

Ich kenne das nur so:

Du hast eine Ordnerstruktur mit Quellcode (bei dir \software usw.) und legst dort einen build-ordner an. Jetzt gehst du in diesen build-ordner und rufst "cmake .." auf. Cmake legt jetzt alles zum kompilieren dort rein und du hast vorher nie etwas dort reingelegt. Aber vorsicht, das ist einfach nur so wie ich es kenne und das kann verdammt falsch sein :D Vielleicht wurdest du ja dennoch inspiriert ^^

Link to comment
Share on other sites

Das mit dem Verzeichnis hat sich schon erledigt, es lag daran, dass ich in der BAT-Datei beim Rumexperimentieren ein ".\" gelöscht hatte.

 

Meine bisherigen Erkenntnisse habe ich im Wiki abgelegt: http://www.tinkerunity.org/wiki/index.php/Firmware

 

Aktuell würde ich gern wissen, woher die Fehler in CMakeLists.txt kommen. Ich habe das auf dem ZIP-Paket des Bricklets genommen.

Link to comment
Share on other sites

Ich hab's heute noch mal radikal versucht: nicht nach der try-und-error-Methode einzelne Dateien ausgepackt und kopiert, sondern (nachdem ich nun wusste, was gebraucht wird), ganze Verzeichnisse aus der ZIP-Datei auf die Festplatte gezogen. Und siehe da: es ging! Testweise mal schnell die Versionsnummer geändert, kompiliert und geflasht. Mein IO4 hat jetzt die Version 7.0.0  ;D

 

So und das alles steht jetzt im Wiki unter "Firmware".

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...