Hallo, ich muss für den CC2530 eine asm in meinem C Programm aufrufen. Ich nutze den Compiler SDCC. Die .asm Datei sieht folgendermaßen aus: .globl _doSmth .area CSEG (REL,CON,CODE) .even _doSmth: MOV PCON, #0x01 NOP RET und mein C-Code: void foo(void){ _doSmth(); } Aber das geht scheinbar nicht so? Muss ich die asm-Datei noch irgendwie includen oder sonst was machen damit? In meinem makefile hab ich die Datei angegeben: SOURCEFILES += drivers/usb/library/cc2530/_doSmth.asm
Kannste den einen Befehle nicht gleich in C machen oder den ASM-Code Inline includen?
1 | _asm
|
2 | |
3 | ...
|
4 | |
5 | _endasm; |
wenn ich das einfach so schreibe:
void doSmth(){
_asm
.area CSEG (REL,CON,CODE)
.even
MOV PCON, #0x01
NOP
RET
_endasm;
}
dann bekomme ich einen compilefehler:
../../../src/drivers/radios/cc2530/doSmth.c:161: syntax error: token -
> 'CSEG' ; column 11
make: *** [../../../build/apps/doSmth/usbDongle/drivers/radios/cc2530/
doSmth.rel] Fehler 1
Ich kenne den Compiler zwar nicht, aber kannst Du mal cut&paste vom ganzen Übersetzungsvorgang machen? Vermutlich kommt die Fehlermeldung ja vom Linker, und anhand dessen Kommandozeile kann sich dann eventuell ergeben, dass es mit einer Änderung am Makefile getan ist (den als Anhang auch noch beifügen). P.S. Ich meine damit die erste Version, nicht Inline-Assembler. Denn es muss möglich sein, externe Assembler-Files einzubinden.
Schreib einfach PCON = 1; und gut. Da brauchst du doch kein Assembler!?
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.