Hallo zusammen,
ich müsste unter Linux Assembler für einen ATmega644 übersetzen. Bisher
habe ich für andere Controller avra verwendet. Allerdings bekomme ich
mit ATmega644 einige Fehler:
Verwendet habe ich dabei eine Include Datei welche ich hier im Forum
gefunden habe[1]. Wenn ich mir die Devices auflisten lasse (avra
--devices) dann wird dort auch der m644 nicht gelistet und somit wohl
auch nicht von avra unterstützt. Das würde auch die Fehler erklären.
Ich habe noch tavrasm verwendet allerdings beschwert der sich ebenfalls
über den unbekannten m644. Allerdings bekomme ich hier ein HEX File
welches allerdings nicht so ganz stimmt (Checksumme passt nicht ganz:
z.B. :020000020000FC).
Kennt jemand noch ein anders Programm mit dem ich vielleicht mehr Erfolg
habe? Oder habe ich nur was falsch gemacht?
Vielen Dank schon mal im voraus!
Grüße
nougad
[1] Beitrag "woher Registerdefinitionen für mega644?"
Hi,
der AVRA kann die C-Präprozessoranweisungen nicht, kommentier doch mal
alle Zeilen in m644.inc, die mit # anfangen aus, und probiers nochmal
(so wie im Anhang...)
Gruß,
Boregard
>Kennt jemand noch ein anders Programm mit dem ich vielleicht mehr Erfolg>habe?
Windows?
Mag jetzt unschön klingen, aber AVRStudio funktioniert dort einfach.
Oliver
> Verwendet habe ich dabei eine Include Datei welche ich hier im Forum> gefunden habe
Die Include-Datei gehört zum Lieferumfang von AVRASM2 (AVR-Studio,
Windows) und funktioniert damit bestens. Wie kommst Du auf die Idee,
dass Fremdprogramme auf Fremd-Betriebssystemen damit zurecht kommen
müssen? Ich denke, dass Dein Windows-Boykott lächerlich ist.
...
Hannes Lux schrieb:
>> Verwendet habe ich dabei eine Include Datei welche ich hier im Forum>> gefunden habe>> Die Include-Datei gehört zum Lieferumfang von AVRASM2 (AVR-Studio,> Windows) und funktioniert damit bestens. Wie kommst Du auf die Idee,> dass Fremdprogramme auf Fremd-Betriebssystemen damit zurecht kommen> müssen? Ich denke, dass Dein Windows-Boykott lächerlich ist.>> ...
Na ja, nicht jeder mag sich ein Windows kaufen und installieren und sich
darin einarbeiten um AVR Programmierung zu machen ;-)
>Na ja, nicht jeder mag sich ein Windows kaufen und installieren und sich>darin einarbeiten um AVR Programmierung zu machen ;-)
Für ein einmaliges Übersetzen einer Sourcedatei ist das auch nicht
erforderlich. Irgendwo kennt man immer einen, der einen kennt, der mal
von einem gehört hat, der einen Windows-PC besitzt. So ganz selten
sollen die ja nicht sein.
Wenns ums regelmäßige Entwickeln von Software geht, darf sich jeder
gerne selber die richtigen Werkzeuge aussuchen.
Oliver
nougad schrieb:
> ich müsste unter Linux Assembler für einen ATmega644 übersetzen. Bisher
Zuerst solltest du mal darüber klar werden, daß Assembler nicht
Assembler ist (auch wenn's um dne gleichen µC geht)!
Es gibt GNU-Assembler für AVR, einen Assembler von Atmel und diverse
andere. Jeder dieser Assembler kennt andere Direktiven und Funktionen
(wie lo8() etc) und teilweise auch Mnemonics.
Das von dir gescilderte Problem bruhr darauf, daß vor dem Assemblieren
ein Präprozessor über die Quelle laufen soll. Wenn dein Assembler das
nicht automatisch veranstaltet, dann musst du es eben von Hand machen,
indem du dir den Präprozessor besorgst und im Makefile oder wo auch
immer das Präprozessing machst.
Allerdings gilt selbst danach das Gesagte über die unterschiedlichen
Assembler. Du musst also den richtigen Assenbler besorgen, und wenn's
den für dein OS nicht gibt die Quelle auf einen verfügbaren Assembler
portieren oder anderen Code hernehmen.
Johann
> Na ja, nicht jeder mag sich ein Windows kaufen
Hier gilt eigentlich das Gleiche wie bei der Bastelei: Entweder man
kommt mit den kostenlos verfügbaren Informationen (und dem eigenen
Wissen) zurecht, oder man muss die entsprechenden Dinge (Geräte,
Windoof) eben kaufen.
> und installieren und sich> darin einarbeiten um AVR Programmierung zu machen ;-)
Naja, Windoof gibt es auch als "Abfall" (z. B. mit einem älteren
gebrauchten Rechner), es muss ja nicht gleich die neueste Version sein.
Ich habe ja nichts gegen Linux, auch nicht gegen deren Macher und
Benutzer, ich finde es aber lächerlich, wenn man es auf Biegen und
Kotzen (äähh Brechen) auch da benutzen will, wo es (noch)
kontraproduktiv ist, ohne in der Lage zu sein, sich die
(Open-Source-)Software an die eigenen Bedürfnisse anzupassen.
Open-Source soll ja vom "Geben und Nehmen" leben, da passen die (meist
laut schreienden) hilflosen "nur Benutzer" (die halt nur nehmen ohne zu
geben) nicht so recht ins Konzept. Also nix gegen Linux und deren echte
Freaks...
...
Ich denke mal, das Problem ist der AVRA.
AVRA soll, so wird behaupted, ein unter Linux laufender AVR Assembler zu
sein der vollständig zum AVR Assembler von ATMEL kompatibel ist.
Das ist er aber nicht, einerseits müsste dazu noch einiges
hineinprogrammiert werden, andererseits ist er an anderen Stellen (z.B.
.EQU, .SET Direktiven) viel strikter als das "Original".
Andererseits ist er offensichltich nicht mehr gepflegt, da kein Bugs
mehr gefixed werden. Dafür ist er so trivial, daß man ihn sich selbst
zurechtbiegen kann.
Dadurch, daß er kompatibel sein soll wird man verführt, ihn zu nutzen
(vor allem, da nicht viel zu installieren ist). Dies kann der Grund
sein, warum nougad ihn nutzen wollte. Wenn man kein Windows hat, dann
ist das offensichtlich erst mal der einfachste Weg.
Von daher ist:
>>Ich habe ja nichts gegen Linux, auch nicht gegen deren Macher und>>Benutzer, ich finde es aber lächerlich, wenn man es auf Biegen und>>Kotzen (äähh Brechen) auch da benutzen will, wo es (noch)>>kontraproduktiv ist, ohne in der Lage zu sein, sich die>>(Open-Source-)Software an die eigenen Bedürfnisse anzupassen.
ziemlich kurzsichtig. Im übrigen kann man sich den ziemlich einfach
selbst anpassen. Nur nutzt hier geben nichts (ich habe einige
Anpassungen als Bugfix in Bugzilla eingetragen), wenn der Maintainer das
nicht mehr einpflegt.
Versuche mal, bei den ent. Windows Programmen die Anpassungen zu
machen....
So, jetzt habe ich mich genug aufgeregt, ich empfehle der Vorgehensweise
von Stefan Ernst zu folgen...
Ich habe mir mittlerweile auch beholfen, indem ich den AVRA etwas
angepasst habe. Leider wird bei den Projektverantwortlichen der Code
wahrscheinlich nicht mehr gepflegt und auch nicht auf Anfragen reagiert.
Allerdings möchte ich die Makro-Fähigkeiten nicht mehr missen, auch wenn
die Quelltexte für den "original" AVR Assembler dadurch unverdaulich
werden.
Eigentlich sind es nur zwei Dateien, die man angreifen muß:
avra.h : in Zeile 54 die Raute als zusätzliches Zeilenende-Zeichen
definieren
device.c : einfach einen ähnlichen Typen kopieren und die Parameter
anpassen
Jörg
Hallo,
also das auskommentieren hat schon mal soweit geholfen. Es wurde korrekt
eine Hex Datei erstellt und im Disassembler siehts ganz gut aus. Das
reicht mir erstmal, mehr brauche ich gerade nicht.
Für die Info, dass avra nicht mehr aktiv weiterentwickelt wird bin recht
dankbar. Hatte schon bisschen in die sourcen geschaut und wollte schon
Patches erstellen.
Evtl lohnt es sich die Patches, die jeder für sich macht zu sammeln und
das Projekt zu forken?
Bezüglich falscher Assembler: Avra sollte ka korrekt für die AVR
Plattform übersetzen. Das einzige was nicht passt, ist das Headerfile
für die Ersetzung der Bezeichner. Oder habe ich da was falsch
verstanden?
Danke für den Tipp mit WINE, aber das ist mir aktuell noch zu viel des
guten. Ich brauche nur ein paar HEX Files zum Testen.
Danke für die Hilfestellung!
PS: Auf die Windows Diskussion lass ich mich mal nicht ein. Ich kann den
entsprechenden Leuten mal empfehlen bei heise.de vorbei zu schaun. Da
finden sich viele gleichgesinnte Trolle.