Jump to content

Frage zur Installation der Bricklet tool chain


Andreas_Mainz

Recommended Posts

Hallo admins,

lch will die Firmware für den EVSE2 Bricklet neu bauen, da ich zuvor Änderungen machen will. (siehe anderer Post: Fi TypB vorhanden..)

Alle Git repos liegen bei mir under /home/andreas/git. Dort liegt das Vereichnis evse-v2-bricklet

Dann kommt das Verzeichnis software, da drunter das Verzeichnis src.

Dort liegen folgende Verzeichnisse:

brickletlib,configs,bricklib2,bootstrapper_xmc,brickletboot_xmc 

 

Und jetzt kommt die Frage: Wie muß ich die Symbolischen Links setzen und wo?

 

Wenn ich im Verzeichnis software make aufrufe, kommt folgende Fehlermeldung:

Zitat

Could not find brickletboot_xmc. Please clone brickletboot_xmc git.

make: *** [/home/andreas/git/evse-v2-bricklet/software/src/bricklib2/cmake/makefiles/Makefile_Bricklet_CoMCU.mk:28: check] Error 1

Also irgendetwas stimmt noch nicht..

Ich habe auch Docker installiert, wie ich es aber verwenden muß, ist mir auch nicht klar..

 

Vielen Dank für  Hinweise zur Installation..

Gruß Andreas

Link to comment
Share on other sites

Ich nehme an du bist diesen Schritten hier gefolgt:

https://www.tinkerforge.com/de/doc/Tutorials/Tutorial_Build_Environment/Tutorial.html

Zu Docker steht dort "Wenn der tinkerforge/build_environment_c Docker-Container installiert ist, wird dies von den Makefiles der Firmwares automatisch erkannt und die Kompilierung findet über den Docker-Container statt."

Im Abschnitt "Bricklet mit Co-Prozessor Firmwares" ist beschrieben wie die Verzeichnisstruktur aussehen muss. Mir ist unklar wo du weg hast, dass alle diese gits nach evse-v2-bricklet/softwre/src/ müssen. Das ist nie der Fall.

Link to comment
Share on other sites

53 minutes ago, Andreas_Mainz said:

Also liegen diese repos parallel zu dem Evse-v2-Bricklet Verzeichnis?

Ja, wie es dort beschrieben steht.

54 minutes ago, Andreas_Mainz said:

Könnte man das mit dem Docker nochmal erläutern oder funktioniert das alles automatisch?

Das passiert alles automatisch.

51 minutes ago, Andreas_Mainz said:

Ich sehe gerade, die gewünschte Verzeichnissstruktur wurde in der Beschreibung ergänzt, vielen Dank 

Ich habe keine neue Information hinzugefügt, sondern nur das was da schon vorher textuell stand noch mal anders dagestellt.

Link to comment
Share on other sites

 

so make startet nun, es fehlt aber gmake?

Zitat

andreas@home:~/git/evse-v2-bricklet/software$ make
Using docker image to build.
-- The C compiler identification is GNU 5.4.1
-- The CXX compiler identification is GNU 5.4.1
-- Check for working C compiler: /usr/bin/arm-none-eabi-gcc
CMake Error: Generator: execution of make failed. Make command was: "/usr/bin/gmake" "cmTC_025a5/fast"
-- Check for working C compiler: /usr/bin/arm-none-eabi-gcc -- broken
CMake Error at /usr/share/cmake-3.7/Modules/CMakeTestCCompiler.cmake:51 (message):
  The C compiler "/usr/bin/arm-none-eabi-gcc" is not able to compile a simple
  test program.

  It fails with the following output:

   Change Dir: /home/andreas/git/evse-v2-bricklet/software/build/CMakeFiles/CMakeTmp

 

  Run Build Command:"/usr/bin/gmake" "cmTC_025a5/fast"

 

vielen Dank für weitere Tipps

Link to comment
Share on other sites

Ja, das Verzeichnis ist genau an diesem Ort, ist aber leer..

Bei make clean kommen die gleichen Fehlermeldungen..und hat keine Verbesserung gebracht.

Ich hänge mal die beiden Log Files an, eins scheint fehlerfrei (CMakeOutput.log) zu sein, das andere zeigt einen Fehler:

Zitat

0.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-exit.o): in function `exit':
/build/newlib-pB30de/newlib-3.3.0/build/arm-none-eabi/newlib/libc/stdlib/../../../../../newlib/libc/stdlib/exit.c:64: undefined reference to `_exit'

Scheint sehr Compilerspezifisch..

Wenn ihr mir da helfen könntet..

Gruß Andreas

CMakeError.log CMakeOutput.log

Link to comment
Share on other sites

In deinen CMake Logs taucht arm-none-eabi-gcc 10.3.1 auf. Im Docker Container ist aber 5.4.1 drin.

Lösch bei dir mal von Hand das /home/andreas/git/evse-v2-bricklet/software/build Verzeichnis. Das sollte eigentlich "make clean" machen. Villeicht hat sich CMake falsche Pfade gemerkt. So richtig Sinn macht das dennoch nicht.

