Forum: Compiler & IDEs STM32, Codesourcery, Eclipse - kein Assembler?


von Matze (Gast)


Lesenswert?

Hallo!
Nachdem mich das Aufsetzen der Entwicklungsumgebung für den STM32
bereits einige Nerven gekostet hat, gehen meine Probleme leider
weiter. Prinzipiell klingt das folgende jedoch nach "irgendwo
ein Häkchen vergessen" oder "Compiler-Option falsch angegeben".
Von daher poste ich, auf der Suche nach Rat.

Ich möchte die von ST gelieferten DSP-libs nutzen.
(eigentlich nur die 64punkt-FFT) Wenn ich die Assembler-Dateien
hinzufüge (per #include "cr4_fft_64_stm32.S") erhalte ich unten
angefügte Compiler-Fehlermeldung.
Die C-Programmierung ansonsten läuft einwandfrei.

Wenn sich jemand darauf einen Reim machen kann, ..ich bin um jeden
Tipp dankbar.
Grüße

...
'Invoking: ARM Sourcery Windows GCC C Compiler'
arm-none-eabi-gcc -DHSE_VALUE=8000000 -DSTM32F10X_HD 
-DUSE_STDPERIPH_DRIVER -I"D:\STM32\eclipse_workspace\test_02\include"
-O0 -Wall -Wa,-adhlns="main.o.lst" -c -fmessage-length=0 -MMD
-MP -MF"main.d" -MT"main.d" -mcpu=cortex-m3 -mthumb -g3 -ggdb
-o"main.o" "../main.c"
In file included from ../main.c:9:0:
../cr4_fft_64_stm32.S:16:1: error: expected identifier or '(' before '.' 
token
../cr4_fft_64_stm32.S:43:13: error: expected '=', ',', ';', 'asm' or 
'__attribute__' before 'r12'
../cr4_fft_64_stm32.S:43:13: error: stray '#' in program
../cr4_fft_64_stm32.S:45:9: error: stray '#' in program
.....usw. usf. ....

PS: Falls ich ne wichtige Info vergessen habe, dann kann ich die
bestimmt nachliefern - ich habe nicht alles verinnerlicht, was ich
da eingestellt habe. (viel copy&paste)

von Dackel (Gast)


Lesenswert?

Hallo Matze,

ohne jetzt genau in's Detail gegangen zu sein:
Warum machst Du ein #include der Assembler-Sourcedatei in einem
C-File?
Die ist höchstwahrscheinlich dafür gedacht, separat
assembliert zu werden.
Die Fehler kommen daher, dass der Assemblercode
für den C-Compiler unverdaulich ist...

Und bevor Du fragst: Der Assembler heisst arm-none-eabi-as

Dackel

von Matze (Gast)


Lesenswert?

Hallo Dackel,

möglicherweise hat mir das schon geholfen.
Ich dachte, man könnte auch die .S-Dateien
in einem C-File inkludieren. (zu einfach gedacht.. ;-( )

Kannst du (bzw. jemand anderes) mir den Ablauf
für's Einbinden von Assembler-Dateien stichwortartig erklären?
Aus dem obig geschriebenen verstehe ich, daß ich die Assembler-Datei
einzeln compilieren kann.. ..aber wie stelle ich den Bezug zu meiner
main.c her?
  (bitte nicht als Antwort: "einfach linken" )
Alternativ wäre ich über einen Link zu einer klärenden Website
genauso dankbar.

Gegenfrage: Kann ich (erstmal unschön - aber vielleicht erfolgreich)
in meiner main.c unten dran den Assembler-Code ähnlich einer
Funktion einfügen? Mittels "__INLINE" oder "__ASM" oder sowas?

Besten Dank!!
Grüße aus dem verschneiten HH

von Dackel (Gast)


Lesenswert?

Eine Assemblerdatei ist eine Sourcedatei ist eine Sourcedatei!

Warum wehrst Du Dich so dagegen, das Ding einfach zu assemblieren
und zu Deinen anderen Modulen zu linken?

Geht auch nicht anders als mit C-Files und tut gar nicht weh...

Habe jetzt mal spasseshalber ein Projekt angelegt in der Eclipse.
Ein main.c und irgendein File mit '.S' Endung werden ohne weiteren
Krampf assembliert und gelinkt...
Bei einem Embedded Target ist natürlich noch die richtige
Embedded Toolchain einzustellen, aber das scheinst Du ja mindestens
für den C-Compiler geschafft zu haben.
Kennst Du das GNU/ARM-Eclipse Plugin? Da sind einige Cross-Toolchains
voreingestellt (project - properties - tool chain ...).

Übrigens muss nicht mal explizit ein Assembler eingestellt werden.
Das 'gcc' Frontend weiss anhand der Dateiendung, ob Assembler,
C- oder C++-Compiler für eine gegebene Source aufzurufen sind.

Bei www.gnu.org gibt´s mehr Dokumente als Du lesen willst...


Dackel.

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.