Bonjour,
Je suis en train de développer sur plateforme embarquée et j'ai repris la bibliothèque Procyon ARMLIB.
Le makefile fournit avec les exemples fonctionne bien (modulo des problèmes de script pour le linker mais ce n'est pas le problème pour le moment).
Mon souci est que j'ai besoin d'apporter quelques modifications à au code car je ne peux pas utiliser directement ARMLIB. Or le makefile modifié (et presque identique à l'original) ne fonctionne pas.
Voici ce que j'obtiens :
Le makefile appelé est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 user@clevo:~/Projects/eclipse/workspace/test-serial/apps$ make make -C usart_example make[1]: Entering directory `/home/user/Projects/eclipse/workspace/test-serial/apps/usart_example' make[1]: *** No rule to make target `main.bin', needed by `all'. Stop. make[1]: Leaving directory `/home/user/Projects/eclipse/workspace/test-serial/apps/usart_example' make: *** [usart_example] Error 2
Le makefile qui se trouve dans le répertoire "usart_example" est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 ###### Define directories to build ###### SUBDIRS = usart_example \ #SUBDIRS = $(dir ./*) ###### Define build rules ###### .PHONY: apps $(SUBDIRS) apps: $(SUBDIRS) $(SUBDIRS): $(MAKE) -C $@ $(MAKECMDGOALS) .PHONY : all all : apps .PHONY : clean clean : apps rm -vf $(addsuffix /GCCProject.ncb, $(SUBDIRS)) rm -vf $(addsuffix /GCCProject.opt, $(SUBDIRS)) rm -vf $(addsuffix /GCCProject.plg, $(SUBDIRS)) rm -vf ../*.lst rm -vf ../arch/at91/*.lst
Si quelqu'un a une idée sur ce qui pose problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128 # Makefile for ARM # Pascal Stang ########### change this lines according to your project ################## #put the name of the target mcu architecture here (arm7tdmi, etc) CPU = arm7tdmi #put the name of the target file here (without extension) TRG = main #put your C sourcefiles here ARMLIB = ../.. ARCH = at91 ARMLIB_ARCH_SRC = board_lowlevel.c board_memories.c board_powermode.c ARMLIB_SRC = SRC = $(TRG).c #put additional assembler source file here ASRC = $(ARMLIB)/arch/$(ARCH)/board_cstartup.S #additional libraries and object files to link LIB = #additional includes to compile INC = #assembler flags ASFLAGS = -Wa, -gstabs #compiler flags CPFLAGS = -g -O1 -Wall -Wstrict-prototypes -I$(ARMLIB) -I$(ARMLIB)/arch/$(ARCH) -I$(ARMLIB)/arch/$(ARCH)/include -I$(ARMLIB)/peripherals -I/usr/lib/gcc/arm-linux-gnueabi/4.4.5/include -Wa,-ahlms=$(<:.c=.lst) #linker flags LDFLAGS = -T$(ARMLIB)/arch/$(ARCH)/boot/at91sam7se512-rom.ld -lm -nostartfiles -Wl,-Map=$(TRG).map,--cref,-nostdlib ########### you should not need to change the following line ############# #include $(ARMLIB)/make/armproj_make ###### BLOCK 1) define some variables based on the toolchain to be used ####### CC = arm-linux-gnueabi-gcc AS = arm-linux-gnueabi-gcc -x assembler-with-cpp LD = arm-linux-gnueabi-gcc RM = rm -f RN = mv CP = cp BIN = arm-linux-gnueabi-objcopy SIZE = arm-linux-gnueabi-size INCDIR = . SHELL = /bin/sh ###### BLOCK 2) output format can be srec, ihex (bin is always created) ####### FORMAT = ihex ###### BLOCK 3) define all project specific object files ###### ARMLIB_ARCH = $(ARMLIB)/arch/$(arch) SRC += $(addprefix $(ARMLIB)/,$(ARMLIB_SRC)) SRC += $(addprefix $(ARMLIB)/arch/$(ARCH)/,$(ARMLIB_ARCH_SRC)) OBJ = $(ASRC:.s=.o) $(SRC:.c=.o) CPFLAGS += -mcpu=$(CPU) ASFLAGS += -mcpu=$(CPU) # LDFLAGS += -mcpu=$(CPU) ###### BLOCK 4) this defines the aims of the make process ###### #all: $(TRG).obj $(TRG).elf $(TRG).hex $(TRG).cof $(TRG).eep $(TRG).ok all: $(TRG).bin $(TRG).elf $(TRG).hex $(TRG).ok ###### BLOCK 5) compile: instructions to create assembler and/or object files from C source ###### %.o : %.c $(CC) -c $(CPFLAGS) -I$(INCDIR) $< -o $@ %.s : %.c $(CC) -S $(CPFLAGS) -I$(INCDIR) $< -o $@ ###### BLOCK 6) assemble: instructions to create object file from assembler files ###### %.o : %.s $(AS) -c $(ASFLAGS) -I$(INCDIR) $< -o $@ ###### BLOCK 7) link: instructions to create elf output file from object files ###### %.elf: $(OBJ) $(LD) $(OBJ) $(LIB) $(LDFLAGS) -o $@ # $(CC) $(OBJ) $(LIB) $(LDFLAGS) -o $@ ###### BLOCK 8) create binary file from elf output file ###### %.bin: %.elf $(BIN) -O binary $< $@ ###### BLOCK 9) create hex file from elf output file ###### %.hex: %.elf $(BIN) -O $(FORMAT) $< $@ ###### BLOCK 10) If all other steps compile ok then echo "Errors: none" ###### %ok: $(SIZE) $(TRG).elf @echo "Errors: none" ###### BLOCK 11) make instruction to delete created files ###### clean: $(RM) $(OBJ) $(RM) $(SRC:.c=.s) $(RM) $(SRC:.c=.lst) $(RM) $(TRG).map $(RM) $(TRG).elf $(RM) $(TRG).obj $(RM) $(TRG).hex $(RM) $(TRG).bin $(RM) $(TRG).hex @echo "Errors: none" size: $(SIZE) $(TRG).elf ###### dependecies, add any dependencies you need here ################### $(TRG).o : $(TRG).c makefile conf/board.h
Merci d'avance
Partager