ifeq ($(BR2_PACKAGE_RV1108),y)
|
|
include package/rockchip/rv1108_package/.BoardConfig.mk
|
include $(sort $(wildcard package/rockchip/rv1108_package/*/*.mk))
|
|
RV_SDK_DIR=$(TOPDIR)/..
|
RV_OUTPUT_DIR=$(TOPDIR)/output/rockchip_rv1108
|
RV_IMAGE_DIR=$(RV_OUTPUT_DIR)/images
|
RV_LOADER_DIR=$(TOPDIR)/../loader
|
RV_KERNEL_DIR=$(TOPDIR)/../kernel
|
RV_USERDATA_DIR=$(RV_OUTPUT_DIR)/userdata
|
RV_MODULES_DIR=$(RV_OUTPUT_DIR)/modules
|
RV_ROOT_DIR=$(RV_OUTPUT_DIR)/root
|
RV_BUILD_DIR=$(TOPDIR)/../build
|
RV_DEVICE_PRODUCT_DIR=$(TOPDIR)/../device/rockchip/$(RK_TARGET_PRODUCT)
|
RV_COMMON_USERDATA_DIR=$(RV_DEVICE_PRODUCT_DIR)/userdata
|
RV_COMMON_ROOT_DATA_DIR=$(RV_DEVICE_PRODUCT_DIR)/root
|
RV_DEVICE_PRODUCT_BOARD_DIR=$(RV_DEVICE_PRODUCT_DIR)/overlay-board/rv1108-$(RK_TARGET_BOARD_VERSION)
|
RV_BOARD_USERDATA_DIR=$(RV_DEVICE_PRODUCT_BOARD_DIR)/userdata
|
RV_BOARD_ROOT_DIR=$(RV_DEVICE_PRODUCT_BOARD_DIR)/root
|
|
### build loader
|
ifeq ($(RK_LOADER_BUILD_TYPE),emmc)
|
EMMC_ONLY=1
|
else ifeq ($(RK_LOADER_BUILD_TYPE),nor)
|
NOR_ONLY=1
|
else
|
ALL_SUPPORT=1
|
endif
|
|
PREISP_RKL_DTS=$(TOPDIR)/../kernel/arch/arm/boot/dts/$(RK_KERNEL_DTS).dts
|
PREISP_RKL_NODE=preisp_reserved
|
PREISP_RKL_ADDR_VALUE := $(shell grep ${PREISP_RKL_NODE} -A 6 ${PREISP_RKL_DTS} | \
|
sed ':a;N;ba;s/\n/ /g' | grep reg | cut -d '{' -f2 | cut -d '}' -f1 | cut -d '<' -f2 | cut -d ' ' -f1)
|
PREISP_RKL_ADDR := $(shell if [ -z ${PREISP_RKL_ADDR_VALUE} ]; then \
|
echo "none"; else echo "${PREISP_RKL_ADDR_VALUE}"; fi)
|
|
ifeq ($(RK_LOADER_PREISP_EN),1)
|
LOADER_BUILD_MAKE_ENV += PREISP_EN=$(RK_LOADER_PREISP_EN)
|
LOADER_BUILD_MAKE_ENV += PREISP_RKL_ADDR=$(PREISP_RKL_ADDR)
|
endif
|
|
LOADER_BUILD_MAKE_ENV += \
|
POWER_HOLD_GPIO_GROUP=$(RK_LOADER_POWER_HOLD_GPIO_GROUP) \
|
POWER_HOLD_GPIO_INDEX=$(RK_LOADER_POWER_HOLD_GPIO_INDEX) \
|
EMMC_TURNING_DEGREE=$(RK_LOADER_EMMC_TURNING_DEGREE) \
|
BOOTPART_SELECT=$(RK_LOADER_BOOTPART_SELECT) \
|
EMMC_ONLY=$(EMMC_ONLY) \
|
NOR_ONLY=$(NOR_ONLY) \
|
ALL_SUPPORT=$(ALL_SUPPORT)
|
|
loader:
|
make -C $(RV_LOADER_DIR) PLAT=rv1108usbplug
|
make -C $(RV_LOADER_DIR) PLAT=rv1108loader $(LOADER_BUILD_MAKE_ENV)
|
cp $(RV_LOADER_DIR)/rk_tools/bin/rv11/RV1108_DDR3.bin $(RV_IMAGE_DIR)/rv1108ddr.bin
|
cp $(RV_LOADER_DIR)/Project/rv1108loader/Debug/bin/rv1108loader.bin $(RV_IMAGE_DIR)/
|
cp $(RV_LOADER_DIR)/RV1108_usb_boot_V1.24.bin $(RV_IMAGE_DIR)/RV1108_usb_boot.bin
|
|
loader-clean:
|
make -C $(RV_LOADER_DIR) PLAT=rv1108usbplug clean
|
make -C $(RV_LOADER_DIR) PLAT=rv1108loader clean
|
|
|
### build kernel
|
kernel:
|
$(info RK_KERNEL_DEFCONFIG=$(RK_KERNEL_DEFCONFIG))
|
$(info RK_ARCH=$(RK_ARCH))
|
make -C $(RV_KERNEL_DIR) ARCH=$(RK_ARCH) $(RK_KERNEL_DTS).img -j$(RK_JOBS)
|
make -C $(RV_KERNEL_DIR) modules -j$(RK_JOBS)
|
make -C $(RV_KERNEL_DIR) INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(RV_OUTPUT_DIR)/tmp_modules modules_install
|
mkdir -p $(RV_OUTPUT_DIR)/modules
|
find $(RV_OUTPUT_DIR)/tmp_modules -name "*.ko" | xargs cp -t $(RV_OUTPUT_DIR)/modules
|
rm -fr $(RV_OUTPUT_DIR)/tmp_modules
|
|
kernel-clean:
|
make -C $(RV_KERNEL_DIR) clean
|
|
define mk_parttion_image
|
fstype=`echo $(1)`; \
|
echo fstype=$$fstype; \
|
fssize=`echo $(2)`; \
|
echo fssize=$$fssize; \
|
outputfile=`echo $(3)`; \
|
echo outputfile=$$outputfile; \
|
inputfile=`echo $(4)`; \
|
echo inputfile=$$inputfile; \
|
if [ $$fstype == "ext4" ]; then \
|
make_ext4fs -l $$fssize $$outputfile $$inputfile; \
|
elif [ $$fstype == "jffs2" ]; then \
|
fssize=`echo "obase=16;$$fssize" | cut -d 'M' -f1 | bc`; \
|
jffs2_fssize=0x$${fssize}00000;\
|
echo jffs2_fssize=$$jffs2_fssize; \
|
mkfs.jffs2 -d $$inputfile -o $$outputfile -e 0x10000 --pad=$$jffs2_fssize -n; \
|
else \
|
make_ext4fs -l $$fssize $$outputfile $$inputfile; \
|
fi;
|
endef
|
|
### build userdata
|
userdata:
|
if [ ! -d $(RV_USERDATA_DIR) ]; then mkdir -p $(RV_USERDATA_DIR); else rm -fr $(RV_USERDATA_DIR)/*; fi
|
if [ -f $(RV_IMAGE_DIR)/userdata.img ]; then rm $(RV_IMAGE_DIR)/userdata.img; fi
|
if [ -d $(RV_COMMON_USERDATA_DIR) ]; then cp -fr $(RV_COMMON_USERDATA_DIR)/* $(RV_USERDATA_DIR) 2>&1; fi
|
if [ -d $(RV_BOARD_USERDATA_DIR) ]; then cp -fr $(RV_BOARD_USERDATA_DIR)/* $(RV_USERDATA_DIR) 2>&1; fi
|
$(call mk_parttion_image,$(RK_USERDATA_FILESYSTEM_TYPE),$(RK_USERDATA_FILESYSTEM_SIZE),\
|
$(RV_IMAGE_DIR)/userdata.img, $(RV_USERDATA_DIR))
|
|
### build root , is not rootfs
|
root:
|
if [ -f $(RV_IMAGE_DIR)/root.img ]; then rm $(RV_IMAGE_DIR)/root.img; fi
|
if [ -d $(RV_BOARD_ROOT_DIR) ]; then cp -fr $(RV_BOARD_ROOT_DIR)/* $(RV_ROOT_DIR) 2>&1; fi
|
if [ -d $(RV_COMMON_ROOT_DATA_DIR) ]; then cp -fr $(RV_COMMON_ROOT_DATA_DIR)/* $(RV_ROOT_DIR) 2>&1; fi
|
if [ -d $(RV_MODULES_DIR) ]; then cp -fr $(RV_MODULES_DIR) $(RV_ROOT_DIR)/lib 2>&1; fi
|
$(call mk_parttion_image,$(RK_ROOT_FILESYSTEM_TYPE),$(RK_ROOT_FILESYSTEM_SIZE),\
|
$(RV_IMAGE_DIR)/root.img, $(RV_ROOT_DIR))
|
|
root-clean:
|
if [ -d $(RV_ROOT_DIR) ]; then rm -fr $(RV_ROOT_DIR); fi
|
|
fw:
|
if [ ! -L $(RV_SDK_DIR)/output ]; then ln -s buildroot/output $(RV_SDK_DIR)/output; fi
|
if [ -f $(RV_IMAGE_DIR)/dtb ]; then rm $(RV_IMAGE_DIR)/dtb; fi
|
cp $(RV_KERNEL_DIR)/arch/arm/boot/dts/$(RK_KERNEL_DTS).dtb $(RV_IMAGE_DIR)/dtb
|
if [ -f $(RV_IMAGE_DIR)/kernel.img ]; then rm $(RV_IMAGE_DIR)/kernel.img; fi
|
$(RV_BUILD_DIR)/kernelimage --pack --kernel $(RV_KERNEL_DIR)/arch/arm/boot/Image $(RV_IMAGE_DIR)/kernel.img 0x60308000 > /dev/null
|
if [ -f $(RV_IMAGE_DIR)/Firmware.img ]; then rm $(RV_IMAGE_DIR)/Firmware.img; fi
|
if [ -f $(RV_BOARD_USERDATA_DIR)/firmware/preisp.rkl ]; then cp $(RV_BOARD_USERDATA_DIR)/firmware/preisp.rkl $(RV_IMAGE_DIR);fi
|
$(RV_BUILD_DIR)/firmwareMerger -p $(RV_BUILD_DIR)/setting_ini/$(RK_SETTING_INI) $(RV_IMAGE_DIR)
|
|
fww:
|
cd $(TOPDIR)/../tools/Linux_Upgrade_Tool_* && ./linux_upgrade.sh
|
|
sync:
|
$(TOPDIR)/../.repo/repo/repo sync
|
|
all: loader kernel userdata root fw
|
|
|
clean: loader-clean kernel-clean root-clean
|
|
reinstall: root-clean
|
|
# prepare for gdb debug env
|
RV_GDBDEBUG_DIR=$(RV_OUTPUT_DIR)/gdbdebug
|
|
prepare-gdb:
|
if [ ! -d $(RV_GDBDEBUG_DIR) ]; then mkdir $(RV_GDBDEBUG_DIR); fi
|
echo "add-auto-load-safe-path $(RV_GDBDEBUG_DIR)" > ~/.gdbinit;
|
echo "set sysroot $(STAGING_DIR)" > $(RV_GDBDEBUG_DIR)/.gdbinit;
|
echo "set solib-absolute-prefix $(STAGING_DIR)" >> $(RV_GDBDEBUG_DIR)/.gdbinit;
|
echo "set solib-search-path $(STAGING_DIR)" >> $(RV_GDBDEBUG_DIR)/.gdbinit;
|
echo "define enter_non_stop" >> $(RV_GDBDEBUG_DIR)/.gdbinit;
|
echo " set pagination off" >> $(RV_GDBDEBUG_DIR)/.gdbinit;
|
echo " set target-async on" >> $(RV_GDBDEBUG_DIR)/.gdbinit;
|
echo " set non-stop on" >> $(RV_GDBDEBUG_DIR)/.gdbinit;
|
echo "end" >> $(RV_GDBDEBUG_DIR)/.gdbinit;
|
echo "#!/bin/bash" > $(RV_GDBDEBUG_DIR)/rv_gdb.bash;
|
echo "#./rv_gdb.bash corefile lock_app" >> $(RV_GDBDEBUG_DIR)/rv_gdb.bash;
|
echo "LD_LIB_DIR=$(STAGING_DIR)/lib" >> $(RV_GDBDEBUG_DIR)/rv_gdb.bash;
|
echo "GDB_LOAD_FILE=\`find $(STAGING_DIR)/usr -name \$$2\`" >> $(RV_GDBDEBUG_DIR)/rv_gdb.bash;
|
echo "export LD_LIBRARY_PATH=${LD_LIB_DIR}" >> $(RV_GDBDEBUG_DIR)/rv_gdb.bash;
|
echo "$(TARGET_CROSS)gdb --init-command=$(RV_GDBDEBUG_DIR)/.gdbinit --init-command=${GDB_LOAD_FILE} --core=\$$1" >> $(RV_GDBDEBUG_DIR)/rv_gdb.bash;
|
chmod +x $(RV_GDBDEBUG_DIR)/rv_gdb.bash;
|
|
|
endif
|