########################################################################################## # 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