Files
hisi_SS524V100_SDK/osdrv/Makefile
T

407 lines
16 KiB
Makefile

##########################################################################################
# prepare param
##########################################################################################
export OSDRV_DIR=$(shell pwd)
ifeq ($(OSDRV_DIR)/../open_source/, $(wildcard $(OSDRV_DIR)/../open_source/))
OPEN_SOURCE=$(OSDRV_DIR)/../open_source/
else ifeq ($(OSDRV_DIR)/../../open_source/, $(wildcard $(OSDRV_DIR)/../../open_source/))
OPEN_SOURCE=$(OSDRV_DIR)/../../open_source/
else
$(warning "---------------------------------------------------------------------")
$(warning " Cannot found the open_source Contents!! ")
$(warning "---------------------------------------------------------------------")
$(error )
endif
export CHIP?=ss524v100
export ARCH=arm
ARCH_TYPE = $(ARCH)
export OSDRV_CROSS?=arm-mix410-linux
export CROSS_COMPILE=$(OSDRV_CROSS)-
export OSDRV_CROSS_CFLAGS
export BUILD :=all
export BUILD_J
BOOT_MEDIA?=spi
ifneq ($(BOOT_MEDIA),spi)
ifneq ($(BOOT_MEDIA),emmc)
$(error you must set valid BOOT_MEDIA:spi or emmc!)
endif
endif
ifeq ($(BUILD_J), )
BUILD_J:=20
endif
ifneq ($(CHIP),ss524v100)
ifneq ($(CHIP),ss522v100)
ifneq ($(CHIP),ss615v100)
$(error you must set valid CHIP:ss524v100 or ss522v100 or ss615v100 !)
endif
endif
endif
ifeq ($(CHIP), ss524v100)
TARGET_XLSM ?= SS524V100-DMEB_4L_FLYBY-DDR4_2664M_2GB_16bitx2.xlsm
endif
ifeq ($(CHIP), ss522v100)
TARGET_XLSM ?= SS522V100-DMEB_2L-DDR4_2664M_1GB_16bit.xlsm
endif
ifeq ($(CHIP), ss615v100)
TARGET_XLSM ?= SS615V100-DMEB_4L_FLYBY-DDR4_2664M_2GB_16bitx2.xlsm
endif
ifeq ($(OSDRV_CROSS),arm-mix410-linux)
LIB_TYPE:=glibc
BUSYBOX_CFG:=config_v400_a7_softfp_neon
TOOLCHAIN_DIR:=arm-mix410-linux
TOOLCHAINI_VERSION:=
RUNTIME_LIB:=runtime_glibc
CROSS_SPECIFIED:=y
else
$(error This chip do not supprot $(OSDRV_CROSS) toolchain !)
endif
BUSYBOX_VER:=busybox-1.31.1
BUSYBOX_DIR := $(OPEN_SOURCE)/busybox
TOOLCHAIN_RUNTIME_LIB_C:=lib.tgz
TOOLCHAIN_RUNTIME_LIB:=a7_softfp_neon-vfpv4
OSDRV_CROSS_CFLAGS:=-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -w
UBOOT_VER:=u-boot-2020.01
UBOOT_DIR:=$(OPEN_SOURCE)/u-boot
UBOOT_TAR:=$(UBOOT_VER).tar.bz2
UBOOT:=u-boot-$(CHIP).bin
UBOOT_REG_BIN:=$(CHIP)_reg_info.bin
ifeq ($(BOOT_MEDIA),emmc)
export UBOOT_CONFIG:=$(CHIP)_$(BOOT_MEDIA)_config
else
export UBOOT_CONFIG:=$(CHIP)_config
endif
SECURE_BOOT:=secureboot_release
SECURE_BOOT_TAR:=$(SECURE_BOOT).tgz
KERNEL_VER:=linux-4.19.y
KERNEL_DIR:=$(OPEN_SOURCE)/linux
KERNEL_TAR:=$(KERNEL_VER).tgz
UIMAGE:=uImage_$(CHIP)
ifeq ($(BOOT_MEDIA),emmc)
export KERNEL_CFG:=$(CHIP)_$(BOOT_MEDIA)_defconfig
else
export KERNEL_CFG:=$(CHIP)_defconfig
endif
ifeq ($(BOOT_MEDIA), emmc)
EMMC_FLAG = emmc_
endif
export PUB_IMAGE:=$(CHIP)_$(EMMC_FLAG)image_$(LIB_TYPE)
EXT4_TOOL:=make_ext4fs
EXT4_IMAGE_BIN:=rootfs_$(CHIP)_96M.ext4
export PUB_BOARD:=board_$(LIB_TYPE)
export PUB_ROOTFS:=rootfs_$(LIB_TYPE)
JFFS2_IMAGE_BIN_64K:=rootfs_$(CHIP)_64k.jffs2
JFFS2_IMAGE_BIN_128K:=rootfs_$(CHIP)_128k.jffs2
JFFS2_IMAGE_BIN_256K:=rootfs_$(CHIP)_256k.jffs2
CRAMFS_VER:= util-linux-2.35.1
CRAMFS_DIR:=$(OPEN_SOURCE)/util-linux
CRAMFS_TAR:=$(CRAMFS_VER).tar.gz
XZ_DIR:= $(OPEN_SOURCE)/xz
LZMA_DIR:=$(OPEN_SOURCE)/lzma
EUDEV_VER:= eudev-3.2.9
EUDEV_DIR:=$(OPEN_SOURCE)/eudev
EUDEV_TAR:=$(EUDEV_VER).tar.gz
MTD_DIR:=$(OPEN_SOURCE)/mtd-utils/
MTD_VER:= mtd-utils-2.1.1
MTD_TAR:=$(MTD_VER).tar.bz2
ZLIB_VER:= zlib-1.2.11
ZLIB_DIR:= $(OPEN_SOURCE)/zlib
ZLIB_TAR:=$(ZLIB_VER).tar.gz
SQUASHFS_VER:= squashfs4.4
SQUASHFS_DIR:=$(OPEN_SOURCE)/squashfs
SQUASHFS_TAR:=$(SQUASHFS_VER).tar.gz
EMMC_ROOTFS_SIZE ?= 96
E2FSPROGS_DIR:=$(OPEN_SOURCE)/e2fsprogs/
EXT4_TOOL:=mkfs.ext4
EXT4_IMAGE_BIN:=rootfs_$(CHIP)_$(EMMC_ROOTFS_SIZE)M.ext4
COUNT_SIZE := $(shell echo $$(( $(EMMC_ROOTFS_SIZE) * 1024 * 2 )))
REGBING_PACKAGE_VER:=regbin-v1.0.2
TOOLCHAIN_FILE:= $(shell which $(OSDRV_CROSS)-gcc )
TOOLCHAIN_DIR:=$(shell dirname $(shell dirname $(TOOLCHAIN_FILE)))
#ifneq ($(OSDRV_CROSS),arm-mix410-linux)
#RUNTIMELIB_DIR=$(shell dirname $(TOOLCHAIN_DIR))/$(RUNTIME_LIB)
#else
RUNTIMELIB_DIR=$(shell dirname $(TOOLCHAIN_DIR))/$(OSDRV_CROSS)/$(RUNTIME_LIB)
#endif
##########################################################################################
# set task
##########################################################################################
ifeq ($(CROSS_SPECIFIED),y)
all: secureboot kernel rootfs_build
notools: boot kernel notools_prepare rootfs_notools_build
clean: boot_clean secureboot_clean kernel_clean \
busybox_clean pctools_clean boardtools_clean rootfs_clean secure_libs_clean
distclean:clean pub_clean
endif
a:=$(shell $(OSDRV_CROSS)-gcc --version)
b:=$(findstring $(TOOLCHAINI_VERSION),$(a))
c:= $(word 2, $(a))
##########################################################################################
#task [0] prepare
##########################################################################################
prepare:
mkdir $(OSDRV_DIR)/pub/$(PUB_IMAGE) -p
mkdir $(OSDRV_DIR)/pub/bin/$(PUB_BOARD) -p
mkdir $(OSDRV_DIR)/pub/bin/pc -p
##########################################################################################
# prepare regbin tools
##########################################################################################
check_regbin:
REGBING_PACKAGE = $(shell find $(OSDRV_DIR)/tools/pc/uboot_tools/ \
-name "$(REGBING_PACKAGE_VER).tgz")
#$(warning $(REGBING_PACKAGE))
ifeq ($(REGBING_PACKAGE), )
$(warning "---------------------------------------------------------------------")
$(warning " Cannot found the $(REGBING_PACKAGE_VER).tgz package !! ")
$(warning "---------------------------------------------------------------------")
$(error )
endif
##########################################################################################
# regbin_prepare
##########################################################################################
regbin_prepare:
@echo "---------task [0] regbin_prepare"
rm $(OSDRV_DIR)/tools/pc/uboot_tools/$(REGBING_PACKAGE_VER) -rf
tar xzf $(REGBING_PACKAGE) -C $(OSDRV_DIR)/tools/pc/uboot_tools
chmod 777 $(OSDRV_DIR)/tools/pc/uboot_tools/$(REGBING_PACKAGE_VER)/regbin
cp $(OSDRV_DIR)/tools/pc/uboot_tools/$(TARGET_XLSM) $(OSDRV_DIR)/tools/pc/uboot_tools/$(REGBING_PACKAGE_VER)
pushd $(OSDRV_DIR)/tools/pc/uboot_tools/$(REGBING_PACKAGE_VER);./regbin $(TARGET_XLSM) $(UBOOT_REG_BIN);popd
mv $(OSDRV_DIR)/tools/pc/uboot_tools/$(REGBING_PACKAGE_VER)/$(UBOOT_REG_BIN) $(OSDRV_DIR)/tools/pc/uboot_tools
rm $(OSDRV_DIR)/tools/pc/uboot_tools/$(REGBING_PACKAGE_VER) -rf
##########################################################################################
notools_prepare:
pushd $(OSDRV_DIR)/pub;tar xzf $(PUB_ROOTFS).tgz;popd
##########################################################################################
#task [1] build uboot
##########################################################################################
boot: prepare regbin_prepare
@echo "---------task [1] build boot"
make -C $(UBOOT_DIR) CHIP=$(CHIP) BOOT_MEDIA=$(BOOT_MEDIA) LIB_TYPE=$(LIB_TYPE) \
ARCH_TYPE=$(ARCH_TYPE) all
boot_clean:
rm $(UBOOT_DIR)/$(UBOOT_VER) -rf
##########################################################################################
#task [1.1] build secureboot
##########################################################################################
secureboot:boot
@echo -e "---------task [1.1] build secure boot"
ifneq ($(OSDRV_DIR)/components/$(SECURE_BOOT), $(wildcard $(OSDRV_DIR)/components/$(SECURE_BOOT)))
pushd $(OSDRV_DIR)/components;tar xzf $(SECURE_BOOT_TAR) -C .;popd
endif
pushd $(OSDRV_DIR)/components/$(SECURE_BOOT); \
cp $(UBOOT_DIR)/$(UBOOT_VER)/u-boot-$(CHIP).bin u-boot-original.bin; \
make CHIP=$(CHIP) ddrinit; \
popd
secureboot_clean:
rm $(OSDRV_DIR)/components/$(SECURE_BOOT) -rf
##########################################################################################
#task [2] build kernel
##########################################################################################
kernel: prepare
@echo "---------task [2] build kernel"
make -C $(KERNEL_DIR) CHIP=$(CHIP) BOOT_MEDIA=$(BOOT_MEDIA) LIB_TYPE=$(LIB_TYPE) \
ARCH_TYPE=$(ARCH_TYPE) all
cp $(KERNEL_DIR)/$(KERNEL_VER)/arch/arm/boot/uImage $(OSDRV_DIR)/pub/$(PUB_IMAGE)/$(UIMAGE)
kernel_clean:
rm $(KERNEL_DIR)/$(KERNEL_VER) -rf
rm $(KERNEL_DIR)/$(KERNEL_TAR) -rf
##########################################################################################
#task [3] build secure libs
##########################################################################################
secure_libs:
@echo -e $(GREEN)"---------task [3] build secure libs" $(DONE)
pushd $(OSDRV_DIR)/components;tar xzf secure_c.tgz -C .;popd
pushd $(OSDRV_DIR)/components/secure_c; \
make clean;make lib CROSS_COMPILE= ;cp libsecurec.a lib/libsecurec-pc.a; \
make clean;make lib CROSS_COMPILE=$(OSDRV_CROSS)-;cp libsecurec.a lib/libsecurec-board.a; \
popd
secure_libs_clean:
@rm -rf $(OSDRV_DIR)/components/secure_c
##########################################################################################
#task [4] prepare rootfs
##########################################################################################
rootfs_prepare: prepare
@echo "---------task [4] prepare rootfs "
ifeq ($(OSDRV_DIR)/pub/$(PUB_ROOTFS), $(wildcard $(OSDRV_DIR)/pub/$(PUB_ROOTFS)))
pushd $(OSDRV_DIR)/pub/$(PUB_ROOTFS); chmod +w usr/bin; chmod +w usr/sbin; chmod +w sbin; popd
rm $(OSDRV_DIR)/pub/$(PUB_ROOTFS)* -rf
endif
tar xzf $(OSDRV_DIR)/rootfs_scripts/rootfs.tgz -C $(OSDRV_DIR)/pub
mv $(OSDRV_DIR)/pub/rootfs $(OSDRV_DIR)/pub/$(PUB_ROOTFS)
tar xzf $(RUNTIMELIB_DIR)/$(TOOLCHAIN_RUNTIME_LIB)/$(TOOLCHAIN_RUNTIME_LIB_C) -C $(OSDRV_DIR)/pub/$(PUB_ROOTFS)
pushd $(OSDRV_DIR)/pub/$(PUB_ROOTFS);$(CROSS_COMPILE)strip -d ./lib/*;popd
##########################################################################################
#task [5] build busybox
##########################################################################################
busybox: prepare
@echo "---------task [5] build busybox "
make -C $(BUSYBOX_DIR) CHIP=$(CHIP) BOOT_MEDIA=$(BOOT_MEDIA) LIB_TYPE=$(LIB_TYPE) \
ARCH_TYPE=$(ARCH_TYPE) BUSYBOX_CFG=$(BUSYBOX_CFG) all
busybox_clean:
make -C $(BUSYBOX_DIR) clean
##########################################################################################
#task [6] build pc tools
##########################################################################################
pctools: prepare secure_libs
@echo "---------task [6] build tools which run on pc"
make -C $(ZLIB_DIR) zlib_pc
make -C $(MTD_DIR) mtd_pc
make -C $(LZMA_DIR)
cp $(MTD_DIR)/out/pc/mkfs.jffs2 $(OSDRV_DIR)/pub/bin/pc
cp $(MTD_DIR)/out/pc/mkfs.ubifs $(OSDRV_DIR)/pub/bin/pc
cp $(MTD_DIR)/out/pc/ubinize $(OSDRV_DIR)/pub/bin/pc
make -C $(CRAMFS_DIR)
cp $(CRAMFS_DIR)/out/pc/sbin/mkfs.cramfs $(OSDRV_DIR)/pub/bin/pc
make -C $(XZ_DIR)
make -C $(SQUASHFS_DIR)
cp $(SQUASHFS_DIR)/out/pc/mksquashfs $(OSDRV_DIR)/pub/bin/pc
cp $(LZMA_DIR)/bin/lzma $(OSDRV_DIR)/pub/bin/pc
make -C $(E2FSPROGS_DIR) e2fsprogs_pc
cp $(E2FSPROGS_DIR)/out/pc/sbin/$(EXT4_TOOL) $(OSDRV_DIR)/pub/bin/pc
cp $(OSDRV_DIR)/components/secure_c/lib/libsecurec-pc.a $(OSDRV_DIR)/tools/pc/nand_production/fmc_nand_ecc_product_v100
cp $(OSDRV_DIR)/components/secure_c/include/*.h $(OSDRV_DIR)/tools/pc/nand_production/fmc_nand_ecc_product_v100
make -C $(OSDRV_DIR)/tools/pc/nand_production/fmc_nand_ecc_product_v100
cp $(OSDRV_DIR)/tools/pc/nand_production/fmc_nand_ecc_product_v100/nand_product $(OSDRV_DIR)/pub/bin/pc
pctools_clean:
make -C $(ZLIB_DIR) distclean
make -C $(MTD_DIR) distclean
make -C $(SQUASHFS_DIR) distclean
make -C $(CRAMFS_DIR) distclean
make -C $(XZ_DIR) distclean
make -C $(LZMA_DIR) distclean
make -C $(E2FSPROGS_DIR) distclean
rm $(OSDRV_DIR)/tools/pc/uboot_tools/$(REGBING_PACKAGE_VER) -rf
make -C $(OSDRV_DIR)/tools/pc/nand_production/fmc_nand_ecc_product_v100 clean
rm $(OSDRV_DIR)/tools/pc/nand_production/fmc_nand_ecc_product_v100/*securec* -rf
##########################################################################################
#task [7] build board tools
##########################################################################################
boardtools: rootfs_prepare secure_libs
@echo "---------task [7] build tools which run on board "
cp $(OSDRV_DIR)/components/secure_c/lib/libsecurec-board.a $(OSDRV_DIR)/tools/board/reg-tools-1.0.0/source/common
cp $(OSDRV_DIR)/components/secure_c/include/*.h $(OSDRV_DIR)/tools/board/reg-tools-1.0.0/source/common
make -C $(OSDRV_DIR)/tools/board/reg-tools-1.0.0
make -C $(ZLIB_DIR) OSDRV_CROSS=$(OSDRV_CROSS) zlib_board
make -C $(EUDEV_DIR) OSDRV_CROSS=$(OSDRV_CROSS) -j1
cp -af $(EUDEV_DIR)/rootfs/. $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/
make -C $(MTD_DIR) OSDRV_CROSS=$(OSDRV_CROSS) mtd_board
cp $(MTD_DIR)/out/board/bin/* $(OSDRV_DIR)/pub/bin/$(PUB_BOARD)
make -C $(E2FSPROGS_DIR) OSDRV_CROSS=$(OSDRV_CROSS) e2fsprogs_board
cp $(E2FSPROGS_DIR)/out/board/sbin/mkfs.ext2 $(OSDRV_DIR)/pub/bin/$(PUB_BOARD) -rf;
cp $(E2FSPROGS_DIR)/out/board/sbin/mkfs.ext3 $(OSDRV_DIR)/pub/bin/$(PUB_BOARD) -rf;
cp $(E2FSPROGS_DIR)/out/board/sbin/mkfs.ext4 $(OSDRV_DIR)/pub/bin/$(PUB_BOARD) -rf;
cp $(E2FSPROGS_DIR)/out/board/sbin/mke2fs $(OSDRV_DIR)/pub/bin/$(PUB_BOARD) -rf;
boardtools_clean:
make -C $(OSDRV_DIR)/tools/board/reg-tools-1.0.0 clean
make -C $(EUDEV_DIR) clean
make -C $(ZLIB_DIR) clean
make -C $(MTD_DIR) distclean
make -C $(E2FSPROGS_DIR) distclean
rm $(OSDRV_DIR)/tools/board/reg-tools-1.0.0/source/common/*securec* -rf
##########################################################################################
#task [8] build rootfs
##########################################################################################
define rootfs_fun
@echo "---------task [8] build rootfs"
rm $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/dev/* -rf
pushd $(OSDRV_DIR)/pub/$(PUB_ROOTFS);ln -s sbin/init init;popd
pushd $(OSDRV_DIR)/pub/$(PUB_ROOTFS); chmod go-x * -R;chmod go-w * -R;chmod go-r * -R; popd
pushd $(OSDRV_DIR)/pub/$(PUB_ROOTFS); chmod -w usr/bin -R; chmod -w usr/sbin -R; chmod -w sbin -R; popd
pushd $(OSDRV_DIR)/pub/bin/pc;./mkfs.jffs2 -d $(OSDRV_DIR)/pub/$(PUB_ROOTFS) -l -e 0x40000 -o $(OSDRV_DIR)/pub/$(PUB_IMAGE)/$(JFFS2_IMAGE_BIN_256K);popd
pushd $(OSDRV_DIR)/pub/bin/pc;./mkfs.jffs2 -d $(OSDRV_DIR)/pub/$(PUB_ROOTFS) -l -e 0x20000 -o $(OSDRV_DIR)/pub/$(PUB_IMAGE)/$(JFFS2_IMAGE_BIN_128K);popd
pushd $(OSDRV_DIR)/pub/bin/pc;./mkfs.jffs2 -d $(OSDRV_DIR)/pub/$(PUB_ROOTFS) -l -e 0x10000 -o $(OSDRV_DIR)/pub/$(PUB_IMAGE)/$(JFFS2_IMAGE_BIN_64K);popd
cp $(OSDRV_DIR)/tools/pc/ubi_sh/mkubiimg.sh $(OSDRV_DIR)/pub/$(PUB_IMAGE)
chmod +x $(OSDRV_DIR)/pub/$(PUB_IMAGE)/mkubiimg.sh
# build the pagesize = 2k, blocksize = 128k, part_size = 32M #
pushd $(OSDRV_DIR)/pub/$(PUB_IMAGE);./mkubiimg.sh $(CHIP) 2k 128k $(OSDRV_DIR)/pub/$(PUB_ROOTFS) 64M $(OSDRV_DIR)/pub/bin/pc;popd
# build the pagesize = 4k, blocksize = 256k, part_size = 50M #
pushd $(OSDRV_DIR)/pub/$(PUB_IMAGE);./mkubiimg.sh $(CHIP) 4k 256k $(OSDRV_DIR)/pub/$(PUB_ROOTFS) 50M $(OSDRV_DIR)/pub/bin/pc;popd
rm $(OSDRV_DIR)/pub/$(PUB_IMAGE)/mkubiimg.sh
dd if=/dev/zero of=$(OSDRV_DIR)/pub/$(PUB_IMAGE)/$(EXT4_IMAGE_BIN) bs=512 count=$(COUNT_SIZE)
$(OSDRV_DIR)/pub/bin/pc/$(EXT4_TOOL) $(OSDRV_DIR)/pub/$(PUB_IMAGE)/$(EXT4_IMAGE_BIN)
pushd $(E2FSPROGS_DIR)/out/pc/contrib; ./populate-extfs.sh $(OSDRV_DIR)/pub/$(PUB_ROOTFS) $(OSDRV_DIR)/pub/$(PUB_IMAGE)/$(EXT4_IMAGE_BIN);popd
find $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/ -name '*svn' | xargs rm -rf
pushd $(OSDRV_DIR)/pub;tar czf $(PUB_ROOTFS).tgz $(PUB_ROOTFS);popd
@echo "---------finish osdrv work"
endef
rootfs_build: boardtools busybox pctools
cp -af $(BUSYBOX_DIR)/$(BUSYBOX_VER)/_install/* $(OSDRV_DIR)/pub/$(PUB_ROOTFS)
$(call rootfs_fun)
rootfs_notools_build:
$(call rootfs_fun)
rootfs_clean:
ifeq ($(OSDRV_DIR)/pub/$(PUB_ROOTFS), $(wildcard $(OSDRV_DIR)/pub/$(PUB_ROOTFS)))
pushd $(OSDRV_DIR)/pub/$(PUB_ROOTFS); chmod +w usr/bin -R; chmod +w usr/sbin -R; chmod +w sbin -R; popd
endif
rm $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/ -rf
##########################################################################################
#task [9] clean pub
##########################################################################################
pub_clean:
rm $(OSDRV_DIR)/pub/* -rf