Hallo! Ich habe hier eine Funktion in einem .s43 Programm und möchte diese in einem c-Programm einbinden. (Compiler: mspgcc) Welche Optionen brauche ich hier im makefile? Bisher sieht das Ganze so aus: (mul.s43 ist das einzubindende file) NAME = test CSOURCES = main.c modul1.c modul2.c ASOURCES = mul.s43 CPU = msp430x169 ASFLAGS = -mmcu=${CPU} -D_GNU_ASSEMBLER_ CFLAGS = -mmcu=${CPU} -O2 -Wall -g #switch the compiler (for the internal make rules) CC = msp430-gcc AS = msp430-gcc OBJECTS = ${CSOURCES:.c=.o} ${ASOURCES:.s43=.o} .PHONY: all FORCE clean download download-jtag download-bsl dist #all should be the first target. it's built when make is run without args all: ${NAME}.elf ${NAME}.lst ${NAME}.hex #additional rules for files ${NAME}.elf: ${OBJECTS} ${CC} -mmcu=${CPU} -o $@ ${OBJECTS} ${NAME}.a43: ${NAME}.elf msp430-objcopy -O ihex $^ $@ ${NAME}.lst: ${NAME}.elf msp430-objdump -dSt $^ >$@ echo >>$@ " " echo >>$@ "----- RAM/Flash Usage -----" msp430-size $^ $(OBJECTS) >>$@ msp430-size $^ $(OBJECTS) ${NAME}.hex: ${NAME}.elf msp430-objcopy -O ihex $^ $@ clean: rm -f ${NAME} ${NAME}.a43 ${NAME}.lst ${OBJECTS} dependencies.d dependencies.d: $(CC) -MM ${CFLAGS} ${CSOURCES} > dependencies.d ifdef {$ASOURCES} $(CC) -MM ${ASFLAGS} ${ASOURCES} >> dependencies.d endif #dummy target as dependecy if something has to be build everytime FORCE: #project dependencies -include dependencies.d Im mul.s43 gibt es eine PUBLIC Funktion, diese wird im main prototypisch mit long mul16(register int x, register int y); aufgenommen. Ist das ok so? Danke im Voraus, Hans
Hi! Der msp-as kennt "PUBLIC" nicht. Es stammt glaub ich von einigen proprietaeren Compilern. Ich glaub, das wird nicht functionieren. Ich würd den Code in der .s43 Datei so umwandeln, dass er konform mit dem Output von `msp430-as -S` ist. Ciao, Veit Wehner
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.