Forum: Compiler & IDEs AVR-GCC in Assembler-Modus


von Harry (Gast)


Lesenswert?

Hi Leute,

ich besitze mehrere Asemblerprogramme, geschrieben für den AVR-GCC im 
Assembler-Modus.
Ich versuchte den AVR-GCC zu installieren, aber bei meinem PC 
funktioniert es einfach nicht - im Gegesatz zum WAVRASM, der einwandfrei 
auf meinem PC läuft.

Da ich kein begeisterter Assemblerfreund bin, meine Frage: Gibt es eine 
Möglichkeit, automatisch meine Programme vom AVR-GCC (Assembler-Modus) 
zum WAVRASM zu konvertieren
ohne aber Zeile für Zeile bearbeiten zu müssen?

Für Infos wäre ich dankbar,

bis

von BAB (Gast)


Lesenswert?

hähh du bist kein freund von assembler und willst gcc code nach 
assembler umwandeln?....

wenn ich das so verstehe wie ich meine schau mal hier:
http://www.mikrocontroller.net/avr-gcc-faq.htm

von Harry (Gast)


Lesenswert?

Hi,
Wenn Du schon antwortest, hättest Du dir die Arbeit machen sollen meine 
Frage genauer zu lesen!
Trotzdem danke für die Bemühung!
bis

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Gibt's nicht. Du wirst nicht drumrumkommen AVR-GCC zu installieren.

von BAB (Gast)


Lesenswert?

ok...dann lass ich das mit dem antworten bei dir...

von Notker (Gast)


Lesenswert?

Also ich bin ja keiner von diesen Assembler-Freaks, aber meines Wissens 
gibt es kein Tool, das eine automatische Umsetzung vom Format des 
GNU-Assemblers (avr-as.exe) auf das Format des Atmel-Assemblers (avrasm 
bzw. wavrasm) durchführt. Ich habe auch extra nochmal im Internet 
nachgeschaut.

Andererseits sollte es aber auch kein Problem sein, den avrgcc zu 
installieren. Sehrwahrscheinlich sind diese Assembler-Dateien auch nicht 
vollständig, d.h. sie benötigen sehrwahrscheinlich mindestens noch den 
zusätzlichen Initialisierungscode, der sich beim avrgcc in der Datei 
gcrt1.S befindet.

@harry
Du kannst ja mal die Probleme genau beschreiben, die du bei der 
Installation hast, vielleicht können wir dir ja helfen.

Notker

von Harry (Gast)


Lesenswert?

Hi Leute,
ich war mal eben beim Weihnachtsmann und konnte Euch vorher nicht 
antworten!

Wenn ich den installierten GNU-Assembler mit "avr-as.exe" aufrufe, 
erscheint ein DOS-Fenster, und das war alles. Wenn ich was ins Fenster 
reinschreibe, egal was, und dann mit "enter" bestätige, verschwindet 
mein DOS-Fenster und alles kehrt wieder
zurück zum Windows XP.
So wie ich's verstanden habe, arbeitet "avrgcc" nur im DOS-Modus. Nun, 
ich finde zwar DOS hervorragend und habe auch  speziell einen älteren PC 
damit eingerichtet. Mein "wavrasm" läuft aber auf einem anderen PC, 
unter Windows XP und in diesem Modus hätte ich eigentlich gerne 
gearbeitet.

Einer der Programme die ich assemblieren wollte, ist das Programm 
"minidds.asm" von den Jasper's AVR pages 
"http://www.myplace.nu/avr/index.htm";.

Ich denke aber mir bleibt nichts anderes übrig, als jede Assemblerzeile 
dem wavrasm anzupassen.

Auf jeden Fall, danke für Eure Bemühungen.

bis

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Du musst auf der Kommandozeile (cmd.exe) folgendes eingeben:

avr-gcc -mmcu=at90s2313 -x assembler-with-cpp minidds.asm

Mit DOS hat das übrigens nichts zu tun, auch wenn's so aussieht.

von Harry (Gast)


