Forum: Compiler & IDEs Atmel Studio 7: Assembler


von DDSler (Gast)


Lesenswert?

Wird ein neues Projekt kreiert, dann erzeugt das AS7 eine C-Datei mit 
der Funktion 'main'. Da ich nur eine Assemblerdatei*1 übersetzen will, 
habe ich die C-Datei herausgenommen und die Assemblerdatei zum Projekt 
hinzugefügt. Das quittiert mir das AS7 mit 2 Fehlermeldungen:
1
Error    undefined reference to main
2
Error    ld returned 1 exit status

Wie muss ich es anstellen, damit die Assemblerdatei übersetzt wird?


*1
http://www.avrfreaks.net/sites/default/files/minidds_asm_Jespers_htm.ASM

von Max M. (jens2001)


Lesenswert?

DDSler schrieb:
> Wird ein neues Projekt kreiert, dann erzeugt das AS7 eine C-Datei mit
> der Funktion 'main'.

Warum erzeugst du ein C/C++-Projekt wenn du was mit ASM machen willst?

von DDSler (Gast)


Lesenswert?

Das habe ich mittlerweile auch mitbekommen.

---

Jetzt kommt das nächste Problem:

Das File oben konnte ich als C-Projekt zumindest übersetzen, aber nicht 
linken.

Als Assembler-Projekt kann ich es nicht einmal assemblieren.

Fehlermeldungen:


Error    syntax error, unexpected ','  AssemblerApplication1  line 73, 0

Error    .byte  not allowed in .CSEG  AssemblerApplication1
line 73, 0


Was ist zu tun, dass das File übersetzt wird?

von Max M. (jens2001)


Lesenswert?

DDSler schrieb:
> syntax error, unexpected ','  AssemblerApplication1  line 73, 0

Ich kenn mich mit asm nicht aus aber ich würd mal nachsehen was in Zeile 
73 steht.

von Oliver S. (oliverso)


Lesenswert?

Assembler ist nicht gleich Assembler.

Eine per C-Projekt übersetzbare Assembler-Datei mit Name *.S wird an den 
GNU-Assembler weitergereicht, während reine Assemblerprojekte im Studio 
den Atmel-eigenen Assembler nutzen. Die beiden sind nicht 
Source-kompatibel.

Oliver

von DDSler (Gast)


Lesenswert?

Oliver S. schrieb:
> Assembler ist nicht gleich Assembler.

Sieht so aus.

> Eine per C-Projekt übersetzbare Assembler-Datei mit Name *.S wird an den
> GNU-Assembler weitergereicht, während reine Assemblerprojekte im Studio
> den Atmel-eigenen Assembler nutzen. Die beiden sind nicht
> Source-kompatibel.


Benenne ich die Datei um in main.S erhalte ich die Fehlermeldung:
1
AVRASM: AVR macro assembler 2.1.57 (build 18 Jan 23 2015 13:50:29)
2
    Copyright (C) 1995-2015 ATMEL Corporation
3
    : Could not open source file: Invalid argument
4
    Assembly failed, 1 errors, 0 warnings

Er startet bei Assemblerprojekten den ATMEL-Assembler und bei 
C-Projekten den GNU-Assembler?

Es sieht also so aus, dass die Datei

http://www.avrfreaks.net/sites/default/files/minidds_asm_Jespers_htm.ASM

als alleinige Assemblerdatei sich nicht compilieren und linken lässt.

von Oliver S. (oliverso)


Lesenswert?

DDSler schrieb:

> Es sieht also so aus, dass die Datei
>
> http://www.avrfreaks.net/sites/default/files/minid...
>
> als alleinige Assemblerdatei sich nicht compilieren und linken lässt.

Doch, sie lässt sich, nur nicht per Atmel Studio. Ruf den Compiler halt 
von Hand auf, oder bau dir selber ein passendes makefile. Das passende 
Compilerflag steht ja nun direkt im ersten Kommentar dabei, was du noch 
brauchst, lässt sich vermutlich schnell ergooggeln. Auch wenn es komisch 
klingt, es gab eine Zeit vor Atmel Studio, in der auch schon Programme 
für den AVR geschrieben wurden.

Oliver

von DDSler (Gast)


Lesenswert?

Oliver S. schrieb:
> DDSler schrieb:
>
>> Es sieht also so aus, dass die Datei
>>
>> http://www.avrfreaks.net/sites/default/files/minid...
>>
>> als alleinige Assemblerdatei sich nicht compilieren und linken lässt.
>
> Doch, sie lässt sich, nur nicht per Atmel Studio.

