Forum: Compiler & IDEs SDCC externe ASM Datei einbinden


von Max M. (invoices)


Lesenswert?

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

von Matthias K. (matthiask)


Lesenswert?

Kannste den einen Befehle nicht gleich in C machen oder den ASM-Code 
Inline includen?
1
_asm 
2
3
...
4
5
_endasm;

von Max M. (invoices)


Lesenswert?

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

von Hc Z. (mizch)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.