mikrocontroller.net

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


Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok...dann lass ich das mit dem antworten bei dir...

Autor: Notker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lange (Gast)
Datum:

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

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/a...
  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? ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.