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.
Damit eclipse Assembler-Dateien als solche erkennt, muss die Dateiendung .S sein, nicht .s
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...
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...
Bernd schrieb: > kommt die gleiche > Fehlermeldung Vielleicht zeigst Du mal die Fehlermeldungen im Original, nicht die kastrierte tabellarische Darstellung aus dem Screenshot.
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)
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.
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.
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...
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.