Falls das auch nicht hilft, dann ersetz mal /home/andreas/git/bricklib2/cmake/makefiles/Makefile_Bricklet_CoMCU.mk durch die angehängt Datei, die gibt mehr Information aus. Dann nochmal /home/andreas/git/evse-v2-bricklet/software/build löschen, make ausführen und die ganze Ausgabe von make vorzeigen.

Makefile_Bricklet_CoMCU.mk

Link to comment
Share on other sites

Hallo,

das Löschen von dem build Verzeichnis hat schonmal weitergeholfen: Jetzt wird der richtige Compiler aufgerufen.

Jetzt gibt es nur noch ein Problem mit dem Configs Verzeichnis: wie und wo muß dies verlinkt werden, damit der Compiler das findet?

Die Fehlermeldung dazu sieht wie folgt aus:

Zitat

@home:/home/andreas/git/evse-v2-bricklet/software# make
Using docker image to build.
make[1]: Entering directory '/home/andreas/git/evse-v2-bricklet/software/build'
make[2]: Entering directory '/home/andreas/git/evse-v2-bricklet/software/build'
make[3]: Entering directory '/home/andreas/git/evse-v2-bricklet/software/build'
make[3]: Leaving directory '/home/andreas/git/evse-v2-bricklet/software/build'
make[3]: Entering directory '/home/andreas/git/evse-v2-bricklet/software/build'
[ 11%] Building C object CMakeFiles/aeabi_uidivmod.dir/src/bricklib2/bootloader/libgcc/aeabi_uidivmod.c.obj
In file included from /home/andreas/git/evse-v2-bricklet/software/src/bricklib2/bootloader/bootloader.h:25:0,
                 from /home/andreas/git/evse-v2-bricklet/software/src/bricklib2/bootloader/libgcc/aeabi_uidivmod.c:1:
/home/andreas/git/evse-v2-bricklet/software/src/bricklib2/protocols/spitfp/spitfp.h:33:28: fatal error: configs/config.h: No such file or directory
compilation terminated.
CMakeFiles/aeabi_uidivmod.dir/build.make:62: recipe for target 'CMakeFiles/aeabi_uidivmod.dir/src/bricklib2/bootloader/libgcc/aeabi_uidivmod.c.obj' failed
make[3]: *** [CMakeFiles/aeabi_uidivmod.dir/src/bricklib2/bootloader/libgcc/aeabi_uidivmod.c.obj] Error 1
make[3]: Leaving directory '/home/andreas/git/evse-v2-bricklet/software/build'
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/aeabi_uidivmod.dir/all' failed
make[2]: *** [CMakeFiles/aeabi_uidivmod.dir/all] Error 2
make[2]: Leaving directory '/home/andreas/git/evse-v2-bricklet/software/build'
Makefile:83: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/andreas/git/evse-v2-bricklet/software/build'
/home/andreas/git/bricklib2/cmake/makefiles/Makefile_Bricklet_CoMCU.mk:98: recipe for target 'make' failed
make: *** [make] Error 2
make: *** [/home/andreas/git/bricklib2/cmake/makefiles/Makefile_Bricklet_CoMCU.mk:33: check] Error 2

Meine Verzeichnisstruktur ist wie folgt:

Screenshot-1.png.78d59c078b4be864d2f8646a97815995.png

Link to comment
Share on other sites

21 hours ago, Andreas_Mainz said:

Jetzt gibt es nur noch ein Problem mit dem Configs Verzeichnis: wie und wo muß dies verlinkt werden, damit der Compiler das findet?

Da gibt es nichts zu verlinken. Es geht hier um /home/andreas/git/evse-v2-bricklet/software/src/configs/config.h, das muss automatisch gefunden werden.

Ist die Datei bei dir gelöscht?

Hast du /home/andreas/git/configs angelegt? Oder den aus dem evse-v2-bricklet Clone dahin verschoben?

Prüf mal bitte in allen Repositories, dass du da keine lokalen Änderungen oder gelöscht Dateien hast.

Link to comment
Share on other sites

So, ich konnte nun erfolgreich eine XMC Software bauen. Vielen Dank für die geduldige Unterstützung.
Ich habe auch schon das Zbin File in das passende Directory vom Esp32 gelegt und mit Vsc eine neue Version gebaut.

Dann habe ich das Merge File in die Wallbox runtergeladen und immerhin hat diese ganz normal wieder eingeschaltet. Es war nur alles in englischer Sprache, wo kann man die verwendete Sprache einstellen? Bisher habe ich an der Bricklet Software noch keine Änderung gemacht…

Was mir aber nicht klar ist, wenn ich die EVSE - V2 Software gebaut habe, muss da nicht ein Firmware.C & .H File neu generiert werden? Ich habe nach dem Bild in VSC gesehen, dass diese C & H Files nicht upgedatet wurden, da ist mir noch nicht ganz klar, was ich hier machen muss.

Immer dankbar für weitere Tipps..

Grüße Andreas 

Link to comment
Share on other sites

10 hours ago, Andreas_Mainz said:

Ich habe auch schon das Zbin File in das passende Directory vom Esp32 gelegt und mit Vsc eine neue Version gebaut.

