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

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