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.