Ich versuche innerhalb von STM32CubeIDE ein Assemblerprojekt zu erstellen. Habe dazu ein STM32CubeMX C-Projekt erstellt und die C-Files gelöscht und stattdessen die Assembler-Files in das Core/Src Verzeichnis kopiert. Es ist aber noch soviel an "Projekt-Zubehör" vorhanden (Middleware, USB_HOST etc.), was ich doch nicht brauche und was jetzt den Build stört. Wenn ich einzelne Teile davon lösche, kann ich das z.T. nur, wenn ich bestätige, daß die Komponenten im Filesystem gelöscht werden. Wohl ist mir nicht dabei und ich sehe schon eine STM32CubeIDE-Neuinstallation auf mich zukommen :) Also meine Frage: wie erstelle ich am bequemsten ein reines Assembler-Projekt in STM32CudeIDE?
:
Bearbeitet durch User
Wenn du ein Projekt erstellst hast du die Wahl, ob alle Nötigen Dateien ins Projekt kopiert werden oder auf die Bibliotheken referenziert wird. Ich rate dringend dazu, sie immer zu kopieren. Damit vermeidest du zahlreiche künftige Probleme. Und wenn du das gemacht hast, dann ich auch klar, was "im Filesystem gelöscht" bedeutet, nämlich nur innerhalb deines Projektverzeichnisses. Du kannst mit der IDE auch ein fast leere Projekt erzeugen: Lege mit dem Assistenten der IDE (File/New/STM32 Project) ein Arbeitsprojekt mit dem "Target Project Type" "Empty" an. Die CMSIS Header musst du dann manuell dazu kopieren, falls du sie brauchst.
Du kannst die Dateien auch im Datei-Browser/Explorer im Projektverzeichnis löschen. In Eclipse (CubeIDE) sollten die dann auch verschwinden (ggf. Projekt refreshen). Da du in einem Assembler Projekt aber wahrscheinlich sowieso eigenen Startup-Code und Linker-Script schreiben wirst, macht es wahrscheinlich Sinn das Projekt leer zu erstellen und von Null an aufzubauen, ggf. auch mit eigenem Makefile statt Eclipse Buildsystem.
Stefan ⛄ F. schrieb: >... > Lege mit dem Assistenten der IDE (File/New/STM32 Project) ein > Arbeitsprojekt mit dem "Target Project Type" "Empty" an. Die CMSIS > Header musst du dann manuell dazu kopieren, falls du sie brauchst. Soweit, so gut. Im Prinzip ist das jetzt gelungen, aber STM32Cube durchläuft dann einige Automatismen und meint, einfach jeden Assemblerfile compilieren zu müssen, obwohl mein Hauptfile main.s alle anderen Assemblerfiles inkludiert. Also noch viel Feinarbeit erforderlich. Mal sehen, ob es sich letztendlich lohnt. Im Moment bin ich anderweitig bei der Benutzung von blackmagic in der hosted Version noch blockiert, weil es da im Build stockt. Grüße Christoph
:
Bearbeitet durch User
Christoph K. schrieb: > meint, einfach jeden Assemblerfile compilieren zu müssen, obwohl mein > Hauptfile main.s alle anderen Assemblerfiles inkludiert. Also noch viel > Feinarbeit erforderlich. Normal, Eclipse kompiliert automatisch alles im Projekt. Benennen die Dateien um (z.B. .inc), schließe sie vom Build Prozess aus (umständlich) oder verwende ein eigenes Makefile.
Niklas G. schrieb: > Christoph K. schrieb: >> meint, einfach jeden Assemblerfile compilieren zu müssen, obwohl mein >> Hauptfile main.s alle anderen Assemblerfiles inkludiert. Also noch viel >> Feinarbeit erforderlich. > > Normal, Eclipse kompiliert automatisch alles im Projekt. Benennen die > Dateien um (z.B. .inc), schließe sie vom Build Prozess aus (umständlich) > oder verwende ein eigenes Makefile. Wollte das gerade noch in meinen Beitrag schreiben, da kam Deine Antwort. Sowas wie "exclude from build" suchte ich. Habe ja mein eigenes Makefile, aber STM32Cube scheint das nicht zu stören.
:
Bearbeitet durch User
Christoph K. schrieb: > Soweit, so gut. Im Prinzip ist das jetzt gelungen, aber STM32Cube > durchläuft dann einige Automatismen und meint, einfach jeden > Assemblerfile compilieren zu müssen, obwohl mein Hauptfile main.s alle > anderen Assemblerfiles inkludiert. Ich denke, das kannst du im gezeigten Dialog unter File/Properties beeinflussen.
Christoph K. schrieb: > Habe ja mein eigenes Makefile, aber STM32Cube scheint das nicht zu > stören. Das kannst du in den Projekt Einstellungen auswählen. Christoph K. schrieb: > Sowas wie "exclude from build" suchte ich. In den Datei-Eigenschaften unter "C/C++ Build". Vorher bei Build Configurations "All" auswählen.
Stefan ⛄ F. schrieb: > Ich denke, das kannst du im gezeigten Dialog unter File/Properties > beeinflussen. Danke, das hat geklappt. "Add Multiple" und dann alles anklicken, was man exkludieren will. Was noch nicht geht, ist, daß Cube erkennt, daß es mein Makefile nehmen soll. Darin steht nämlich, daß .s von .asm abhängen und bei Änderung noch ein asm->s Skript gestartet wird. Nur so als Beispiel für weitere Skripte, die getriggert werden, wenn Abhängigkeiten greifen sollen. Ich will ja möglichst mein Makefile beibehalten und auch noch standalone verwenden können.
:
Bearbeitet durch User
Niklas G. schrieb: > Christoph K. schrieb: >> Habe ja mein eigenes Makefile, aber STM32Cube scheint das nicht zu >> stören. > > Das kannst du in den Projekt Einstellungen auswählen. > Danke. Kurzer Hinweis vielleicht noch, wo? Ich kann ja Rechtsklick auf das Projekt machen im "Project Explorer". Dann auf ->Properties. Nehme an, dort. Es sollte ja projektspezifisch sein.
:
Bearbeitet durch User
Hier mal ein Beipiel, um zu demonstrieren, was nicht geht (die Inkludierung des Makefiles bzw. auch das Inkludieren von Assembler files). Dabei ist es unbedeutend, ob ich die in .inc umbenenne oder nicht. Auch .inc files werden nicht gefunden. STM32Cube benutzt offenbar temporäre Verzeichnisse (oder ein VFS?) für seine Kompilation. Vielleicht kann man das irgendwo beeinflussen?
1 | /var/folders/kc/5p61t70n0llbn05934gj4r_w0000gn/T//cczu9Dvs.s:478: Error: can't open startup.s for reading: No such file or directory |
:
Bearbeitet durch User
Im "normalen" Eclipse-CDT kann man hier auswählen das ein Makefile verwendet wird. Schau mal ob STM32CubeIDE das genau so macht. Christoph K. schrieb: > STM32Cube benutzt offenbar temporäre Verzeichnisse (oder ein VFS?) für > seine Kompilation. Eclipse-CDT legt im Projektverzeichnis für jede Konfiguration ein gleichnamiges Build-Verzeichnis an (also z.B. "Debug"/"Release"), und darin wird der Compiler/Assembler/make aufgerufen. Normalerweise ist es aber kein Problem Dateien im Projektverzeichnis "einfach so" direkt zu inkludieren. Dieser kryptische Pfad sieht jedenfalls nicht so aus als wäre er von Eclipse angelegt worden. Dein Makefile ist aber etwas... unorthodox? Was macht dein eigener Präprozessor?
Niklas G. schrieb: ... > Dein Makefile ist aber etwas... unorthodox? Was macht dein eigener > Präprozessor? In dem geposteten Beispiel ist es nur ein einfaches sed-Skript, das die .asm-Syntax in .s-Syntax konvertiert, im wesentlichen nur Kommentare mit '@' zu versehen. Aber es sind noch viele andere Pre- und Postbuildskripte auszuführen.
Stefan ⛄ F. schrieb: > Bei der STM32 Cube IDE sieht der Dialog etwas anders aus, aber es ist > dennoch die richtige Stelle. Danke. Gefunden. Abwählen des Punktes "Generate Makefiles automatically". Jetzt muß man noch das Working directory ändern. Debug wird nicht mehr angelegt. Wenn ich Src als working directory setze, nimmt CUBE auch mein Makefile. Jetzt komme ich ein Stück weiter, allerdings kriege ich keinen Breakpoint gesetzt. Würde gerne starten und auf Reset: anhalten. Nebenfrage: wie untersucht man memory im STM32CubeIDE?
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.