source: soft/giet_vm/Makefile @ 365

Last change on this file since 365 was 364, checked in by alain, 10 years ago

Increase the size of the "reserved" section in the disk image
from 256 Kbytes to 1 Mbytes. This section contains the boot record,
and the boot.elf file (starting at lba = 2).

File size: 17.8 KB
RevLine 
[302]1-include build.mk
2
[162]3export # export all variable to sub-Makefile
[232]4CC = mipsel-unknown-elf-gcc
5AS = mipsel-unknown-elf-as
6LD = mipsel-unknown-elf-ld
7DU = mipsel-unknown-elf-objdump
[158]8
[326]9ARCH ?= ../tsar-trunk-svn-2013/platforms/tsar_generic_iob
[364]10X    ?= 2
11Y    ?= 2
12P    ?= 2
[339]13APP  ?= convol
[326]14
15.PHONY: map.bin
16
[258]17### FAT parameters definition for Disk image
18### sector_size          = 512
19### partition_begin_lba  = 300
20### sector_per_cluster   = 8
21### partition sectors    = 524832
[204]22
[258]23### Objects to be linked for kernel.elf
[289]24KERNEL_OBJS  = build/common/utils.o       \
25               build/common/vmem.o        \
[258]26               build/fat32/fat32.o        \
27               build/drivers/dma_driver.o \
[295]28               build/drivers/cma_driver.o \
[258]29               build/drivers/fbf_driver.o \
30               build/drivers/xcu_driver.o \
31               build/drivers/icu_driver.o \
32               build/drivers/ioc_driver.o \
[289]33               build/drivers/bdv_driver.o \
34               build/drivers/hba_driver.o \
35               build/drivers/sdc_driver.o \
36               build/drivers/spi_driver.o \
[295]37               build/drivers/rdk_driver.o \
[258]38               build/drivers/iob_driver.o \
39               build/drivers/mmc_driver.o \
40               build/drivers/mwr_driver.o \
41               build/drivers/nic_driver.o \
42               build/drivers/tim_driver.o \
43               build/drivers/tty_driver.o \
[295]44               build/drivers/pic_driver.o \
[258]45               build/kernel/giet.o        \
46               build/kernel/switch.o      \
47               build/kernel/ctx_handler.o \
48               build/kernel/exc_handler.o \
49               build/kernel/sys_handler.o \
50               build/kernel/irq_handler.o \
51               build/kernel/kernel_init.o
[162]52
[258]53### Objects to be linked for boot.elf
[289]54BOOT_OBJS    = build/common/utils.o       \
55               build/common/vmem.o        \
[258]56               build/fat32/fat32.o        \
[295]57               build/drivers/dma_driver.o \
[258]58               build/drivers/tty_driver.o \
[295]59               build/drivers/pic_driver.o \
[258]60               build/drivers/xcu_driver.o \
61               build/drivers/ioc_driver.o \
[299]62               build/drivers/iob_driver.o \
[289]63               build/drivers/bdv_driver.o \
64               build/drivers/sdc_driver.o \
65               build/drivers/spi_driver.o \
[295]66               build/drivers/rdk_driver.o \
[258]67               build/drivers/mmc_driver.o \
[295]68               build/drivers/mwr_driver.o \
[258]69               build/kernel/ctx_handler.o \
70               build/kernel/switch.o      \
71               build/boot/boot.o
72
73### Objects to be linked for display.elf
[189]74DISPLAY_OBJS = build/display/main.o \
[258]75               build/libs/stdio.o
[162]76
[258]77### Objects to be linked for router.elf
78ROUTER_OBJS  = build/router/main.o        \
79               build/libs/mwmr_channel.o  \
80               build/libs/stdio.o
[162]81
[258]82### Objects to be linked for hello.elf
83HELLO_OBJS   = build/hello/main.o   \
84               build/libs/stdio.o         
[158]85
[258]86### Objects to be linked for pgcd.elf
87PGCD_OBJS    = build/pgcd/main.o          \
88               build/libs/stdio.o
[158]89
[258]90### Objects to be linked for game.elf
91GAMEOFLIFE_OBJS = build/gameoflife/main.o \
92                  build/libs/stdio.o      \
93                  build/libs/barrier.o
[251]94
[258]95### Objects to be linked for dhrystone.elf
[241]96DHRYSTONE_OBJS = build/dhrystone/dhry_1.o \
97                 build/dhrystone/dhry_2.o \
[272]98                 build/libs/stdlib.o      \
[258]99                 build/libs/stdio.o       \
100                 build/libs/string.o      \
101                 build/libs/spin_lock.o   \
[241]102                 build/libs/malloc.o
103
[258]104### Objects to be linked for sort.elf
105SORT_OBJS   = build/sort/main.o        \
106              build/libs/stdio.o       \
107              build/libs/spin_lock.o   \
108              build/libs/barrier.o
[241]109
[295]110### Objects to be linked for transpose.elf
111TRANSPOSE_OBJS = build/transpose/main.o  \
112                 build/libs/stdio.o      \
113                 build/libs/barrier.o
[258]114
[339]115### Objects to be linked for convol.elf
116CONVOL_OBJS  = build/convol/main.o   \
117               build/libs/stdio.o    \
[356]118               build/libs/stdlib.o    \
[339]119               build/libs/barrier.o
120
[364]121CFLAGS = -Wall -ffreestanding -mno-gpopt -mips32 -g -O2
[158]122
[258]123GIET_INCLUDE = -Igiet_boot    \
124               -Igiet_kernel  \
125               -Igiet_xml     \
126               -Igiet_fat32   \
127               -Igiet_drivers \
128               -Igiet_common  \
129               -Igiet_libs    \
130               -I.
[158]131
[258]132USER_INCLUDE = -Igiet_libs    \
133               -Igiet_xml     \
134               -I.
[160]135
[302]136DISK_IMAGE  := hdd/virt_hdd.dmg
137
[326]138all: map.bin                         \
139     hard_config.h                   \
140     giet_vsegs.ld                   \
[258]141     build/boot/boot.elf             \
142     build/kernel/kernel.elf         \
143     build/display/display.elf       \
144     build/hello/hello.elf           \
145     build/pgcd/pgcd.elf             \
[302]146     build/router/router.elf         \
[258]147     build/dhrystone/dhrystone.elf   \
148     build/gameoflife/gameoflife.elf \
149     build/sort/sort.elf             \
[295]150     build/transpose/transpose.elf   \
[339]151     build/convol/convol.elf         \
[326]152     $(DISK_IMAGE)                   
[302]153         
[364]154### Copy always all files into disk image
[304]155        mcopy -o -i $(DISK_IMAGE) build/kernel/kernel.elf ::/build/kernel
156        mcopy -o -i $(DISK_IMAGE) build/display/display.elf ::/build/display
157        mcopy -o -i $(DISK_IMAGE) build/sort/sort.elf ::/build/sort
158        mcopy -o -i $(DISK_IMAGE) build/transpose/transpose.elf ::/build/transpose
[339]159        mcopy -o -i $(DISK_IMAGE) build/convol/convol.elf ::/build/convol
[304]160        mcopy -o -i $(DISK_IMAGE) build/hello/hello.elf ::/build/hello
161        mcopy -o -i $(DISK_IMAGE) build/pgcd/pgcd.elf ::/build/pgcd
162        mcopy -o -i $(DISK_IMAGE) build/router/router.elf ::/build/router
163        mcopy -o -i $(DISK_IMAGE) build/gameoflife/gameoflife.elf ::/build/gameoflife
164        mcopy -o -i $(DISK_IMAGE) build/dhrystone/dhrystone.elf ::/build/dhrystone
[314]165        mcopy -o -i $(DISK_IMAGE) transpose/images.raw ::/misc
[339]166        mcopy -o -i $(DISK_IMAGE) convol/philips_image.raw ::/misc
[304]167        mcopy -o -i $(DISK_IMAGE) map.bin ::/
[364]168### Copy bootloader into sector 2 of disk image
[302]169        dd if=build/boot/boot.elf of=$(DISK_IMAGE) seek=2 conv=notrunc
[364]170### Checking root directory
171        mdir -i $(DISK_IMAGE) ::/
[160]172
[364]173### Disk image generation (no files in this step)
[272]174### This requires the generic LINUX/MacOS script "create_dmg" script
[258]175### written by C.Fuguet. (should be installed in GIET-VM root directory).
[302]176$(DISK_IMAGE):
177        ./create_dmg create $(basename $(DISK_IMAGE))
[304]178        mmd -o -i $(DISK_IMAGE) ::/build
179        mmd -o -i $(DISK_IMAGE) ::/build/kernel
180        mmd -o -i $(DISK_IMAGE) ::/build/display
181        mmd -o -i $(DISK_IMAGE) ::/build/sort 
182        mmd -o -i $(DISK_IMAGE) ::/build/transpose
[339]183        mmd -o -i $(DISK_IMAGE) ::/build/convol
[304]184        mmd -o -i $(DISK_IMAGE) ::/build/hello
185        mmd -o -i $(DISK_IMAGE) ::/build/pgcd 
186        mmd -o -i $(DISK_IMAGE) ::/build/router
187        mmd -o -i $(DISK_IMAGE) ::/build/gameoflife
188        mmd -o -i $(DISK_IMAGE) ::/build/dhrystone
189        mmd -o -i $(DISK_IMAGE) ::/misc
190        dd if=$(DISK_IMAGE) of=temp.dmg count=65536
191        mv temp.dmg $(DISK_IMAGE)
[295]192
[326]193### mapping generation: map.bin / map.xml / hard_config.h / giet_vsegs.ld
[339]194map.bin hard_config.h giet_vsegs.ld: $(ARCH)/arch.py  $(APP)/$(APP).py
[327]195        giet_python/genmap --arch=$(ARCH) --x=$(X) --y=$(Y) --p=$(P) --giet=. --$(APP) --xml=.
[158]196
[258]197### drivers compilation
[295]198build/drivers/cma_driver.o: giet_drivers/cma_driver.c  \
199                            giet_drivers/cma_driver.h  \
[326]200                            hard_config.h              \
201                            giet_config.h
[295]202        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
203
[258]204build/drivers/dma_driver.o: giet_drivers/dma_driver.c  \
205                            giet_drivers/dma_driver.h  \
[326]206                            hard_config.h              \
207                            giet_config.h
[258]208        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]209
[258]210build/drivers/fbf_driver.o: giet_drivers/fbf_driver.c  \
211                            giet_drivers/fbf_driver.h  \
[326]212                            hard_config.h              \
213                            giet_config.h
[258]214        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]215
[258]216build/drivers/xcu_driver.o: giet_drivers/xcu_driver.c  \
217                            giet_drivers/xcu_driver.h  \
[326]218                            hard_config.h              \
219                            giet_config.h
[258]220        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]221
[258]222build/drivers/icu_driver.o: giet_drivers/icu_driver.c  \
223                            giet_drivers/icu_driver.h  \
[326]224                            hard_config.h              \
225                            giet_config.h
[258]226        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
227
228build/drivers/ioc_driver.o: giet_drivers/ioc_driver.c  \
229                            giet_drivers/ioc_driver.h  \
[326]230                            hard_config.h              \
231                            giet_config.h
[258]232        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
233
[289]234build/drivers/bdv_driver.o: giet_drivers/bdv_driver.c  \
235                            giet_drivers/bdv_driver.h  \
[326]236                            hard_config.h              \
237                            giet_config.h
[289]238        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
239
240build/drivers/hba_driver.o: giet_drivers/hba_driver.c  \
241                            giet_drivers/hba_driver.h  \
[326]242                            hard_config.h              \
243                            giet_config.h
[289]244        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
245
246build/drivers/sdc_driver.o: giet_drivers/sdc_driver.c  \
247                            giet_drivers/sdc_driver.h  \
[326]248                            hard_config.h              \
249                            giet_config.h
[289]250        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
251
252build/drivers/spi_driver.o: giet_drivers/spi_driver.c  \
253                            giet_drivers/spi_driver.h  \
[326]254                            hard_config.h              \
255                            giet_config.h
[289]256        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
257
[295]258build/drivers/rdk_driver.o: giet_drivers/rdk_driver.c  \
259                            giet_drivers/rdk_driver.h  \
[326]260                            hard_config.h              \
261                            giet_config.h
[295]262        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
263
[258]264build/drivers/iob_driver.o: giet_drivers/iob_driver.c  \
265                            giet_drivers/iob_driver.h  \
[326]266                            hard_config.h              \
267                            giet_config.h
[258]268        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
269
270build/drivers/mmc_driver.o: giet_drivers/mmc_driver.c  \
271                            giet_drivers/mmc_driver.h  \
[326]272                            hard_config.h              \
273                            giet_config.h
[258]274        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
275
276build/drivers/mwr_driver.o: giet_drivers/mwr_driver.c  \
277                            giet_drivers/mwr_driver.h  \
[326]278                            hard_config.h              \
279                            giet_config.h
[258]280        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
281
282build/drivers/nic_driver.o: giet_drivers/nic_driver.c  \
283                            giet_drivers/nic_driver.h  \
[326]284                            hard_config.h              \
285                            giet_config.h
[258]286        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
287
288build/drivers/tim_driver.o: giet_drivers/tim_driver.c  \
289                            giet_drivers/tim_driver.h  \
[326]290                            hard_config.h              \
291                            giet_config.h
[258]292        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
293
294build/drivers/tty_driver.o: giet_drivers/tty_driver.c  \
295                            giet_drivers/tty_driver.h  \
[326]296                            hard_config.h              \
297                            giet_config.h
[258]298        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
299
[295]300build/drivers/pic_driver.o: giet_drivers/pic_driver.c  \
301                            giet_drivers/pic_driver.h  \
[326]302                            hard_config.h              \
303                            giet_config.h
[295]304        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
305
[258]306### fat32 compilation
307build/fat32/fat32.o: giet_fat32/fat32.c \
308                     giet_fat32/fat32.h \
[326]309                     hard_config.h      \
310                     giet_config.h
[258]311        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
312
313### utils compilation
314build/common/utils.o: giet_common/utils.c \
315                      giet_common/utils.h \
[326]316                      hard_config.h       \
317                      giet_config.h
[258]318        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
319
320### vmem compilation
321build/common/vmem.o: giet_common/vmem.c \
322                     giet_common/vmem.h \
[326]323                     hard_config.h      \
324                     giet_config.h
[258]325        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
326
[177]327### boot compilation
[326]328build/boot/boot.elf: $(BOOT_OBJS)            \
329                     giet_boot/boot.ld
[258]330        $(LD) -o $@ -T giet_boot/boot.ld $(BOOT_OBJS) 
[189]331        $(DU) -D $@ > $@.txt
[158]332
[258]333build/boot/boot.o: giet_boot/boot.c          \
334                   giet_common/utils.h       \
335                   giet_fat32/fat32.h        \
[289]336                   giet_common/vmem.h        \
[258]337                   giet_drivers/tty_driver.h \
338                   giet_drivers/ioc_driver.h \
[326]339                   hard_config.h             \
340                   giet_config.h             
[258]341        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]342
[258]343### kernel compilation
[326]344build/kernel/kernel.elf: $(KERNEL_OBJS)        \
345                         giet_kernel/kernel.ld
[258]346        $(LD) -o $@ -T giet_kernel/kernel.ld $(KERNEL_OBJS)
347        $(DU) -D $@ > $@.txt
[158]348
[326]349build/kernel/%.o: giet_kernel/%.c    \
350                  hard_config.h      \
351                  giet_config.h 
[258]352        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
353
[326]354build/kernel/%.o: giet_kernel/%.s    \
355                  hard_config.h      \
356                  giet_config.h
[258]357        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
358
359
360
361
362### libs compilation
363build/libs/stdio.o: giet_libs/stdio.c \
364                    giet_libs/stdio.h \
[326]365                    hard_config.h     \
[258]366                    giet_config.h 
367        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
368
369build/libs/mwmr_channel.o: giet_libs/mwmr_channel.c \
370                           giet_libs/mwmr_channel.h \
[326]371                           hard_config.h            \
[258]372                           giet_config.h
373        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
374
375build/libs/malloc.o: giet_libs/malloc.c         \
376                     giet_libs/malloc.h         \
377                     giet_libs/malloc_private.h \
[326]378                     hard_config.h              \
[258]379                     giet_config.h
380        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
381
382build/libs/barrier.o: giet_libs/barrier.c \
383                      giet_libs/barrier.h \
[326]384                      hard_config.h       \
[258]385                      giet_config.h
386        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
387
[259]388build/libs/stdlib.o: giet_libs/stdlib.c \
389                     giet_libs/stdlib.h \
[326]390                     hard_config.h      \
[259]391                     giet_config.h
392        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
393
[258]394build/libs/string.o: giet_libs/string.c \
395                     giet_libs/string.h \
[326]396                     hard_config.h      \
[258]397                     giet_config.h
398        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
399
400build/libs/spin_lock.o: giet_libs/spin_lock.c \
401                        giet_libs/spin_lock.h \
[326]402                        hard_config.h         \
[258]403                        giet_config.h
404        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
405
406
[189]407### display compilation
[339]408build/display/display.elf: $(DISPLAY_OBJS) display/display.ld hard_config.h
[189]409        $(LD) -o $@ -T display/display.ld $(DISPLAY_OBJS)
410        $(DU) -D $@ > $@.txt
[158]411
[258]412build/display/main.o: display/main_cma.c
413        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[189]414
415### router compilation
[339]416build/router/router.elf: $(ROUTER_OBJS) router/router.ld hard_config.h
[189]417        $(LD) -o $@ -T router/router.ld $(ROUTER_OBJS)
418        $(DU) -D $@ > $@.txt
419
420build/router/main.o: router/main.c
[258]421        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[189]422
423### hello compilation
[339]424build/hello/hello.elf: $(HELLO_OBJS) hello/hello.ld hard_config.h
[189]425        $(LD) -o $@ -T hello/hello.ld $(HELLO_OBJS)
426        $(DU) -D $@ > $@.txt
427
428build/hello/main.o: hello/main.c
[258]429        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
[189]430
431### pgcd compilation
[339]432build/pgcd/pgcd.elf: $(PGCD_OBJS) pgcd/pgcd.ld hard_config.h
[189]433        $(LD) -o $@ -T pgcd/pgcd.ld $(PGCD_OBJS)
434        $(DU) -D $@ > $@.txt
435
436build/pgcd/main.o: pgcd/main.c
[258]437        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
[189]438
[251]439### gameoflife compilation
440build/gameoflife/gameoflife.elf: $(GAMEOFLIFE_OBJS) gameoflife/gameoflife.ld
441        $(LD) -o $@ -T gameoflife/gameoflife.ld $(GAMEOFLIFE_OBJS)
442        $(DU) -D $@ > $@.txt
443
444build/gameoflife/main.o: gameoflife/main.c
[258]445        $(CC) $(USER_INCLUDE) $(CFLAGS) -O3 -c -o $@ $<
[251]446
[241]447### dhrystone compilation
[339]448build/dhrystone/dhrystone.elf: $(DHRYSTONE_OBJS) dhrystone/dhrystone.ld hard_config.h
[241]449        $(LD) -o $@ -T dhrystone/dhrystone.ld $(DHRYSTONE_OBJS)
450        $(DU) -D $@ > $@.txt
451
452build/dhrystone/dhry_1.o: dhrystone/dhry_1.c
[258]453        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[241]454
455build/dhrystone/dhry_2.o: dhrystone/dhry_2.c
[258]456        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[241]457
[256]458### sort compilation
[339]459build/sort/sort.elf: $(SORT_OBJS) sort/sort.ld hard_config.h
[256]460        $(LD) -o $@ -T sort/sort.ld $(SORT_OBJS)
461        $(DU) -D $@ > $@.txt
462
463build/sort/main.o: sort/main.c
[258]464        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
[256]465
[295]466### transpose compilation
[339]467build/transpose/transpose.elf: $(TRANSPOSE_OBJS) transpose/transpose.ld hard_config.h
[295]468        $(LD) -o $@ -T transpose/transpose.ld $(TRANSPOSE_OBJS)
469        $(DU) -D $@ > $@.txt
470
471build/transpose/main.o: transpose/main.c
472        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
473
[339]474### convol compilation
475build/convol/convol.elf: $(CONVOL_OBJS) convol/convol.ld hard_config.h
476        $(LD) -o $@ -T convol/convol.ld $(CONVOL_OBJS)
477        $(DU) -D $@ > $@.txt
478
479build/convol/main.o: convol/main.c
[364]480        $(CC) $(USER_INCLUDE) $(CFLAGS) -O0 -c -o $@ $<
[339]481
[177]482### clean
[158]483clean:
[326]484        rm -f *.o *.elf *.bin *.txt core 
485        rm -f hard_config.h giet_vsegs.ld map.bin map.xml
[232]486        rm -rf build/boot/*
[258]487        rm -rf build/fat32/*
488        rm -rf build/common/*
489        rm -rf build/drivers/*
490        rm -rf build/kernel/*
491        rm -rf build/reset/*
[232]492        rm -rf build/libs/*
493        rm -rf build/pgcd/*
494        rm -rf build/hello/*
495        rm -rf build/display/*
496        rm -rf build/router/*
[251]497        rm -rf build/gameoflife/*
[241]498        rm -rf build/dhrystone/*
[258]499        rm -rf build/sort/*
[295]500        rm -rf build/transpose/*
[339]501        rm -rf build/convol/*
[258]502        rm -rf hdd/virt_hdd.dmg
Note: See TracBrowser for help on using the repository browser.