mikrocontroller.net

Forum: Compiler & IDEs STM Cube IDE- AVR plugin Fehlermeldung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Bernd (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an Alle

Ich bin am umsteigen von vom Atmel Studio 4.19 auf die STM Cube IDE.
In beiden Umgebungen programmiere ich in Assembler.

Ein erster Test des AVR Plugins (ein Blinkprogramm in C) in der Cube IDE 
wurde Fehlerfrei kompiliert und konnte auch mit dem AVR DUDE auf das 
STK500 übertragen werden und funktionierte auch wie erwartet.

Daraufhin habe ich ein etwas größeres(schon bestehendes und 
funktionierendes) AVR Assembler-Programm geladen und die daraufhin 
folgenden Fehlermeldungen abgearbeitet (anpassen von Groß- und 
Kleinschreibung, anpassen der .includes für den gnu-as). Dennoch bleiben 
3 Fehlermeldungen, bei denen ich nicht mehr weiter komme (siehe Anhang).

Die Hauptdatei heißt zwar nicht "main", aber eine Umbenennung in "main" 
bringt die gleiche Fehlermeldung.

Freue mich auf jeden Hinweis.

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit eclipse Assembler-Dateien als solche erkennt, muss die Dateiendung 
.S sein, nicht .s

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dr.Sommer

vielen Dank für die schnelle Antwort.

Unabhängig von der Dateiendung (.s/.S/.asm) kommt die gleiche 
Fehlermeldung, auch das Ändern des Dateinamens in "main (.s/.S/.asm)" 
ändert nichts. Um sicher zu gehen habe ich auch vor jedem neuen Versuch 
"clean Project" ausgeführt...

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du denn eine Funktion "main"? Und bist du sicher dass die Datei 
damit auch mit assembliert/gelinkt wird? Poste mal den kompletten 
Compiler-Log aus dem "Console" Tab.

Warum macht man überhaupt AVR-Programmierung mit einer STM32-IDE...

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd schrieb:
> kommt die gleiche
> Fehlermeldung

Vielleicht zeigst Du mal die Fehlermeldungen im Original, nicht die 
kastrierte tabellarische Darstellung aus dem Screenshot.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier die Klartextmeldung:

13:25:37 **** Build of configuration Debug for project 
SRC_volume_control_cube_ide ****
make all
'Building file: ../SRC_volume_control_2019.S'
'Invoking: AVR Assembler'
avr-gcc -x assembler-with-cpp -g2 -gstabs -mmcu=atmega32 
-DF_CPU=16000000UL -MMD -MP -MF"SRC_volume_control_2019.d" 
-MT"SRC_volume_control_2019.o" -c -o "SRC_volume_control_2019.o" 
"../SRC_volume_control_2019.S"
M:\ATMEL\BE_includes_ATmega32_gnu\BE-upload-src-values.s: Assembler 
messages:
M:\ATMEL\BE_includes_ATmega32_gnu\BE-upload-src-values.s: Warning: end 
of file in multiline comment
'Finished building: ../SRC_volume_control_2019.S'
' '
'Building file: ../main.S'
'Invoking: AVR Assembler'
avr-gcc -x assembler-with-cpp -g2 -gstabs -mmcu=atmega32 
-DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.o" -c -o "main.o" 
"../main.S"
M:\ATMEL\BE_includes_ATmega32_gnu\BE-upload-src-values.s: Assembler 
messages:
M:\ATMEL\BE_includes_ATmega32_gnu\BE-upload-src-values.s: Warning: end 
of file in multiline comment
'Finished building: ../main.S'
' '
'Building target: SRC_volume_control_cube_ide.elf'
'Invoking: AVR C Linker'
avr-gcc -Wl,-Map,SRC_volume_control_cube_ide.map -mmcu=atmega32 -o 
"SRC_volume_control_cube_ide.elf"  ./SRC_volume_control_2019.o ./main.o

(Fehleranfang:)
c:/program files 
(x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/ 
avr/5.4.0/../../../../avr/lib/avr5/crtatmega32.o:(.init9+0x0): 
undefined reference to `main'
collect2.exe: error: ld returned 1 exit status
makefile:44: recipe for target 'SRC_volume_control_cube_ide.elf' failed
make: *** [SRC_volume_control_cube_ide.elf] Error 1
(:Fehlerende)


"make all" terminated with exit code 2. Build might be incomplete.

13:25:38 Build Failed. 3 errors, 0 warnings. (took 885ms)

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht so aus als hättest du einfach keine main-Funktion. Vermutlich 
benutzt du die CRT gar nicht? Hast du den ISR-Vektor selbst definiert 
und deinen eigenen Reset-Handler programmiert? Dann musst du vermutlich 
mit "-nostartfiles -nostdlib" linken.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Linker kann das Symbol "main" nicht finden.

Bei einer C-Datei wäre das eine Funktion names "main", der Startupcode 
will da hinspringen und der Linker muss das dann alles entsprechend 
zusammenlinken, was er aber nicht kann wenn nirgends im ganzen Projekt 
ein main existiert das er dafür verwenden könnte.

Zeig mal den Assember-Quelltext der das Symbol "main" definieren soll.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dr.Sommer

Stimmt, ich habe die ISR Vektortabelle und den reset-handler selbst 
geschrieben und den include-file zum Controller (ATmega32) aus dem 
Studio übernommen und angepasst.

An welcher Stelle muss ich denn "-nostartfiles -nostdlib" eintragen.

Das linken hat mir ja bisher anscheinend das Studio abgenommen...

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd schrieb:
> An welcher Stelle muss ich denn "-nostartfiles -nostdlib" eintragen.

In den Linker-Optionen in den Projekteinstellungen. Weiß nicht genau wie 
das beim AVR-Plugin aussieht.

Bernd schrieb:
> Das linken hat mir ja bisher anscheinend das Studio abgenommen...

Zeig doch mal den Compiler-Log aus dem AVR Studio. Da kann man die 
benötigten Optionen ja auch ablesen.

Autor: Bernd (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dr.Sommer,

ich habe die Einstellung gefunden unter "Project" -> "Properties" (siehe 
Anhang), damit sind die Fehlermeldungen verschwunden freu

Vielen Dank für Deine Hilfe

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dr. Sommer schrieb:
> Zeig doch mal den Compiler-Log aus dem AVR Studio. Da kann man die
> benötigten Optionen ja auch ablesen.

Das Studio benutzt für Assembler-Projekte den Atmel-Assembler, das ist 
eine andere Welt.

Oliver

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.

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