STM32CubeIDE Assembler Projekt erstellen

OP #6692252
Lesenswert?

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?
Gast #6692284
Lesenswert?

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.
Persönliche Seite #6692291
Lesenswert?

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.
OP #6693178
Lesenswert?

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
Persönliche Seite #6693183
Lesenswert?

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.
OP #6693187
Lesenswert?

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.
Gast #6693194
Lesenswert?

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.
Angehängte Dateien:
OP #6693211
Lesenswert?

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.
OP #6693256
Lesenswert?

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.
OP #6693313
Lesenswert?

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
Angehängte Dateien:
Persönliche Seite #6693386
Lesenswert?

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?
Angehängte Dateien:
OP #6693799
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren