📄 makefile
字号:
## Makefile for Boot Loader## About configuration file# make : use .config. if it doesn't exist, copy it from config-default# make CONFIG=xxx : use specified configuration file.# For more information on the configurations, read the README file#MAJORVERSION = 0MINORVERSION = 12PATCHLEVEL = 17ifdef CONFIGRTCONFIG = $(CONFIG)include $(CONFIG)elseRTCONFIG = .configifeq (.config, $(wildcard .config))include .configendifendififndef RUA_DIRRUA_DIR := ../..endififndef CRYPTODIRCRYPTODIR = ./cryptoendifCRYPTODIR_STAGE1= $(CRYPTODIR)/stage1CRYPTODIR_STAGE0= $(CRYPTODIR)/stage0ifeq ($(ENABLE_CRYPTO), y)ifndef ID$(error No key set ID defined, abort)endifCRYPTO = $(shell find $(CRYPTODIR_STAGE1) -maxdepth 0 -type d)ifneq ($(findstring $(CRYPTODIR_STAGE1), $(CRYPTO)), $(CRYPTODIR_STAGE1))$(error Crypto library not available, check your configuration file ($(RTCONFIG)))endifendififeq ($(ENABLE_CRYPTO_FULL), y)ifneq ($(ENABLE_CRYPTO), y)$(error Enable crypto to get full crypto support)endifCRYPTO = $(shell find $(CRYPTODIR_STAGE0)/src/ -maxdepth 0 -type d)ifneq ($(findstring $(CRYPTODIR_STAGE0)/src/, $(CRYPTO)), $(CRYPTODIR_STAGE0)/src/)$(error Crypto library not available, check your configuration file ($(RTCONFIG)))endifendififeq ($(findstring -DWITH_XIP=1, $(RMCFLAGS)), -DWITH_XIP=1)RMCFLAGS := $(filter-out -DWITH_XIP=1, $(RMCFLAGS))export RMCFLAGS$(warning XIP flag is set, turn it off, now : $(RMCFLAGS))endif# Configuration adjustmentifeq ($(RELEASE), y)ENABLE_FULLFUNCTION = nENABLE_SFLASH = nENABLE_FLASH = nENABLE_IDE = nENABLE_PCI = nENABLE_NETWORK = nendififeq ($(ENABLE_SFLASH), n)ENABLE_SFLASH_ST_M25 = nENABLE_SFLASH_ST_M95 = nENABLE_SFLASH_SST = nendififeq ($(ENABLE_IDE), n)ENABLE_IDE_ISA = nENABLE_IDE_BM = nendififeq ($(ENABLE_PCI), n)ENABLE_PCIHOST_EM86XX = nENABLE_PCIHOST_FPGA = nENABLE_NETWORK_NE2KPCI = nENABLE_NETWORK_RTL81XX = nendififeq ($(ENABLE_NETWORK), n)ENABLE_NETWORK_DNS = nENABLE_NETWORK_NE2KPCI = nENABLE_NETWORK_RTL81XX = nENABLE_NETWORK_TANGO15 = nendififneq ($(EM86XX_ARCH), TANGO15)ENABLE_NETWORK_TANGO15 = nendififeq ($(PRODUCTIONTEST), y)DRAMADJUSTMENT = nDEBUG_DRAMADJUSTMENT = nendif# Build toolsCROSS_COMPILE = arm-elf-CPP = cppAS = $(CROSS_COMPILE)asCC = $(CROSS_COMPILE)gccLD = $(CROSS_COMPILE)ldOBJCOPY = $(CROSS_COMPILE)objcopyOBJDUMP = $(CROSS_COMPILE)objdumpNM = $(CROSS_COMPILE)nm# Compiler optionsCFLAGS = -O2 -fomit-frame-pointer -fno-builtin -nostdinc -nostdlib -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -DBOOTLOADER #CFLAGS += -DENABLE_FIQ_TESTifneq ($(RMCFLAGS),)CFLAGS+=$(RMCFLAGS)endifCPPFLAGS = ifeq ($(DEBUG), y)CFLAGS += -DDEBUGCPPFLAGS += -DDEBUGendififeq ($(DEBUG_DRAMADJUSTMENT), y)CFLAGS += -DDEBUG_DRAMADJUSTMENTendififeq '$(ENABLE_DVI)' 'y'CFLAGS += -I$(RUA_DIR)endififeq ($(ENABLE_CRYPTO),y)CFLAGS += -I$(CRYPTODIR_STAGE1)/include -I$(RUA_DIR)/emhwlib_hal/include -I$(RUA_DIR)/emhwlib_hal/includeCPPFLAGS += -I$(CRYPTODIR_STAGE1)/include -I. -I$(RUA_DIR)/emhwlib_hal/include -I$(RUA_DIR)/emhwlib_hal/include ifneq ($(ENABLE_CRYPTO_FULL),y)TARGET += loader-sflash-secure-kernel.bin loader-flash-secure-kernel.binendifendif# Target filesifeq ($(PRODUCTIONTEST), y)TARGET += loader-sflash-test.bin loader-flash-test.binelseTARGET += loader-sflash.bin loader-flash.bin loader-sflash-min.binendififeq ($(ENABLE_CRYPTO_FULL), y)TARGET += loader-flash-secure-boot1.binUCODE = $(shell cd $(CRYPTODIR_STAGE0) && find . -maxdepth 1 -name "ucode*.bin")ifeq ($(findstring $(UCODE), ./ucode_sflash.bin), ./ucode_sflash.bin)TARGET += loader-sflash-secure-boot0.binelseifeq ($(findstring $(UCODE), ./ucode_pflash.bin), ./ucode_pflash.bin)TARGET += loader-flash-secure-boot0.binelse$(error Cannot find a suitable microcode for full crypto support)endifendifendif# Object filesOBJS-y = main.o uart.o util.o vsprintf.o em86xxapi.o romfs.o kunzip.o inflate.o boot.o board/board-init.oifeq ($(RELEASE), n)OBJS-y += bootmenu.o uucodec.o timer.o bootconfig.oendififeq ($(EM86XX_ARCH), TANGO15)OBJS-y += i2c_hw.oendifOBJS-$(ENABLE_SFLASH) += sflash.o OBJS-$(ENABLE_SFLASH_ST_M25) += sflash-st-m25.oOBJS-$(ENABLE_SFLASH_ST_M95) += sflash-st-m95.oOBJS-$(ENABLE_SFLASH_SST) += sflash-sst.oOBJS-$(ENABLE_FLASH) += flash.oOBJS-$(ENABLE_IDE) += ide.o atapi.o bootcd.oOBJS-$(ENABLE_PCI) += pcicommon.oifeq ($(ENABLE_PCI), y) OBJS-$(ENABLE_PCIHOST_EM86XX) += pciem86xx.o OBJS-$(ENABLE_PCIHOST_FPGA) += pcifpga.oendifOBJS-$(ENABLE_NETWORK) += net.o net_ipv4.o net_ipv4_bootp.o net_ipv4_tftp.oOBJS-$(ENABLE_CRYPTO) += $(CRYPTODIR_STAGE1)/cryptolib.oOBJS-$(ENABLE_NETWORK_DNS) += net_ipv4_dns.oOBJS-$(ENABLE_NETWORK_NE2KPCI) += ne2kpci.oOBJS-$(ENABLE_NETWORK_RTL81XX) += rtl81xx.oOBJS-$(ENABLE_NETWORK_TANGO15) += em86xx_eth.oifeq ($(PRODUCTIONTEST), y)OBJS-y += test-stage1.o board/test-stage1.oendifOBJS-$(ENABLE_DVI) += $(RUA_DIR)/emhwlib_hal/i2c/src/i2c_hal.oDEVZERO := $(wildcard /dev/zero)ifndef DEVZERO error: @echo "You need to create a /dev/zero device - mknod -m 666 /dev/zero c 1 5"; @exit 1;endif ifneq ($(PRODUCTIONTEST), y)ifeq ($(ENABLE_FLASH), y)ifeq ($(ENABLE_2NDBOOT), y)TARGET += loader-flash-stage2.binendifendifendififeq ($(ENABLE_FIP), y)OBJS-y += fipkernel.oendifall: $(RTCONFIG) checkboard version.h loader.bin $(TARGET) checkbin# Check that the CONFIG is defined correctly (or .config exist)$(RTCONFIG) : $(error Please use the appropriate configuration file to compile the kernel: make CONFIG=config-yourconfig)checkboard : @rm -f board @ln -sf board-${BOARD} board# automatically generated fileversion.h : $(RTCONFIG) Makefile @echo "/*" > $@ @echo " * Boot Loader Version" >> $@ @echo " *" >> $@ @echo " * This file is automatically generated from Makefile" >> $@ @echo " */" >> $@ @echo "" >> $@ @echo "#ifndef __BOOTLOADER_VERSION_H" >> $@ @echo "#define __BOOTLOADER_VERSION_H" >> $@ @echo "" >> $@ @echo "#define BOOTLOADER_MAJORVERSION $(MAJORVERSION)" >> $@ @echo "#define BOOTLOADER_MINORVERSION $(MINORVERSION)" >> $@ @echo "#define BOOTLOADER_PATCHLEVEL $(PATCHLEVEL)" >> $@ @echo "" >> $@ @echo "#define MAKE_VERSION(a, b, c) (((a) << 16) | ((b) << 8) | (c))" >> $@ @echo "#define BOOTLOADER_VERSION MAKE_VERSION($(MAJORVERSION), $(MINORVERSION), $(PATCHLEVEL))" >> $@ @echo "#define BOOTLOADER_VERSIONSTR \"$(MAJORVERSION).$(MINORVERSION).$(PATCHLEVEL)\"" >> $@ @echo "" >> $@ifeq ($(RELEASE), n) @echo "#define CONFIG_DEVEL" >> $@else @echo "#define CONFIG_RELEASE" >> $@endif @echo "" >> $@ifeq ($(ENABLE_FULLFUNCTION), y) @echo "#define CONFIG_ENABLE_FULLFUNCTION" >> $@endififeq ($(ENABLE_SFLASH), y) @echo "#define CONFIG_ENABLE_SFLASH" >> $@ifeq ($(ENABLE_SFLASH_ST_M25), y) @echo "#define CONFIG_ENABLE_SFLASH_ST_M25" >> $@endififeq ($(ENABLE_SFLASH_ST_M95), y) @echo "#define CONFIG_ENABLE_SFLASH_ST_M95" >> $@endififeq ($(ENABLE_SFLASH_SST), y) @echo "#define CONFIG_ENABLE_SFLASH_SST" >> $@endifendififeq ($(ENABLE_FLASH), y) @echo "#define CONFIG_ENABLE_FLASH" >> $@ @echo "#define MAX_ROMFS_SIZE $(MAX_ROMFS_SIZE)" >> $@else @echo "#define MAX_ROMFS_SIZE 0" >> $@endififeq ($(ENABLE_2NDBOOT), y) @echo "#define CONFIG_ENABLE_2NDBOOT" >> $@ @echo "#define STAGE2_IMAGE_SIZE $(STAGE2_IMAGE_SIZE)" >> $@ifeq ($(BOOT_2NDBOOT), y) @echo "#define BOOT_2NDBOOT" >> $@endifendififeq ($(ENABLE_FIP), y) @echo "#define CONFIG_ENABLE_FIP" >> $@ @echo "#define CONFIG_EM86XX_FIP_$(EM86XX_FIP)" >> $@endififeq ($(ENABLE_IDE), y) @echo "#define CONFIG_ENABLE_IDE" >> $@endififeq ($(ENABLE_IDE_ISA), y) @echo "#define CONFIG_ENABLE_IDE_ISA" >> $@endififeq ($(ENABLE_IDE_BM), y) @echo "#define CONFIG_ENABLE_IDE_BM" >> $@endififeq ($(ENABLE_PCI), y) @echo "#define CONFIG_ENABLE_PCI" >> $@ifeq ($(ENABLE_PCIHOST_EM86XX), y) @echo "#define CONFIG_ENABLE_PCIHOST_EM86XX" >> $@endififeq ($(ENABLE_PCIHOST_FPGA), y) @echo "#define CONFIG_ENABLE_PCIHOST_PCIFPGA" >> $@endifendififeq ($(ENABLE_CRYPTO), y) @echo "#define CONFIG_ENABLE_CRYPTO" >> $@endififeq ($(ENABLE_CRYPTO_FULL), y) @echo "#define CONFIG_ENABLE_CRYPTO_FULL" >> $@ @echo "#define STAGE0_CRYPTO_IMAGE_SIZE $(STAGE0_CRYPTO_IMAGE_SIZE)" >> $@endififeq ($(ENABLE_NETWORK), y) @echo "#define CONFIG_ENABLE_NETWORK" >> $@ifeq ($(ENABLE_NETWORK_DNS), y) @echo "#define CONFIG_ENABLE_NETWORK_DNS" >> $@endififeq ($(ENABLE_NETWORK_NE2KPCI), y) @echo "#define CONFIG_ENABLE_NETWORK_NE2KPCI" >> $@endififeq ($(ENABLE_NETWORK_RTL81XX), y) @echo "#define CONFIG_ENABLE_NETWORK_RTL81XX" >> $@endififeq ($(ENABLE_NETWORK_TANGO15), y) @echo "#define CONFIG_ENABLE_NETWORK_TANGO15" >> $@endifendififeq ($(DISABLE_HELP_MSGS), y) @echo "#define CONFIG_DISABLE_HELP_MSGS" >> $@endififeq ($(ENABLE_IRQHANDLER), y) @echo "#define CONFIG_ENABLE_IRQHANDLER" >> $@ @echo "#define CONFIG_SD_PRESERVE_FIQ" >> $@endififeq ($(ENABLE_BITMAPS), y) @echo "#define CONFIG_ENABLE_BITMAPS" >> $@endififeq ($(ENABLE_UCODES), y) @echo "#define CONFIG_ENABLE_UCODES" >> $@endififeq ($(ENABLE_USERPREF), y) @echo "#define CONFIG_ENABLE_USERPREF" >> $@endififeq ($(ENABLE_VSYNCPARAM), y) @echo "#define CONFIG_ENABLE_VSYNCPARAM" >> $@endififeq ($(ENABLE_DVI), y) @echo "#define CONFIG_ENABLE_DVI" >> $@endif @echo "" >> $@ @echo "#define CONFIG_ARCH_$(EM86XX_ARCH)" >> $@ @echo "#define CONFIG_ARCH \"$(EM86XX_ARCH)\"" >> $@ifeq ($(EM86XX_ARCH), MAMBO) @echo "#define CONFIG_ARCH_MAMBO_REV $(EM86XX_REV)" >> $@elseifeq ($(EM86XX_ARCH), TANGO10) @echo "#define CONFIG_ARCH_TANGO" >> $@ @echo "#define CONFIG_ARCH_TANGO10_REV $(EM86XX_REV)" >> $@elseifeq ($(EM86XX_ARCH), TANGO15) @echo "#define CONFIG_ARCH_TANGO" >> $@ @echo "#define CONFIG_ARCH_TANGO15_REV $(EM86XX_REV)" >> $@endifendifendif @echo "#define CONFIG_BOARD \"$(BOARD)\"" >> $@ifdef SUBBOARD @echo "#define CONFIG_SUBBOARD \"$(SUBBOARD)\"" >> $@ @echo "#define CONFIG_SUBBOARD_LEN $(SUBBOARD_LEN)" >> $@endif @echo "#define DRAMBASE $(DRAMBASE)" >> $@ @echo "#define LOADER_DRAMBASE $(LOADERBASE)" >> $@ @echo "#define STAGE1_IMAGE_SIZE $(STAGE1_IMAGE_SIZE)" >> $@ifeq ($(ENABLE_CRYPTO), y) @echo "#define ENCRYPTED_ROM0_NAME \"$(ENCRYPTED_ROM0_NAME)\"" >> $@ifeq ($(ENABLE_ENCRYPTED_OPT_ROM), y) @echo "#define ENABLE_ENCRYPTED_OPT_ROM" >> $@ @echo "#define CRYPTO_KERNEL_CMDLINE \"$(CRYPTO_KERNEL_CMDLINE)\"" >> $@ @echo "#define ENCRYPTED_OPT_DRAM_SIZE $(ENCRYPTED_OPT_DRAM_SIZE)" >> $@ @echo "#define ENCRYPTED_ROM0_SIZE $(ENCRYPTED_ROM0_SIZE)" >> $@ @echo "#define ENCRYPTED_ROM0_ADDR $(ENCRYPTED_ROM0_ADDR)" >> $@ @echo "#define ENCRYPTED_OPT_ROM1_NAME \"$(ENCRYPTED_OPT_ROM1_NAME)\"" >> $@ @echo "#define ENCRYPTED_OPT_ROM1_ADDR $(ENCRYPTED_OPT_ROM1_ADDR)" >> $@ @echo "#define ENCRYPTED_OPT_ROM1_SIZE $(ENCRYPTED_OPT_ROM1_SIZE)" >> $@ @echo "#define ENCRYPTED_OPT_ROM2_NAME \"$(ENCRYPTED_OPT_ROM2_NAME)\"" >> $@ @echo "#define ENCRYPTED_OPT_ROM2_ADDR $(ENCRYPTED_OPT_ROM2_ADDR)" >> $@ @echo "#define ENCRYPTED_OPT_ROM2_SIZE $(ENCRYPTED_OPT_ROM2_SIZE)" >> $@ @echo "#define ENCRYPTED_OPT_ROM3_NAME \"$(ENCRYPTED_OPT_ROM3_NAME)\"" >> $@ @echo "#define ENCRYPTED_OPT_ROM3_ADDR $(ENCRYPTED_OPT_ROM3_ADDR)" >> $@ @echo "#define ENCRYPTED_OPT_ROM3_SIZE $(ENCRYPTED_OPT_ROM3_SIZE)" >> $@ @echo "#define ENCRYPTED_OPT_ROM4_NAME \"$(ENCRYPTED_OPT_ROM4_NAME)\"" >> $@ @echo "#define ENCRYPTED_OPT_ROM4_ADDR $(ENCRYPTED_OPT_ROM4_ADDR)" >> $@ @echo "#define ENCRYPTED_OPT_ROM4_SIZE $(ENCRYPTED_OPT_ROM4_SIZE)" >> $@endififeq ($(ENABLE_SIGNED_OPT_ROM), y) @echo "#define ENABLE_SIGNED_OPT_ROM" >> $@ @echo "#define SIGNED_OPT_ROM1_ADDR $(SIGNED_OPT_ROM1_ADDR)" >> $@ @echo "#define SIGNED_OPT_ROM1_SIZE $(SIGNED_OPT_ROM1_SIZE)" >> $@ @echo "#define SIGNED_OPT_ROM2_ADDR $(SIGNED_OPT_ROM2_ADDR)" >> $@ @echo "#define SIGNED_OPT_ROM2_SIZE $(SIGNED_OPT_ROM2_SIZE)" >> $@ @echo "#define SIGNED_OPT_ROM3_ADDR $(SIGNED_OPT_ROM3_ADDR)" >> $@ @echo "#define SIGNED_OPT_ROM3_SIZE $(SIGNED_OPT_ROM3_SIZE)" >> $@ @echo "#define SIGNED_OPT_ROM4_ADDR $(SIGNED_OPT_ROM4_ADDR)" >> $@ @echo "#define SIGNED_OPT_ROM4_SIZE $(SIGNED_OPT_ROM4_SIZE)" >> $@endifendif @echo "#define DEFAULT_UART_PORT $(DEFAULT_UART_PORT)" >> $@ @echo "#define DEFAULT_UART_BAUDRATE $(DEFAULT_UART_BAUDRATE)" >> $@ifeq ($(DRAMADJUSTMENT), y) @echo "#define CONFIG_DRAM_ADJUSTMENT" >> $@endififeq ($(TESTLOADERONRAM), y) @echo "#define CONFIG_TESTLOADERONRAM" >> $@endif @echo "" >> $@ @echo "#define DEFAULT_CLKGEN_PLL $(DEFAULT_CLKGEN_PLL)" >> $@ @echo "#define DEFAULT_DRAM0_DUNIT_CFG $(DEFAULT_DRAM0_DUNIT_CFG)" >> $@ @echo "#define DEFAULT_DRAM1_DUNIT_CFG $(DEFAULT_DRAM1_DUNIT_CFG)" >> $@ @echo "#define DEFAULT_DRAM0_SIZE $(DEFAULT_DRAM0_SIZE)" >> $@ @echo "#define DEFAULT_DRAM1_SIZE $(DEFAULT_DRAM1_SIZE)" >> $@ @echo "#define DEFAULT_DRAM_DUNIT_DELAY0_CTRL $(DEFAULT_DRAM_DUNIT_DELAY0_CTRL)" >> $@ @echo "#define DEFAULT_PCI_SUBSYSTEM_ID $(DEFAULT_PCI_SUBSYSTEM_ID)" >> $@ @echo "#define DEFAULT_PCI_REVISION_ID $(DEFAULT_PCI_REVISION_ID)" >> $@ @echo "#define DEFAULT_PCI_MEMORY_SIZE $(DEFAULT_PCI_MEMORY_SIZE)" >> $@ @echo "#define DEFAULT_CONFIGVALID $(DEFAULT_CONFIGVALID)" >> $@ @echo "#define DEFAULT_SFLA_DRIVER_SPEED $(DEFAULT_SFLA_DRIVER_SPEED)" >> $@ @echo "#define DEFAULT_PB_DEFAULT_TIMING $(DEFAULT_PB_DEFAULT_TIMING)" >> $@ @echo "#define DEFAULT_PB_CS_CONFIG $(DEFAULT_PB_CS_CONFIG)" >> $@ @echo "#define DEFAULT_PB_TIMING0 $(DEFAULT_PB_TIMING0)" >> $@ @echo "#define DEFAULT_PB_USE_TIMING0 $(DEFAULT_PB_USE_TIMING0)" >> $@ @echo "#define DEFAULT_PB_TIMING1 $(DEFAULT_PB_TIMING1)" >> $@ @echo "#define DEFAULT_PB_USE_TIMING1 $(DEFAULT_PB_USE_TIMING1)" >> $@ @echo "#define DEFAULT_PB_TIMING2 $(DEFAULT_PB_TIMING2)" >> $@ @echo "#define DEFAULT_PB_USE_TIMING2 $(DEFAULT_PB_USE_TIMING2)" >> $@ @echo "#define DEFAULT_PB_TIMING3 $(DEFAULT_PB_TIMING3)" >> $@ @echo "#define DEFAULT_PB_USE_TIMING3 $(DEFAULT_PB_USE_TIMING3)" >> $@ @echo "#define DEFAULT_PB_TIMING4 $(DEFAULT_PB_TIMING4)" >> $@ @echo "#define DEFAULT_PB_USE_TIMING4 $(DEFAULT_PB_USE_TIMING4)" >> $@ @echo "#define DEFAULT_PB_TIMING5 $(DEFAULT_PB_TIMING5)" >> $@ @echo "#define DEFAULT_PB_USE_TIMING5 $(DEFAULT_PB_USE_TIMING5)" >> $@ @echo "#define DEFAULT_IRQ_GPIOMAP $(DEFAULT_IRQ_GPIOMAP)" >> $@ @echo "#define DEFAULT_BOOTFLAG $(DEFAULT_BOOTFLAG)" >> $@ @echo "#define DEFAULT_GPIO_DIR $(DEFAULT_GPIO_DIR)" >> $@ @echo "#define DEFAULT_GPIO_OUTPUT $(DEFAULT_GPIO_OUTPUT)" >> $@ifeq ($(OPTIMIZE_SIZE), y) @echo "#define CONFIG_OPTIMIZE_SIZE" >> $@endif @echo "#endif" >> $@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -