mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unterschied zwischen AVR Studio Assembler und gcc-as?


Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, ich möchte unter Linux Assembler auf dem AVR programmieren. Leider 
gibt es nur einen Assembler, der auch aktuelle AVR unterstützt, und das 
ist der gcc-as.

Zwischen dem gcc-as und dem AVR Studio bzw den Assembler von Atmel gibt 
es aber wohl einige Unterschiede in der Syntax. Gibt es irgendwo einen 
Vergleich? Hier auf der Seite hab ich nur einen Forenbeitrag gefunden. 
Darin ging es lediglich um die Doppelregister

Eignet sich der gcc-as überhaupt dazu, reines Assembler zu programmieren 
oder sollte man einfach den AVR Assembler mit Wine verwenden?

PS: Ich hab eine ähnliche Frage schon in meinem Forum gestellt.
http://www.elektronik-projekt.de/thread.php?threadid=6404

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst mit avr-as gut arbeiten.  Beachte aber, dass avrasm2 (der 
originale Atmel-Assembler) auch unter Linux (mit wine) läuft.

Die ganzen Assembler-Direktiven sind bei avr-as anders.  Es hätte wenig 
Sinn, die denen des avrasm2 gegenüber zu stellen, Du musst sie einfach 
neu lernen.  Auch ist das ganze Handling anders, da avr-as Code erzeugt, 
der noch gelinkt werden muss.  Um das in einem Rutsch zu machen, nimmst 
Du am Besten avr-gcc als Frontend.  Bekommt der als Source ein .S, weiß 
der schon, was zu machen ist.

Es ist ein Ein-Pass-Assembler, und seine Fehlermeldungen sind nicht 
immer erhellend.  Seine Stärken spielt er vor allem in der Kombination 
mit gcc-C-Code aus.  Für eine von C aufrufbare Function müssen z.B. nur 
die Übergabekonventionen beachtet werden und das Einsprunglabel als 
global definiert werden, Du kannst dieselben globalen Variablen 
verwenden, egal wo sie definiert sind, usw.

Der Unterschied, über den man am schnellsten stolpert, ist, dass avr-as 
in seinen Symbolen keinen I/O-Bereich kennt, die Register dort sind mit 
Ramadressen (also unterste Adresse 0x20) einheitlich angegeben.  Um 
beispielsweise nach Port B mit einem I/O-Befehl (in, out, sbis, sbic, 
...) zu schreiben, muss es
  out  _SFR_IO_ADDR(PORTB),r24
heißen.  Oder Du setzt am Beginn des Assembler-Source
#define __SFR_OFFSET 0  /* we handle different I/O addresses without macros  */ 
rein.  Dann darfst Du für Register im I/O-Bereich kein lds/sts verwenden 
(vermutlich eine leichte Übung), aber in/out/... ohne Macro.

Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt so, als würde es sich nicht lohnen, sich mit dem gcc-as 
rumzuschlagen.

Schade, dass es kein aktuelles Equivalent zum avrasm2 unter Linux gibt

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende avr-as gerne und häufig wegen seiner zusätzlichen Features, 
aber zum Einlernen in Assembler ist er sicher nicht besonders geeignet.

Da avrasm2 unter Linux läuft, wird sich vermutlich keiner so schnell die 
Mühe machen, ein natives Duplikat davon zu bauen.  Es gibt ja keinen 
Leidensdruck, es tut ja.  Und wer mehr braucht, nimmt avr-as.

Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was sind das denn für zusätzliche Features? Nur die Verbindung zu C?

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf Linux einfach „info gas“ tippen und sich überlegen, was davon der 
avrasm2 bieten würde.  Vorlesen tue ich es jetzt aus hoffentlich 
nachvollziehbaren Gründen nicht.  Ob Du es brauchst, musst Du 
entscheiden.

Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da steht irgendwie alles mögliche. Das meiste davon kann ich irgendwie 
nicht mit dem avr-as in Verbindung bringen, außer dass ich natürlich 
auch mit Nano die Files editieren kann und mit screen dies auch 
unterbrechungsfrei via SSH usw.

