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
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
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
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
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
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.
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
cmd.exe gehört zu deinem winxp. Einfach mal bei "ausführen" eingeben.
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
kannst du mir mal die umgewandelte datei zusenden? die in wavrasm... wäre echt super. ich hab auch das problem!
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/avr-libc-user-manual/group__avr__sfr__notes.html 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? ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.