Guten Tag, ich habe ein Problem, und zwar habe ich unter ubuntu Eclipse mit openocd und arm-elf-gcc (GCC) 4.1.0 am laufen. Jetzt habe ich ein Prgramm geschrieben, welches ein einfaches Display ansteuern sollte, und die Display.c einbinden sollte. Das hat auch alles gut geklappt, bis dann beim Compilieren der folgende Fehler auftrat: Compiling C: display.c arm-elf-gcc -c -mcpu=arm7tdmi -I. -gdwarf-2 -DROM_RUN -D__WinARM__ -O0 -Wall -Wcast-align -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=display.lst -Iinclude/ -MD -MP -MF .dep/display.o.d -Wnested-externs -std=gnu99 display.c -o display.o /tmp/ccngc6wm.s: Assembler messages: /tmp/ccngc6wm.s:22: Error: bad instruction `lsl r3,r0,#2' make: *** [display.o] Fehler 1 In der Display.c Datei ist das diese Stelle: //************************************************************** // delay1us(uiK) verzögert um uiK * 1us bei MCK=24Hz // uiK <= 1.073.741.823 us = 17,8957 sec //************************************************************** _attribute_ ((naked)) void delay1us(unsigned int uiK){ asm(" lsl r3, r0, #2 \n\t" // Multi *4 "Label: cmp r3, #0 \n\t" //1 " beq Ende \n\t" //2 " sub r3, r3, #1 \n\t" //1 " b Label \n\t" //2 "Ende: mov pc, lr \n\t"); } Nun weiß ich nicht genau woran es liegt. Bitte um Hilfe. Danke
Versuch vielleicht mal MOV, statt LSL. Es gibt auf ARM keine native LSL instruction da jede ALU operation ein LSL auf einem Operanden machen kann. Kann hoechstens sein dass manche Assembler es als Alias zulaesst. Vgl. ADR. ZigZeg Edit: Seh gerade, im Thumb mode gibt es LSL. Vielleicht wird das nicht als Thumb assembliert ?
Kai S. schrieb: > Es gibt auf ARM keine native LSL instruction da jede ALU operation ein > LSL auf einem Operanden machen kann. Kann hoechstens sein dass manche > Assembler es als Alias zulaesst. Vgl. ADR. Als ARM den Thumb(-2?) Befehssatz rausbrachte haben sie auch eine Assembler-Notation definiert, die gemeinsame Befehle in der gleichen Weise schreibt. In dieser "Unified Assembly Language" Variante existiert auch die LSL Schreibweise.
okay ich bin der Sprache Assembler noch nicht so mächtig, hat wer eine Idee wie man es sonst schreiben könnte?
okay es funktioniert , wenn man mov r3,r0, lsl #2 eingegeben hat. Ich danke euch.
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.