Kein Kommentar.

> Ruf den Compiler halt von Hand auf, oder bau dir selber ein passendes
> makefile.

Das ist leichter gesagt als getan.

> Das passende Compilerflag steht ja nun direkt im ersten Kommentar dabei,
> was du noch brauchst, lässt sich vermutlich schnell ergooggeln.

Die Betonung liegt auf vermutlich auf vermutlich.

> Auch wenn es komisch klingt, es gab eine Zeit vor Atmel Studio, in der
> auch schon Programme für den AVR geschrieben wurden.

WINAvr habe ich bereits (re)aktiviert.

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

io2313.def durch 2313def.inc
section text durch .CSEG
.byte durch .db
lo8 durch low
hi8 durch high ersetzen.

Sollte eigentlich alles wesentliche sein.
Studio 4 assembliert es dann zumindest als normales ASM-Projekt ohne 
Fehler.
Ich habe das Projekt mal noch rangehangen.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> io2313.def durch 2313def.inc
> section text durch .CSEG
> .byte durch .db
> lo8 durch low
> hi8 durch high ersetzen.

Gibt es einen vernünftigen Grund, den Atmel Assembler zu verwenden wenn 
man den GNU-Assembler hat?

von Michael U. (amiga)


Lesenswert?

Hallo,

gibt es einen vernünftigen Grund, den GNU-Assembler zu verwenden, wenn 
ich mit dem Atmel-Assembler schon gearbeitet habe als ich noch garkeinen 
GCC kannte (es den vermutlich noch nichtmal gab)?

Mich hat nur interessiert, ob es ein witkliches Problem gibt, daß hier 
seit Stunden beackert wurde und so habe ich es mal in 10 Minuten 
reingepackt und angepasst.

Aber meine Vermutung, daß er den 15 Jahre  alten Kram einfach nur 
beutzen wollte, war vermutlich falsch...

So, nun widme ich mich wieder meinem DynDNS-Client für den ESP8266, den 
brauche ich gerade ganz praktisch wegen dem blöden CGN von Telecolumbus.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael U. schrieb:
> gibt es einen vernünftigen Grund, den GNU-Assembler zu verwenden, wenn
> ich mit dem Atmel-Assembler schon gearbeitet habe

Ja: wenn man mehr als eine Quelldatei oder Bibliothek hat und damit
verschiebliche Objektmodule braucht, die der Linker zusammenfügt.

Insbesondere trifft das natürlich dann zu, wenn eins der Objektmodule
aus C und eins aus Assembler übersetzt worden ist.

> als ich noch garkeinen GCC kannte

Der AVR-GCC ist so alt, dass seine erste Version noch nicht einmal den
GNU-Assembler benutzt hat, sondern den (zur Atmel-Syntax kompatiblen)
AVRA als Assembler genommen hat.

: Bearbeitet durch Moderator
von Michael U. (amiga)


Lesenswert?

Hallo,

naja, wußte doch, daß mich das an AVRA erinnert hat, mit dem habe ich 
angefangen, AVRs zu ärgern. AVRA war der einzige, von dem es einen 
Amiga-Port gab. :-)

Ich lasse das ja auch alles gelten, nur manchmal entwickeln sich hier 
zuviele philosophische Diskussionen, nur weil jemand  eine ganz 
bestimmte Sache für ein Hobbyprojekt nutzen will.

Bei wirklich unfangreichen Projekten sind die Prämissen anders, keine 
Frage.

Gruß aus Berlin
Michael

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

AVRA auf Amiga?  Das wusste ich allerdings auch nicht.

Naja, manchmal wäre es auch sinnvoll, wenn der TE einfach mal ein
Stück weiter ausholen würde, was er am Ende überhaupt bezweckt.  Dann
könnte man ihm bessere Ratschläge geben.

von Michael U. (amiga)


Lesenswert?

Hallo,

avra 0.4 liegt zumindest noch im Aminet seit 1999.
Ich überlege nur gerade: gab es für mein damaliges STK200 bzw. dessen 
Dongle eine Programmiersoftware für den Amiga???? Keine Ahnung mehr.

ok, ist sowieso OT, aber die meisten schlafen wohl schon. ;-)

Gruß aus Berlin
Michael

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael U. schrieb:
> Ich überlege nur gerade: gab es für mein damaliges STK200 bzw. dessen
> Dongle eine Programmiersoftware für den Amiga?

Zumindest AVRDUDE hat nie jemand auf den Amiga portiert. ;)  Das wäre
ansonsten zu der Zeit möglicherweise der erste Ansatzpunkt gewesen.

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.