STM Cube IDE- AVR plugin Fehlermeldung

Gast #5940265
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.
Angehängte Dateien:
Gast #5940309
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...
Gast #5940313
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...
Gast #5940330
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)
Gast #5940335
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.
#5940345
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.
Gast #5940461
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...
Gast #5940476
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.