Meintest du das mit den zusätzlichen Features? Allerdings frage ich mich 
dann, was ich mit GRUB oder vcd-info soll. Oder bekommst du da eine 
andere Ausgabe?
File: dir,      Node: Top       Dies ist der Beginn des INFO-Baums

  Dieser Verzeichnis-Knoten zeigt ein Menü aller Hauptpunkte an.
  „q“ beendet Info, „?“ listet alle Info-Befehle auf, „d“ kehrt hierher
  zurück, „h“ gibt eine Einsteiger-Hilfe, „mEmacs<Return>“ besucht das
  Emacs-Manual, etc.

  Im Emacs kann man mit dem zweiten Mausknopf auf einen Menüeintrag oder
  einen Querverweis klicken, um einen solchen auswählen.

* Menu:

Archiving
* Cpio: (cpio).                 Copy-in-copy-out archiver to tape or disk.

AVR Programming & development tools.
* Simulavr: (simulavr).         A simulator for Atmel AVR microcontrollers.

...

Autor: Andreas Schweigstill (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus Burrer schrieb:
> Hi, ich möchte unter Linux Assembler auf dem AVR programmieren. Leider
> gibt es nur einen Assembler, der auch aktuelle AVR unterstützt, und das
> ist der gcc-as.

Es gibt keinen gcc-as. Der gebräuchlichste Assembler unter Linux ist 
GAS. Er gehört NICHT zum GCC-Paket, sondern zum Paket Binutils.

Da jedoch bei der Erzeugung einer Toolchain tunlichst GCC und Binutils 
gemeinsam kompiliert werden sollten, ist der doch fundamentale 
Unterschied nicht offensichtlich.

Ebenso kann man das GCC-Frontend gcc auch zum Aufruf von gas verwenden.

Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, gehört für mich zusammen.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
„info gas” funktioniert natürlich nur, wenn Du die Info-files 
installiert hast.  Du hast sie offensichtlich noch nicht benötigt.  Bei 
den meisten Distributionen werden die in einem Paket enthalten sein, das 
„binutils” und „doc“ oder „info“ im Namen hat.  Die Installation lohnt 
sich eigentlich immer schon dann, wenn man kompliziertere Aufgaben für 
avr-gcc hat, die mit der Standardeinstellung der Toolchain nicht zu 
erledigen sind.

Ich habe aber nicht vor, in eine Diskussion „mein Assembler ist besser“ 
einzusteigen.  Er ist es nicht -- jedenfalls nicht für jedermann.  Ich 
will Dir den avrasm2 also keinesfalls ausreden.  Für meine Arbeit 
(Modularisierung, Libraries, sections, symbolisches Debuggen in den 
Modulen mit avr-gdb) brauche ich den avr-as und möchte ihn nicht missen. 
YMMV.

Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hc Zimmerer schrieb:
> Ich habe aber nicht vor, in eine Diskussion „mein Assembler ist besser“
> einzusteigen.  Er ist es nicht -- jedenfalls nicht für jedermann.  Ich
> will Dir den avrasm2 also keinesfalls ausreden.

Ich will auch gar keine Diskussion "meiner ist größer als deiner". 
Ehrlich gesagt musst du mir den avrasm auch gar nicht ausreden. Ich bin 
eher etwas frustriert, dass man auf Wine zurückgreifen muss, weil es 
kein natives Equivalent gibt bzw das einzige Projekt in der Richtung 
eingeschlafen ist

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das ist schon schade.

Autor: avra watcher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus Burrer schrieb:
> Ich bin
> eher etwas frustriert, dass man auf Wine zurückgreifen muss, weil es
> kein natives Equivalent gibt bzw das einzige Projekt in der Richtung
> eingeschlafen ist


stimmt so ganz nicht, avra wird auf Sourceforge gerade wiederbelebt.

Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
avra watcher schrieb:
> stimmt so ganz nicht, avra wird auf Sourceforge gerade wiederbelebt.

cool, wusste ich gar nicht. Danke für den Hinweis

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> stimmt so ganz nicht, avra wird auf Sourceforge gerade wiederbelebt.
und ist auch schon wieder eingeschlafen.

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.