Ignore:
Timestamp:
Jul 24, 2014, 3:19:18 PM (10 years ago)
Author:
cfuguet
Message:

tsar_boot: improving configuration infrastructure

  • Using hard_config.h which respects the same sintax that the hard_config.h file of all TSAR platforms. This file can be then generated by the GIET-VM genmap tool or written manually.
  • All peripheral drivers have been moved to a drivers directory and they are compiled as a static library. This allows GCC to only include in the final .ELF the object files of used peripherals and not all of them.
  • Example hard_config.h and ldscripts have been introduced in the conf directory.
  • Improving comments in all files
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/softs/tsar_boot/Makefile

    r726 r758  
    1 # let the user have a default configuration (ie for PLATFORM_DIR and SOCLIB)
     1# let the user have a default configuration (ie for PLATFORM_DIR)
    22-include ./build.mk
    33
     4USE_DT     ?= 1
     5DTS        ?= platform.dts
     6
    47MAKECMDGOALS ?= none
    5 RAMDISK      ?= 0
    6 SOCLIB       ?= 0
    78
    89ifneq ($(MAKECMDGOALS),$(filter $(MAKECMDGOALS),clean distclean clean-doc doc))
     
    1011    $(error please define PLATFORM_DIR 'make PLATFORM_DIR=foo')
    1112  else
    12     ifeq ($(SOCLIB),1)
    13       ifeq ($(RAMDISK),1)
    14         DEFS+= -DUSE_RDK
    15       else
    16         DEFS+= -DUSE_BDV
    17       endif
    18       DTS=platform_soclib.dts
    19       $(info Make for $(PLATFORM_DIR), SocLib variant)
    20     else
    21       DEFS+= -DUSE_SPI
    22       DTS=platform_fpga.dts
    23       $(info Make for $(PLATFORM_DIR), FPGA variant)
    24     endif
     13    $(info Make for $(PLATFORM_DIR))
    2514  endif
     15endif
     16
     17# Platform clock frequency (in KHz)
     18ifdef SYSTEM_CLK
     19    DEFS   := "-DRESET_SYSTEM_CLK=$(SYSTEM_CLK)"
    2620endif
    2721
     
    3024AS         := mipsel-unknown-elf-as
    3125DU         := mipsel-unknown-elf-objdump
     26AR         := mipsel-unknown-elf-ar
    3227RM         := rm -rf
    3328ECHO       := @echo
     
    3833
    3934BUILD_DIR  := build
    40 SRCS_DIR   := src
    41 INCS_DIR   := include
    4235
    4336# =============================================================================
     
    4538# =============================================================================
    4639
    47 INCLUDE    += -I. -I$(INCS_DIR) -I$(PLATFORM_DIR)
    48 
    49 # =============================================================================
    50 # Paths of sources in another directories
    51 # =============================================================================
    52 
    53 VPATH      += $(SRCS_DIR)
    54 VPATH      += $(PLATFORM_DIR)
     40INCLUDE    += -I. -Iinclude -Idrivers -I$(PLATFORM_DIR)
    5541
    5642# =============================================================================
     
    5844# =============================================================================
    5945
     46VPATH      += src
     47
    6048CFLAGS     := -Wall                \
    6149              -mno-gpopt           \
    6250              -ffreestanding       \
    6351              -fomit-frame-pointer \
    64               -mips32              \
    65               -ggdb                \
    66               -mlong-calls         \
     52              -march=mips32        \
    6753              -O2                  \
    6854              -Werror
    6955
    7056C_SRCS     := reset_elf_loader.c \
     57              reset_utils.c      \
     58              reset_exception.c  \
    7159              reset_ioc.c        \
    72               reset_utils.c      \
    73               reset_tty.c        \
    74               reset_exception.c
    75 
    76 ifeq ($(SOCLIB),0)
    77   C_SRCS   += sdcard.c spi.c
    78 endif
     60              version.c
    7961
    8062S_SRCS     := reset.S
    8163
    82 OBJS       := $(subst .c,.o, $(notdir $(C_SRCS)))
    83 OBJS       += $(subst .S,.o, $(notdir $(S_SRCS)))
    84 OBJS       := $(addprefix $(BUILD_DIR)/, $(OBJS))
     64OBJS       := $(addprefix $(BUILD_DIR)/,\
     65                  $(subst .c,.o, $(notdir $(C_SRCS))) \
     66                  $(subst .S,.o, $(notdir $(S_SRCS))))
    8567
    8668TARGET     := preloader.elf
    8769
    88 USE_DT     ?= 1
     70# =============================================================================
     71# Drivers library
     72# =============================================================================
     73
     74VPATH      += drivers
     75
     76DRV_SRCS   := reset_tty.c        \
     77              reset_inval.c      \
     78              reset_sdc.c        \
     79              reset_bdv.c        \
     80              reset_rdk.c        \
     81              sdcard.c           \
     82              spi.c
     83
     84DRV_OBJS   := $(addprefix $(BUILD_DIR)/,\
     85                  $(subst .c,.o, $(notdir $(DRV_SRCS))))
     86
     87DRV_LIB    := libdrivers.a
     88
     89# =============================================================================
     90# Makefile rules
     91# =============================================================================
     92
     93VPATH      += $(BUILD_DIR)
    8994
    9095all: $(TARGET)
    9196
    92 $(BUILD_DIR)/version.o: $(BUILD_DIR) $(OBJS) VERSION version.sh
    93         $(ECHO) "[version.sh]"
    94         ./version.sh > $(BUILD_DIR)/version.c
    95         $(ECHO) "[   CC    ]     $(BUILD_DIR)/version.c"
    96         $(CC) $(DEFS) $(CFLAGS) $(INCLUDE) -c -o $@ $(BUILD_DIR)/version.c
     97$(BUILD_DIR)/$(DRV_LIB): $(BUILD_DIR) $(DRV_OBJS)
     98        $(ECHO) "[   AR    ]     $(notdir $@)"
     99        $(AR) rcs $@ $(DRV_OBJS)
     100
     101$(BUILD_DIR)/version.o: $(BUILD_DIR)/version.c
     102        $(ECHO) "[   CC    ]     $(notdir $<)"
     103        $(CC) $(DEFS) $(CFLAGS) $(INCLUDE) -c -o $@ $<
    97104        $(DU) -D $@ > $@.txt
    98105
    99 $(TARGET): $(BUILD_DIR) $(BUILD_DIR)/version.o $(OBJS) $(PLATFORM_DIR)/ldscript $(BUILD_DIR)/platform.ld
     106$(BUILD_DIR)/version.c: $(BUILD_DIR) version.sh VERSION
     107        $(ECHO) "[version.sh]"
     108        ./version.sh > $@
     109
     110$(TARGET): $(BUILD_DIR) $(OBJS) $(PLATFORM_DIR)/ldscript $(BUILD_DIR)/platform.ld $(BUILD_DIR)/$(DRV_LIB)
    100111        $(ECHO) "[   LD    ]     $@"
    101         $(LD) -o $@ -T $(PLATFORM_DIR)/ldscript $(OBJS) $(BUILD_DIR)/version.o
     112        $(LD) -o $@ -T $(PLATFORM_DIR)/ldscript $(OBJS) -L$(BUILD_DIR) -ldrivers
    102113        $(DU) -D $@ > $@.txt
    103114
     
    112123endif
    113124
    114 $(BUILD_DIR)/platform.dtb: $(DTS)
     125$(BUILD_DIR)/platform.dtb: $(PLATFORM_DIR)/$(DTS)
    115126        $(ECHO) "[   DTC   ]     $(notdir $<)"
    116127        ${DTC} -O dtb -o $@ $< &> /dev/null
Note: See TracChangeset for help on using the changeset viewer.