AVR Assembler mit Geany programmieren

Geany mit AVR Assembler

Möchte man unter Linux Assembler Programme für den AVR schreiben gibt es drei Assembler, den Gnu Assembler von GCC, gavrasm und avra. avra ist kompatibel zu der Syntax des avrasm2 von Atmel. gavrasm ist weitestgehend kompatibel, es gibt jedoch ein paar Eigenheiten.

Seit Anfang 2010 wird avra nach mehrjähriger Pause weiterentwickelt. Dies habe ich zum Anlass genommen, um für den Editor Geany eine Syntax Highlightning Datei zu erstellen. Die Syntax von gavrasm sollte weitestgehend identisch sein.

Diskussionen und zusätzliche Informationen zu AVR Assembler Programmierung mit Geany in diesem Forum Thread

Download

Installieren

Es reicht aus, wenn man die Datei in das Verzeichnis ~/.config/geany/filedefs kopiert

cp filetypes.asm ~/.config/geany/filedefs

Snippets

Als zusätzliche Hilfe lassen sich sogenannte Snippets einrichten. Hierzu öffnet man das Menu Werkzeuge → Konfigurationsdateien → snippets.conf und fügt an das Ende folgendes an:

[ASM]
macro=.macro %cursor%\n.endmacro
if=.if (%cursor%)\n.endif
id=.ifdef %cursor%\n\t\n.endif
ind=.ifndef %cursor%\n\t\n.endif
comment=;***********************************************************************\n;* %cursor%\n;***********************************************************************
else=.if (%cursor%)\n.else\n\n.endif
elif=.if (%cursor%)\n\n.elif (%cursor%)\n\n.endif
i=.include "%cursor%"
nli=.nolist\n\t.include "%cursor%"\n.list

Anschließend speichert man die Datei und ruft den Menupunkt Werkzeuge → Einstellungen erneut laden auf. Nun kann man in der Assembler Datei ein Snippet aufrufen, indem man den Namen eingibt und anschließend die TAB Taste drückt. Zum Beispiel:

macro<TAB>

ergibt

.macro

.endmacro

Der Cursor blinkt anschließend hinter .macro, so das man direkt mit dem Makronamen weiter machen kann. Mit dieser Methode lassen sich auch andere, immer wiederkehrende Programmstrukturen als Snippet anlegen und mit einem einfachen Befehl einfügen.

Der Snippet comment ergibt einen Kommentarblock. Dies erleichtert das einheitliche Erstellen von Funktionsbeschreibungen. Natürlich kann man das nach Belieben ausbauen. Der Cursor steht automatisch in der mittleren Zeile.

;***********************************************************************
;* 
;***********************************************************************

Der Snippet nli erzeugt folgendes Konstrukt:

.nolist
    .include ""
.list

nli steht für NoList Include und kann verwendet werden, wenn eine Include Datei bei der List Ausgabe nicht erscheinen soll. Der Curser steht zwischen den beiden Anführungszeichen.

Durch diese Snippets kann man sich also einiges an Tipparbeit ersparen. Die genannten Snippets sind nur Beispiele und können nach Belieben erweitert oder geändert werden.

Kompilieren

Eigentlich heißt es in diesem Fall assemblieren, da wir es mit einem Assembler zu tun haben. Den Begriff kennt Geany jedoch nicht. Mit einem Klick auf Kompilieren wird avra aufgerufen. Hierzu muss sich das Programm im Pfad befinden. Am einfachsten und ohne Root Rechte geht das, wenn man im eigenen /home Verzeichnis ein Unterverzeichnis namens bin erstellt und avra oder gavrasm hineinkopiert. Unter Umständen muss man sich abmelden und neu anmelden, damit die Änderung erkannt wird.

Möchte man statt avra lieber gavrasm verwenden kann man dies leicht ändern, indem man auf den Pfeil neben Erstellen klickt, den Menupunkt Include-Parameter und Argumente angeben auswählt und dort in der Zeile Kompilieren das Kommando avra durch gavrasm ersetzt. Es empfiehlt sich, bei gavrasm den Parameter -a zu verwenden.

Fehlermarkierung

Geany kann Fehler, die beim Compilieren/Assemblieren auftreten, im Sourcecode markieren. Dazu muss man mit Hilfe einer Regular Expression in der Ausgabe des Compilers nach den entsprechenden Mustern suchen. Diese Regular Expression muss in der filtypes.* Datei stehen.

Für avra und gavrasm unterscheiden sich die regulären Ausdrücke. Je nachdem, mit welchem Assembler man arbeiten will, muss man in der filetypes.asm die passende Zeile auskommentieren.

#error_regex=\[(.+),([0-9]+)\]          # Uncomment for gavrasm
error_regex=(.+)\(([0-9]+)\) : Error    # Uncomment for avra

Wie das ganze dann aussieht zeigt dieser Screenshot am Beispiel des avra.

Geany Assembler Error

Konfiguration ab Geany 0.19

Ab Geany 0.19 gibt es einen erweiterten Build Dialog. Man klickt dazu auf den Pfeil neben Erstellen und wählt das Menu Kommandos zum Erstellen konfigurieren. Für avra gibt man folgende Werte ein:

Geany 0.19 Konfiguration

/www/htdocs/w00645de/dokuwiki/data/pages/mikrocontroller/avr/avrlinux/geany_avr_asm.txt · Zuletzt geändert: 2011/02/20 17:18 von burli
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0