Lesenswert?

Hi Andreas,
jetzt bin ich aber stutzig geworden! Die "cmd.exe" existiert überhaupt 
nicht auf meinem PC. Ich habe den AVRGCC aus der Datei 
"avrgcc20011121a.exe" entpackt und installiert. Das ist doch die 
richtige Datei, oder?

bis

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

cmd.exe gehört zu deinem winxp. Einfach mal bei "ausführen" eingeben.

von Harry (Gast)


Lesenswert?

Hi Leute,
diese Feiertage sind Schwerstarbeit...
Also bei mir funkt der AVR-GCC einfach nicht, und das ist gut so: 
weniger Müll auf meinem PC!
Ich habe die Beispielsdatei (minidds.asm) für den WAVRASM angepasst. Es 
war einfacher als ich dachte und läuft prima!

Ich danke euch für alles,
bis

von Lange (Gast)


Lesenswert?

kannst du mir mal die umgewandelte datei zusenden? die in wavrasm...
wäre echt super.
ich hab auch das problem!

von Joerg Wunsch (Gast)


Lesenswert?

Nun ja, wie wäre es, das Problem stattdessen mal zu
analysieren?  Insbesondere wäre statt ,,ich habe ein
Problem'' eine aktuelle Beschreibung des Problems (welche
Fehlermeldungen gibt es, was genau hast Du versucht
auszuführen) sehr viel angebrachter.  Warum muß ich das
eigentlich jetzt höchstpersönlich für Euch nachvollziehen,
obwohl ich doch eigentlich das Problem gar nicht selbst
habe?  Ich denke, hier seid Ihr einfach Eurer Mitwirkungspflicht
nicht so recht nachgekommen...

Dieses Teil ist offenbar für eine alte Version des avr-gcc
geschrieben.  In der aktuellen Version muß man dafür:

. #include <io2313.h> in #include <avr/io.h> umbenennen

. Eigentlich müßte man alle IO-Register-Zugriffe umschreiben
  auf die Benutzung von __SFR_IO8() etc. umschreiben, wie in
  http://savannah.nongnu.org/download/avr-libc/doc/avr-libc-user-manual/group__avr__sfr__notes.html
  beschrieben.  Alternativ der Kompatibilitäts-Hack, der dort
  auch steht:
  #define __SFR_OFFSET 0
  vor obiges #include schreiben.  Dann compiliert es.

. Die Bemerkung mit dem preprocessed assembler ist nicht
  sonderlich anfängerfreundlich.  Klar muß man es durch
  den Präprozessor schicken, bevor man es dem Assembler
  füttert, damit die C-Präprozessor-Anweisungen (#include
  sowie all die Registernamen) aufgelöst werden.  Dafür
  genü?t es übrigens, wenn man die Datei nicht auf .asm,
  sondern auf .S (großes S) enden läßt und den Compiler
  auch so (mit dem großen .S) aufruft.  Aber: das Progrämmchen
  benutzt keinerlei C-Laufzeitsystem, sondern schreibt all
  seine Interruptvektoren selbst.  Damit knallt es dann mit
  einer undefinierten Referenz auf main(), die das
  C-Laufzeitsystem haben möchte.  (Wenn man RESET in main
  umbenennt, wird man die zwar los, aber funktionieren wird
  es trotzdem nicht, weil ja der Interruptvektor für die
  UART noch nicht hinhaut).  Folglich muß man zwar den
  Compiler mit Präprozessor zum Assemblieren nehmen, aber
  das Linken dann mit der Hand anwerfen:

  avr-gcc -mmcu=at90s2313 -c minidds.S
  avr-ld -mavr2 -o minidds.out minidds.o

  Danach dann mit avr-objcopy in gewohnter Weise ein
  Hexfile draus machen.

Ist gewissermaßen vom Autoren ein bißchen zum Mitdenken
geschrieben worden, so wie das bei Jesper da auf der Seite
geschrieben steht...  Vielleicht war das ja Absicht? ;-)

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.