www.mikrocontroller.net

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


Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Dackel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dackel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.