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


von Bernd (Gast)


Angehängte Dateien:

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.

von Dr. Sommer (Gast)


Lesenswert?

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

von Bernd (Gast)


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...

von Dr. Sommer (Gast)


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...

von Bernd K. (prof7bit)


Lesenswert?

Bernd schrieb:
> kommt die gleiche
> Fehlermeldung

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

von Bernd (Gast)


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)

von Dr. Sommer (Gast)


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.

von Bernd K. (prof7bit)


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.

von Bernd (Gast)


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...

von Dr. Sommer (Gast)


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.

von Bernd (Gast)


Angehängte Dateien:

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

von Oliver S. (oliverso)


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

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.