Forum: Compiler & IDEs ZephyrOS / CMake: ".\bootstrap" ist entweder falsch geschrieben oder konnte nicht gefunden werden.


von Sebastian M. (gabbas1)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

kurz zur Einordnung: ich flashe Firmware von ZephyrOS auf eine 
nRF52840_DK (Nordic Semiconductor). Dabei arbeite ich mit der Toolchain, 
wie im "Getting started" von Zepyhr angegeben:

- Windows 10 (cmd.exe)
- (Python3)
- West
- CMake
- Ninja
- GNU_Arm_Embedded_Toolchain

Alles funktioniert auch, heißt die Toolchain (GNU) wird erkannt und mit 
den Befehlen *"cmake -GNinja -DBOARD=nrf52840_pca10056 
-DCONF_FILE="prj.conf overlay-ot.conf" .."* und dem anschließendem 
Ninja wird die * zephyr.elf * erstellt (siehe 2.PNG).


Ein Problem tritt dann auf, wenn ich Code habe, bei dem C++ verwendet 
wird. Dies wird in einer .conf-Datei durch CPLUSPLUS=y aktiviert 
(https://docs.zephyrproject.org/latest/reference/kconfig/CONFIG_CPLUSPLUS.html). 
Wird dies gemacht, wird der *Ninja*-Befehl mit folgendem Fehler 
abgebrochen (siehe 3.PNG).

- Der Befehl .\bootstrap ist falsch geschrieben oder konnte nicht 
gefunden werden.
- No patch step for 'ot'.


Wie gesagt, tritt dies nur auf, wenn ich ein "Sample" mit C++-Support 
CPLUSPLUS=y verwende. Ich habe die gesamte Toolchain für Zephyr schon 
komplett deinstalliert und alles neu aufgesetzt, mit dem gleichen 
Ergebnis. Ich kann anhand der Fehlermeldungen keine Fehlerursache 
ausmachen. Ich habe noch die CMakeError und CMakeOutput angehängt, falls 
das Hilft.

Ich bin Dankbar für jeden Hinweis und Input eurerseits. Vielleicht hat 
jemand eine Idee. Vielen Dank!

Gruß,
Sebastian

von Weihnachtsmann (Gast)


Lesenswert?


von Sebastian M. (gabbas1)


Lesenswert?

Weihnachtsmann schrieb:
> 
https://superuser.com/questions/1443762/error-while-building-zephyros-firmeware-with-cmake-ninja-and-cplusplus-c

Danke für den Hinweis. Leider ist das auch mein eigener 
(unbeantworteter) Beitrag in einem anderen Forum.

von Daniel -. (root)


Lesenswert?

nur als Idee ... versuch mal die lange Kommandozeile aufzutrennen
und einzeln ausführen. z.B. den Teil vor &&
der sollte evtl im . Verzeichnis bootstrap Skript anlegen

die Pfade sind in windows und linux Stil gemischt, evtl auch ein Problem
der erste Pfad beginnt mit " ... wo ist die schliessende "?

von Nico D (Gast)


Lesenswert?

Hallo Sebastian. Hast du das Problem bei dir mittlerweile gelöst? Ich 
stehe nämlich aktuell vor dem gleichen Problem. Ich würde gerne 
Openthread mit Zephyr ausprobieren, aber es klappt bei mir nicht. Habe 
genau dieselben Fehler wie du.

Gruß

Nico

von Sebastian M. (gabbas1)


Lesenswert?

Hallo Nico,

sehr interessant, dass bei dir das gleiche auftritt.

Im Endeffekt konnte ich mein Problem lösen und Zephyr läuft jetzt. Was 
ich gemacht habe:

Ich habe versucht Zephyr unter Linux (Ubuntu) zum laufen zu bekommen, 
doch auch da kam es zu ähnlichen Fehlermeldungen. Dann habe ich mehr 
oder weniger durch Zufall auch RIOT (hat nämlich auch OpenThread) auf 
dem gleichen Linux installiert mit allen Dependencies usw. Danach lief 
komischerweise auch Zephyr. Also scheinbar fehlt einfach was in der 
Anleitung zur Installation der Toolchain von Zephyr.

Was genau das ausschlaggebende war, kann ich dir leider nicht sagen. 
Aber du kannst ja mal alles nach der Anleitung 
(https://github.com/RIOT-OS/Tutorials   ab "Regular Setup without using 
a VM") schrittweise installieren und nach jedem Schritt probieren das 
Zephyr-hex zu erzeugen.

Vermutlich ist beim Punkt "Install Native dependencies" der Punkt "For 
C++ support also install g++-multilib: .." das ausschlaggebende gewesen. 
Wie das bei Windows ist kann ich leider nicht sagen, da ich mich dann 
aus Zeitmangel mit der Linux-Lösung zufrieden gegeben habe..

Hoffe das Hilft! Sag Bescheid wenn du was heraus gefunden hast, ich 
versuche da auch gern weiter zu helfen.


PS: Ich hab OpenThread-Netze mit Zephyr auf dem NXP-KW41Z und dem Nordic 
Semiconductor nRF52840 laufen und beide stürzen nach 2-3 Tagen im 
Leerlaufbetrieb ab. Also Zephyr, nicht das OT-Netz an sich.

MfG
Sebastian

von Nico D. (Gast)


Lesenswert?

Hallo Sebastian,

danke für deine Tipps. Ich hatte mir auch Ubuntu in VirtualBox 
installiert, aber da lief's auch erst nicht nach der Zephyr-Anleitung.

Ich habe es jetzt geschafft. Bei mir hat automake, autoconf und Libtool 
gefehlt. Jetzt kann ich das socket-Beispiel mit OpenThread erfolgreich 
erstellen und kompilieren.

Ich werde nun im nächsten Schritt untersuchen, ob Zephyr bei mir auch 
abstürzt (nutze ebenfalls Module mit nRF52840). Ich kann dann hier gerne 
ein Update dazu geben.

Funktioniert RIOT denn besser? Dann könnte ich mir das alternativ auch 
mal ansehen.

Gruß
Nico

von Sebastian M. (gabbas1)


Lesenswert?

Hey Nico,

cool dass es bei dir jetzt auch läuft.  Wie Zephyr bei dir läuft würde 
mich sehr interessieren. Ich hatte es jetzt mehrfach laufen und es 
stürzt interessanterweise jedes mal nach ~36,4h ab (in 3 von 3 
Durchläufen).

RIOT ist noch schlimmer. Stabil laufen tut nur OpenThread vom Nordic 
Semiconductor nRF-SDK direkt, oder wenn du nicht an den nRF52840 
gebunden bist, dann kann ich noch den Kinetis Thread Stack von NXP in 
Verbindung mit dem NXP KW41Z empfehlen. Beide sind von Thread "certified 
components" und laufen bei mir bisher in der Tat sehr sehr gut.

MfG

von ka (Gast)


Lesenswert?

~36,4h entspricht dem Überlauf eines 16 Bit Zählers der alle 2Sec Zählt. 
Uhr fehlerhaft konfiguriert oder ein Nachrichten/Event-Zähler (mit ~2sec 
Interval).
Alternativ kann natürlich auch durch den Speicher gezählt werden ein 
paar Byte die bei jeder Nachricht/jedem Event auf dem Heap/Stack 
verbleiben (memoryleak durch Speicher Fragmentierung)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.