#define RU1 r18
poweronreset: .byte 1
.macro store p0 p1 p2
ldi /p1 , /p2
sts /p0 , /p1
.endm
store poweronreset , RU1 , 13
avr.asm: Assembler messages:
avr.asm:10: Error: bad expression
avr.asm:10: Error: register number above 15 required
avr.asm:10: Error: `,' required
avr.asm:10: Error: garbage at end of line
avr.asm:10: Error: bad expression
avr.asm:10: Error: `,' required
avr.asm:10: Error: constant value required
avr.asm:10: Warning: skipping two-word instruction
avr.asm:10: Error: garbage at end of line
Was muss hier geändert werden, damit es läuft?
Gast
#2817907
>Was muss hier geändert werden, damit es läuft?
Der Code.
Gast
#2817909
Naja. So geht's nicht, ist sehr weit weg... Ich empfehl mal ein paar AVR ASM Beispiele reinzuziehen und zu vergleichen.
Gast
#2817928
Backslash statt forward slash
http://sourceware.org/binutils/docs/as/Macro.html#Macro Hieraus werde ich nicht schlau.
voga2073 schrieb: > Backslash statt forward slash Ok, super, danke. Jetzt wird aber beim Register RU1 eine Fehlermeldung ausgeworfen. Wie werden Register korrekt definiert?
Gast
#2817937
Statt #define RU1 r18 machste #define r18 RU1 dann geht das auch. Volker
Gast
#2817948
Nee, warn bisschen blöd. Das sollte als RU1 = r18 gehen. Probiers mal, vllt. auch umgekehrte Reihenfolge. Volker
Funktioniet leider nicht. Als Fehlermeldung kommt immer: avr.asm:10: Error: register name or number from 0 to 31 required
... das andere habe ich gerade erst gesehen, werde es ausprobieren und dann melden.
RU1 = r18 r18 = RU1 geht beides nicht. Wieder die gleiche Fehlermeldung.
Gast
#2817975
Also, jetzt mal selbst probiert. Der Code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
wird fehlerfrei übersetzt in: 8cd: 2d e0 ldi r18, 0x0D ; 13 8cf: 20 93 cc 08 sts 0x0088, r18 Volker
...hier leider nicht. Habe festgestellt, dass alles was mit # anfängt ignoriert wird, bzw. als Kommentar betrachtet wird. Auch .equ RU1 , r18 geht nicht, gleiche Fehlermeldung.
Gast
#2818015
Hi Um welchen AVR Assembler geht hier? MfG Spess
Gast
#2818019
Der Macro-Syntax nach zu urteilen müsste das der gcc sein. Ended der Name der Assemblerdatei auf .S? Sonst läuft die u.U. nicht durch den Precompiler und dann werden die Defs nicht ausgewertet. Volker
Spess53 schrieb: > Um welchen AVR Assembler geht hier? Avr-as von binutils auf Linux. http://ftp.gnu.org/gnu/binutils/ (binutils-2.22.tar.bz2) http://sourceware.org/binutils/docs/as Auch ein Umbenennen mit Endung .s oder .S zeigt die gleichen Ausgaben.
Hat jemand eine Idee?
Rainer S. schrieb: > Hat jemand eine Idee? Wie benutzt du denn den Assembler? Ich vermute mal, dass du ihn direkt aufrufst. Das ist keine so gute Idee. Benutze den avr-gcc als Frontend, dann klappt das auch mit dem Präprozessor.
Stefan Ernst schrieb: > Rainer S. schrieb: >> Hat jemand eine Idee? > > Wie benutzt du denn den Assembler? Ich vermute mal, dass du ihn direkt > aufrufst. Ja, richtig. avr-as [file] > Das ist keine so gute Idee. Benutze den avr-gcc als Frontend, > dann klappt das auch mit dem Präprozessor. Ich brauche aber nur den Assembler... Geht das nicht auch ohne GCC?
Rainer S. schrieb: > Ich brauche aber nur den Assembler... Offenbar ja nicht, denn du willst ja auch den Präprozessor haben. Und wenn du mit dem vom Assembler produzierten Output irgendetwas anfangen willst, dann brauchst du auch noch den Linker hinterher. Rainer S. schrieb: > Geht das nicht auch ohne GCC? Klar, dann musst du eben alles selber aufrufen (Präprozessor vorher, Linker hinterher), mit den richtigen Optionen, dazu noch ein Linker-Script selber schreiben (obwohl es im einfachsten Fall vielleicht auch ohne Linker-Script geht).
Stefan Ernst schrieb: > Rainer S. schrieb: >> Ich brauche aber nur den Assembler... > > Offenbar ja nicht, denn du willst ja auch den Präprozessor haben. Keine Ahnung was jetzt ein Präprozessor ist... Hatte gedacht, es wäre (relativ) einfach vom Atmel-Assembler auf den avr-as umzusteigen. avr-gcc ist bei den Binutils nicht dabei. Habe ich versucht aufzurufen. > Und > wenn du mit dem vom Assembler produzierten Output irgendetwas anfangen > willst, dann brauchst du auch noch den Linker hinterher. Aha. > Rainer S. schrieb: >> Geht das nicht auch ohne GCC? > > Klar, dann musst du eben alles selber aufrufen (Präprozessor vorher, > Linker hinterher), mit den richtigen Optionen, dazu noch ein > Linker-Script selber schreiben (obwohl es im einfachsten Fall vielleicht > auch ohne Linker-Script geht). Ist das denn relativ einfach möglich, oder soll ich das lieber weiter mit dem Atmel-Assembler machen. Ich würde gerne unter Linux arbeiten.
Rainer S. schrieb: > Ist das denn relativ einfach möglich, oder soll ich das lieber weiter > mit dem Atmel-Assembler machen. Ich würde gerne unter Linux arbeiten. Warum nimmst du nicht den Assembler "avra"? Er ist meistens in den Linux-Paketen enthalten. Soweit ich mich erinnere, ist avra zum Atmel-Assembler kompatibel. Er besitzt sogar ein paar nützliche Erweiterungen.
Rainer S. schrieb: > Stefan Ernst schrieb: >> Rainer S. schrieb: >>> Ich brauche aber nur den Assembler... >> >> Offenbar ja nicht, denn du willst ja auch den Präprozessor haben. > > Keine Ahnung was jetzt ein Präprozessor ist... Das ist das Ding, das #define und Konsorten auflöst. Wenn du keinen Präprozessor verwenden willst/kannst/darfst, dann beschränke dich auf .macro und .altmacro, d.h. die Makro-Syntak/-Semantik von gas anstatt der von cpp. > Hatte gedacht, es wäre (relativ) einfach vom Atmel-Assembler auf den > avr-as umzusteigen. > avr-gcc ist bei den Binutils nicht dabei. Habe ich versucht aufzurufen. Wer installiert denn avr-binutils ohne avr-gcc? > Ist das denn relativ einfach möglich, oder soll ich das lieber weiter > mit dem Atmel-Assembler machen. Ich würde gerne unter Linux arbeiten. avr-gcc/avr-as ist nicht kompliziert, aber in der Verwendung eben etwas anders als der Atmel-Assembler. Dafür ist der GNU-Assembler leistungsfähiger.
Markus W. schrieb: > Rainer S. schrieb: >> Ist das denn relativ einfach möglich, oder soll ich das lieber weiter >> mit dem Atmel-Assembler machen. Ich würde gerne unter Linux arbeiten. > > Warum nimmst du nicht den Assembler "avra"? Er ist meistens in den > Linux-Paketen enthalten. Kannte ich bis jetzt nicht. Probiere ich vielleicht mal aus. Auf der Seite steht, dass er kompatibel zum Atmel Assembler ist. Johann L. schrieb: > Wenn du keinen Präprozessor verwenden willst/kannst/darfst, dann > beschränke dich auf .macro und .altmacro, d.h. die > Makro-Syntak/-Semantik von gas anstatt der von cpp. Das hört sich kompliziert an... >> Hatte gedacht, es wäre (relativ) einfach vom Atmel-Assembler auf den >> avr-as umzusteigen. >> avr-gcc ist bei den Binutils nicht dabei. Habe ich versucht aufzurufen. > > Wer installiert denn avr-binutils ohne avr-gcc? In dem binutils Download ist auch arm-as und arm-ld drin, den ich für einen Freepascal Crosscompiler benötige. Da habe ich dann eben auch avr-as probiert. >> Ist das denn relativ einfach möglich, oder soll ich das lieber weiter >> mit dem Atmel-Assembler machen. Ich würde gerne unter Linux arbeiten. > > avr-gcc/avr-as ist nicht kompliziert, aber in der Verwendung eben etwas > anders als der Atmel-Assembler. Dafür ist der GNU-Assembler > leistungsfähiger. Warum ist der denn leistungsfähiger?
Gast
#2818803
Versuch's mal in der Richtung:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Da sind auch noch Anweisungen drin um auf in C deklarierte Variablen zuzugreifen.
Gast
#2818810
1 | |
2 | |
3 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.