Pfad: Home => avr DE => How-To => Assemblieren Linux Logo

Wie assembliere ich AVR-Assembler Quellcode unter Linux?

Editorfenster Im Folgenden wird angenommen, es gäbe einen Assembler-Quellcode namens "mein_asm_code.asm" in einem Ordner. Wer den Quellcode selbst erzeugen will, der Noch eine Warnung: Assembler-Quellcode-Dateien niemals mit Office-Schreibprogrammen öffnen und speichern. Das macht sie kaputt und für den Assembler unlesbar.

An den Seitenanfang, zur Leitseite

Schritt 1: Den gavrasm-Assembler für Linux holen

gavrasm downloaden Zum Assemblieren braucht man das Assemblerprogramm. Ich empfehle meinen eigenen, gavrasm. Er hat den Vorteil, dass er die Definitionsdateien von ATMEL für alle AVR-Typen verinnerlicht hat, wir brauchen uns daher nicht mit diesen herumschlagen (und das 850 MB große Studio herunterzuladen und unter Windows zu installieren).

Um gavrasm herunterzuladen, navigiere man mit seinem Lieblingsbrowser an die nebenstehende Adresse und lade sich mit einem Rechtsklick auf den Linux64-Link sowie "Ziel speichern unter" die Datei herunter, bevorzugt dahin, wo auch schon die Quellcode-Datei herumliegt.

gavrasm gibt es fertig kompiliert nur für die 64-Bit-Versionen von Linux. Wer 32-Bits oder noch ein anderes Betriebssystem hat, braucht den Pascal-Quellcode von gavrasm (von weiter unten auf der Webseite) und muss sich den mit Free Pascal (FPC) selber kompilieren.

gavrasm entzippt gavrasm ist gezippt. Um es auszupacken, rechtsklicke man auf die Datei und wähle "Extrahieren" und "Hierher extrahieren".

Die drei Dateien gavrasm, LiesMich.Txt und instr.asm sind nun ausgepackt und liegen im Ordner.

An den Seitenanfang, zur Leitseite

Schritt 2: Sich mit gavrasm vertraut machen

LiesMich.Txt In der LiesMich.Txt-Datei steht alles Wissenswerte über den Assembler gavrasm. Gleich zu Anfang stehen die Regeln, wie man den aufruft und was er mit dem "-"Schaltern alles anders macht als normal. Für den Anfänger ist "-seb" die beste Wahl.

gavrasm AVR-Typen Das hier sind alle AVR-Typen, die gavrasm kennt und für die er die Definitionen verinnerlicht hat. Versuche nicht, irgendwelche anderen Prozessorfamilien als 8-Bit-AVR damit zu assemblieren, das geht schief. Die Suffixe A, P, etc. sind meistens überflüssiges Beiwerk, weil sich die Definitionen meistens gar nicht unterscheiden. Aber gavrasm kennt sie alle ganz genau und persönlich.

An den Seitenanfang, zur Leitseite

Schritt 3: Eine Shell-Datei zum Assemblieren erzeugen

Shell-Script Die Ritter der Kommandozeile sind jetzt schon bedient: sie navigieren mit "cd" zu dem Ordner und tippen "./gavrasm -seb mein_asm_code" ein und sind fertig.

Wer tippfauler ist, erzeugt sich ein Shell-Script. Dazu ein Rechtsklick in den Ordner, "Neu" und "Textdatei". Wir nennen das Ding "assemblieren.sh". Mit einem Rechtsklick auf die neu erzeugte Datei und "Öffnen mit" wir das Script mit einem Editor und wir tippen Nebenstehendes darin ein. Nicht vergessen zu speichern, bevor wir die Script-Datei wieder zumachen.

An den Seitenanfang, zur Leitseite

Schritt 4: Assemblieren

Assemblieren Durch Klicken auf die Script-Datei startet nun der Assembler und verrichtet seine Arbeit in einem schwarzen Fenster. Er geruht uns in dem Fenster alles Wissenwerte mitzuteilen, z.B. dass er zwei Durchläufe absolviert hat. Eine Warnung hat er ausgegeben, nämlich dass er die verinnerlichten Symboldefinitionen verwendet hat statt die Datei "tn13def.inc" zu lesen.

Immerhin hat er das alles ohne Fehler gefressen, und das wollten wir so sehen.

Taucht hier die Fehlermeldung "Include-Datei nicht gefunden!" auf, dann gehört zu der asm-Datei eine (oder mehrere) Include-Dateien. Die müssen wir natürlich in den Ordner dazupacken, damit er glücklich wird.

Fehler werden bei gavrasm in einer separaten Datei .err aufgelistet, mit der man übersichtlicher durch den Quellcode navigieren kann als mit dem unübersichtlichen Listing.

Assembler-Listing In der neu erzeugten Datei "mein_asm_code.lst" gibt der Assembler alles Wissenswerte über den Assemblierprozess bekannt. Darunter sind die Adressen, die erzeugten Hexadezimalcodes des Programmes und vieles andere mehr.

Da wir beim Aufruf von gavrasm -s mit angegeben haben, erzeugt er am Ende eine Symboltabelle. Sie zeigt alle Symbole an, von T wie Typ über L wie Label (Adresse im Programm) bis zu R wie Register (alle verwendeten Register). Hätten wir auch Konstanten verwendet, käme als Symboltyp noch C hinzu. Auch Makros, die im Quellcode verwendet werden, sind aufgelistet.

So eine Symboltabelle kriegt man nur mit gavrasm, das macht kein anderer Assembler. Der ATMEL-Assembler gibt stattdessen die verwendeten Instruktionen bekannt, verrät aber nicht, wozu man den Unsinn außer für die häre Statistik eigentlich gebrauchen kann.

Hexdatei Ist der Assembliervorgang ohne Fehler absolviert, dann erzeugt gavrasm eine weitere Datei mit Suffix .hex. Diese enthält den erzeugten Hexcode im Intel-Hex-Format, der direkt von der Brennersoftware verstanden wird und in den Flashspeicher des AVRs gelotst werden kann.

Falls im Quellcode auch Inhalte für das EEPROM definiert sind, sind diese in der .eep-Datei ebenfalls in Intel-Hex-Format abgelegt, damit sie von der Brennersoftware verstanden werden.

An den Seitenanfang, zur Leitseite

©2014-2017 by http://www.avr-asm-tutorial.net