Hast du den Dateinamen in z.B. bricklet_evse_v2_firmware_2_1_6.zbin geändert und die Firmware die da schon liegt z.b. in .zbin.old umbenannt? Der Bauprozess erzeugt die evse_v2_bricklet_firmware_bin.embedded.h/cpp automatisch aus einer Firmware-Datei die auf das Schema passt.

Ein Trick aus der Praxis damit man mit den Firmware-Dateien nicht durcheinander kommt: Die Versionsnummer ist in evse-v2-bricklet/software/src/configs/config.h hinterlegt. Für Entwicklungs-Firmwares kannst du die  FIRMWARE_VERSION_REVISION auf z.b. 99 ändern, die Firmware neu kompiliern und als bricklet_evse_v2_firmware_2_1_99.zbin nach esp32-firmware/software/src/modules/evse_v2/esp32-firmware/software/src/modules/evse packen. Das reduziert die Wahrscheinlichkeit, dass du durcheinander kommst welche Firmware jetzt gerade eingebettet wird/auf dem EVSE läuft.

 

10 hours ago, Andreas_Mainz said:

Dann habe ich das Merge File in die Wallbox runtergeladen und immerhin hat diese ganz normal wieder eingeschaltet. Es war nur alles in englischer Sprache, wo kann man die verwendete Sprache einstellen?

Das Webinterface kann deutsch und englisch und zeigt dir die Sprache an, die dein Browser als die bevorzugte angibt. Da sollte also zwischen den Firmwares kein Unterschied bestehen, wenn du nicht gerade deine Browser-Einstellungen geändert hast. Du kannst mit der Entwicklerkonsole deines Browsers nachsehen welche Sprachen er anfordert, indem du

navigator.languages

eingibst. Bei mir kommt z.B.

Array(3) [ "de", "en", "en-US" ]

als Ergebnis, also wird Deutsch vor Englisch bevorzugt.

Link to comment
Share on other sites

Nochmals vielen Dank, jetzt läuft alles..ich freue mich riesig!

DC Fehlerstrommodul zeigt nun OK an, ich habe die EVSE Firmware auf Version 2_1_66 gesetzt, eine neue ESP32 Firmware gebaut und regulär runtergeladen.

Der EVSE Bricklet wird dann ja automatisch überflashed. Funktioniert wie beschrieben.

Jetzt müsstet ihr mir nochmal erklären, was ich machen muß wenn eine neue Version von Eurer Seite upgedatet wurde.

git ...?

Vielen Dank und Gruß

Andreas

Link to comment
Share on other sites

Was du tun musst hängt davon ab, ob in der neuen Firmware (oder falls du Updates überspringst in irgendeiner zwischen der installierten und der die du neu installieren willst) die EVSE-Firmware aktualisiert wurde. Das erkennst du daran, dass dann im Changelog etwas in Richtung "[Änderung...] (durch Update auf Ladecontroller-Firmware 2.1.6)" steht.

Falls das nicht der Fall ist, kannst du:

  • Das esp32-firmware-git pullen
    (da du keine Änderungen außer der Firmware-Datei haben solltest, müsste das immer klappen)
  • Dann sicherheitshalber ein git checkout warp2-x.y.z machen
    (Ich tagge immer den Commit, der dem Stand einer veröffentlichten Firmware entspricht. Das sorgt dafür, dass du auf einem definierten Stand bist und nicht ein paar unveröffentlichte Änderungen mitnimmst. Eigentlich sollte die Firmware auf jedem Commit funktionieren, aber bei größeren Änderungen kann das zwischenzeitlich auch mal nicht klappen.)
  • Deine Firmware sollte dann noch in esp32-firmware/software/src/modules/evse_v2 liegen
  • Die ESP-Firmware neu kompilieren und flashen

Wenn es eine neue Ladecontroller-Firmware gibt, musst du folgendes davor in evse-v2-bricklet/ tun:

  • Mit git stash deine Änderungen bei Seite legen
  • Mit git pull unsere Änderungen holen
  • Dann git checkout vX.Y.Z damit du auch hier auf dem Stand einer veröffentlichten Firmware bist.
  • Deine Änderungen wieder anwenden mit git stash apply
    (Falls das nicht klappt musst du nachsehen, was sich an der Code-Struktur geändert hat)
  • EVSE-Firmware neubauen und wieder nach esp32-firmware/software/src/modules/evse_v2 packen
  • Dann die Schritte von oben um die neue ESP-Firmware zu bauen
Link to comment
Share on other sites

Wenn der Taster nicht angesteckt ist, denkt die Box permanent, dass er gedrückt wäre. Das ist erstmal nicht schlimm (weil der Ladecontroller auf Knopfdruckänderungen reagiert, d.h. dir wird nicht die ganze Zeit die Ladung abgebrochen), wird mit der nächsten Firmware-Version aber dazu führen, dass die Wallbox ~ 30 Sekunden langsamer bootet.

Wenn du willst kannst du, damit der Taster die ganze Zeit gedrückt ist, Pin 3 und 4 der entsprechenden Buchse verbinden.

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.

×
×
  • Create New...