mirror of
https://github.com/jetkvm/rv1106-system.git
synced 2026-05-21 05:20:41 +00:00
a8a9a8502d
* feat: support dual storage variants (eMMC + SDMMC/TF card) and upgrade jetkvm_app to 0.5.6 Introduce two separate build configurations for JetKVM V2 hardware variants that differ only in storage medium: BoardConfig-EMMC-NONE-RV1106_JETKVM_V2.mk → boots from eMMC (mmcblk0, 13640M userdata) BoardConfig-SDMMC-NONE-RV1106_JETKVM_V2.mk → boots from TF card (mmcblk1, dynamic userdata) DTS refactor: - Extract all shared board peripherals (backlight, gmac, i2c1/AT24C02, i2c3/FT5x06, spi0/ST7789V, uart3, rtc, wdt, pwm5, sfc=disabled) into rv1106-jetkvm-v2.dtsi as a common base - rv1106g-jetkvm-v2.dts becomes a thin file with only the eMMC node - New rv1106g-jetkvm-v2-sdmmc.dts thin file with only the sdmmc node - Verified: both DTBs compile correctly; eMMC DTB is binary-identical to upstream Build system: - Add sdmmc as a new RK_BOOT_MEDIUM type throughout project/build.sh: sd_parts device, parse_partition_file, rootfs bootarg, build_recovery, build_factory, build_uboot INI selection, and mount_part script - sysdrv/Makefile: add sdmmc block for KERNEL_CMDLINE_FRAGMENT and env target using mmcblk1; restore emmc back to mmcblk0 - project/scripts/mk-tftp_sd_update.sh: recognize sdmmc alongside emmc - tools/linux/Linux_Pack_Firmware/mk-update_pack.sh: add mmcblk0 to the boot medium list so eMMC update packages are correctly generated U-Boot: - android_ab.c: replace hardcoded mmcblk1 with dev_desc->devnum so the A/B root device path is correct for both eMMC (devnum=0) and SDMMC (devnum=1), matching the DTS alias assignments jetkvm_app: - Upgrade from 0.4.8 to 0.5.6 (SHA256 verified) - Note: 0.5.6 switches from static to dynamic linking (ld-uClibc.so.0) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * ci: switch to ubuntu-22.04 runner and build both EMMC and SDMMC variants - Replace buildjet-16vcpu-ubuntu-2204 with standard ubuntu-22.04 runner - Use matrix strategy (fail-fast: false) to build EMMC and SDMMC in parallel - Artifact names include board variant: OTA-Image-EMMC, Full-Image-EMMC, etc. - buildkit upload remains EMMC-only Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: bake SKU identifier into system image for OTA targeting Each build variant writes /etc/jetkvm-sku to the system partition so the jetkvm_app can report the correct SKU when querying the OTA service: BoardConfig-EMMC → RK_SKU=jetkvm-emmc BoardConfig-SDMMC → RK_SKU=jetkvm-sdmmc Matches the SKU routing introduced in jetkvm/cloud-api#49, where the OTA API serves variant-specific binaries under {prefix}/{version}/skus/{sku}/ and defaults to legacy path for unrecognised SKUs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: align OTA SKU names with cloud-api DEFAULT_SKU convention jetkvm-emmc → jetkvm-v2 (matches cloud-api DEFAULT_SKU) jetkvm-sdmmc → jetkvm-v2-sdmmc Ref: jetkvm/cloud-api@1958830 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(dts): remove contradictory cap-mmc-highspeed from sdmmc node no-mmc prevents MMC protocol probing entirely, making cap-mmc-highspeed dead and misleading. Only cap-sd-highspeed is relevant for TF card use. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: handle IGNORE mountpoint for sdmmc in mount_part script Line 1601's guard only matched emmc, so SDMMC partitions with IGNORE mountpoint (e.g. inactive A/B slot) would fall through to return 1 instead of return 0, causing boot-time mount errors. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: add sdmmc to block-device filesystem tool checks in build_mkimg erofs and squashfs paths were missing sdmmc, causing them to fall through to ubifs (NAND-only tool). Latent with current ext4-only config but would silently produce a corrupt image if fs type changed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(sdmmc): build dd-able SD card image for direct flashing Adds build_sd_dd_image() that assembles a flat raw image from the fixed-size partitions (env, idblock, uboot_a/b, boot_a/b, system_a/b) plus a 256 MiB seed userdata.img containing install_to_userdata content (jetkvm_app etc.). Layout follows the cmdline blkdevparts — no MBR/GPT, since the kernel reads partitioning from u-boot env. Why a seed userdata: the SDMMC partition spec terminates with '-(userdata)' which build_mkimg skips, so jetkvm_app never landed in update.img on SDMMC. The mount_part init script (project/build.sh mount_part) calls resize2fs on first boot, which grows the 256 MiB ext4 to the end of the SD card automatically. Workflow: SDMMC artifact is now update_sd.img.zip (zip -9 of a sparse ~1.4 GiB image, ~45 MiB compressed). update.img remains the EMMC artifact since RKDevTool still uses it for production flashing. * fix(sdmmc): chown userdata seed root:root before mkfs.ext4 build_mkimg userdata is a no-op on SDMMC (partition size '-' → 0), so the __RELEASE_FILESYSTEM_FILES chown that build_mkimg normally runs never fires. Without it, mkfs.ext4 -d preserves the builder's uid/gid into the image, so /userdata/jetkvm on the SD card depended on whoever ran the build. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(sdmmc): tune userdata mkfs.ext4 so first-boot resize2fs scales to 1 TiB The previous flags (mkfs default 1K block size, -O ^64bit,^huge_file) made the first-boot resize hang on large cards: - 1K blocks × 8K-blocks-per-group → 128K block groups for 1 TiB. resize2fs has to write GD/bitmap entries for every new group; on slow SD random writes this stretches to many minutes. - Default inode_ratio at 1K = 2048 inodes/group → ~256M inodes after resize. ext4lazyinit kthread then zeroes ~32 GiB of inode tables in the background, saturating SD I/O long after mount returns. - resize_inode reserve = 256 GDT blocks × 32 entries = 8192 group descriptors, capping resize_inode-style growth at 64 GiB. Beyond that, resize2fs falls back to meta_bg, but ^64bit blocks the cleaner path. Switch to: 4K blocks, -T largefile (1 inode/MiB), -O 64bit, and an explicit -E resize= reservation covering 2 TiB. Measured on a 1 TiB sparse loop (host mkfs.ext4 1.47.2): online resize drops from 40 s to 0.4 s, and the post-mount lazy-itable workload drops from ~32 GiB to ~256 MiB of writes. 32 GiB minimum supported card capacity. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(sdmmc): include sdmmc in sysdrv build-medium switches Three places in sysdrv/ branched on the boot medium but left sdmmc out: - Makefile.tools.board.mk: e2fsprogs was gated on BOOT_MEDIUM=emmc, so the SDMMC rootfs shipped without resize2fs/e2fsck/mke2fs. mount_part's first-boot resize2fs call then silently failed and userdata stayed locked at the 256 MiB seed size, never growing to fill the card. - Makefile.param: the RK_BOOT_MEDIUM whitelist that propagates BOOT_MEDIUM omitted sdmmc, so any sub-tool Makefile included Makefile.param standalone (dropbear, eudev, etc.) saw BOOT_MEDIUM unset for sdmmc. Currently benign because no sub-tool branches on BOOT_MEDIUM, but a latent footgun. - tools/pc/toolkits/get_part_info.sh: PARTITION_FIRST_NO=0 was applied only for emmc. mmcblk1pN is also 1-indexed, so sdmmc would produce off-by-one root=/dev/mmcblk1pN values via `make env -C sysdrv`. The project's build.sh path computes part_num itself and isn't affected, but the sysdrv path was wrong. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
680 lines
28 KiB
Makefile
680 lines
28 KiB
Makefile
SYSDRV_DIR=$(shell pwd)
|
|
|
|
export LC_ALL=C
|
|
SHELL:=/bin/bash
|
|
MAKE=make
|
|
AT?=@
|
|
|
|
################################################################################
|
|
## Input Configuraton Overlay
|
|
################################################################################
|
|
# SYSDRV_BUILD_VERSION (RELEASE/DEBUG)
|
|
SYSDRV_BUILD_VERSION ?= RELEASE
|
|
ifneq ($(RK_BUILD_VERSION_TYPE),)
|
|
SYSDRV_BUILD_VERSION := $(RK_BUILD_VERSION_TYPE)
|
|
endif
|
|
|
|
ifneq ($(RK_JOBS),)
|
|
SYSDRV_JOBS := $(RK_JOBS)
|
|
endif
|
|
|
|
ifneq ($(RK_TOOLCHAIN_CROSS),)
|
|
SYSDRV_CROSS:= $(RK_TOOLCHAIN_CROSS)
|
|
endif
|
|
|
|
ifneq ($(RK_LIBC_TPYE),)
|
|
SYSDRV_LIB_TYPE := $(RK_LIBC_TPYE)
|
|
else
|
|
SYSDRV_LIB_TYPE ?= glibc
|
|
endif
|
|
|
|
SYSDRV_ROOTFS_FS_TYPE ?= $(fs_type)
|
|
ifneq ($(RK_ROOTFS_FS_TPYE),)
|
|
SYSDRV_ROOTFS_FS_TYPE := $(RK_ROOTFS_FS_TPYE)
|
|
endif
|
|
|
|
SYSDRV_ROOTFS_FS_COMP ?= $(fs_comp)
|
|
ifneq ($(RK_ROOTFS_FS_COMP),)
|
|
SYSDRV_ROOTFS_FS_COMP := $(RK_ROOTFS_FS_COMP)
|
|
endif
|
|
|
|
ifneq ($(RK_BOOT_MEDIUM),)
|
|
BOOT_MEDIUM := $(RK_BOOT_MEDIUM)
|
|
endif
|
|
|
|
ifeq ($(BOOT_MEDIUM),)
|
|
BOOT_MEDIUM := emmc
|
|
endif
|
|
|
|
ifneq ($(RK_KERNEL_DTS),)
|
|
KERNEL_DTS := $(RK_KERNEL_DTS)
|
|
endif
|
|
ifneq ($(RK_KERNEL_DEFCONFIG),)
|
|
KERNEL_CFG := $(RK_KERNEL_DEFCONFIG)
|
|
endif
|
|
ifneq ($(RK_KERNEL_DEFCONFIG_FRAGMENT),)
|
|
KERNEL_CFG_FRAGMENT := $(RK_KERNEL_DEFCONFIG_FRAGMENT)
|
|
endif
|
|
ifneq ($(RK_UBOOT_DEFCONFIG),)
|
|
UBOOT_CFG := $(RK_UBOOT_DEFCONFIG)
|
|
endif
|
|
ifneq ($(RK_UBOOT_DEFCONFIG_FRAGMENT),)
|
|
UBOOT_CFG_FRAGMENT := $(RK_UBOOT_DEFCONFIG_FRAGMENT)
|
|
endif
|
|
|
|
ifneq ($(RK_NAND_PAGE_SIZE),)
|
|
UBOOT_NAND_PAGE_SIZE := $(shell echo $$((RK_NAND_PAGE_SIZE)))
|
|
endif
|
|
ifneq ($(RK_NAND_BLOCK_SIZE),)
|
|
UBOOT_NAND_BLOCK_SIZE := $(shell echo $$(($(RK_NAND_BLOCK_SIZE) / 1024)))
|
|
endif
|
|
|
|
ifneq ($(RK_PROJECT_OUTPUT_IMAGE),)
|
|
OUTPUT_IMAGE_PATH := $(RK_PROJECT_OUTPUT_IMAGE)
|
|
else
|
|
OUTPUT_IMAGE_PATH :=
|
|
endif
|
|
|
|
ifneq ($(RK_PROJECT_PATH_BOARD_BIN),)
|
|
OUTPUT_BOARD_BIN_PATH := $(RK_PROJECT_PATH_BOARD_BIN)
|
|
else
|
|
OUTPUT_BOARD_BIN_PATH :=
|
|
endif
|
|
|
|
ifneq ($(RK_PROJECT_PATH_SYSDRV),)
|
|
OUTPUT_ROOTFS_SOURCE_DIR := $(RK_PROJECT_PATH_SYSDRV)
|
|
OUTPUT_ROOTFS_TOOLS_DIR := $(RK_PROJECT_PATH_SYSDRV)
|
|
else
|
|
OUTPUT_ROOTFS_SOURCE_DIR :=
|
|
OUTPUT_ROOTFS_TOOLS_DIR :=
|
|
endif
|
|
|
|
ifneq ($(OUTPUT_SYSDRV_RAMDISK_DIR),)
|
|
SYSDRV_RAMDISK_DIR := $(OUTPUT_SYSDRV_RAMDISK_DIR)
|
|
else
|
|
SYSDRV_KERNEL_INSTALL_BOOTIMG := y
|
|
SYSDRV_KERNEL_UPDATE_DTB := y
|
|
endif
|
|
################################################################################
|
|
## Public Configuraton
|
|
################################################################################
|
|
include $(SYSDRV_DIR)/Makefile.param
|
|
|
|
ifneq ($(RK_PARTITION_CMD_IN_ENV),)
|
|
CONFIG_SYSDRV_PARTITION := $(RK_PARTITION_CMD_IN_ENV)
|
|
endif
|
|
|
|
CONFIG_SYSDRV_PARTITION ?=
|
|
ROOTFS_PART_SIZE ?= $(shell $(SYSDRV_DIR)/tools/pc/toolkits/get_part_info.sh \
|
|
PART_SIZE "$(CONFIG_SYSDRV_PARTITION)" rootfs)
|
|
ROOTFS_PART_NUM ?= $(shell $(SYSDRV_DIR)/tools/pc/toolkits/get_part_info.sh \
|
|
PART_NUM "$(CONFIG_SYSDRV_PARTITION)" rootfs $(BOOT_MEDIUM))
|
|
ENV_PART_SIZE ?= $(shell $(SYSDRV_DIR)/tools/pc/toolkits/get_part_info.sh \
|
|
PART_SIZE "$(CONFIG_SYSDRV_PARTITION)" env)
|
|
ENV_PART_OFFSET ?= $(shell $(SYSDRV_DIR)/tools/pc/toolkits/get_part_info.sh \
|
|
PART_OFFSET "$(CONFIG_SYSDRV_PARTITION)" env)
|
|
|
|
ifneq ($(findstring ext4 ext2 jffs2 squashfs ubifs erofs,$(RK_PROJECT_ROOTFS_TYPE)),)
|
|
ifneq ($(findstring FAIL,$(ROOTFS_PART_SIZE)),)
|
|
$(error ## ROOTFS_PART_SIZE is invalid)
|
|
endif
|
|
endif
|
|
ifneq ($(findstring FAIL,$(ENV_PART_SIZE)),)
|
|
$(warning ## ENV_PART_SIZE is invalid)
|
|
endif
|
|
ifneq ($(findstring FAIL,$(ENV_PART_OFFSET)),)
|
|
$(warning ## ENV_PART_OFFSET is invalid)
|
|
endif
|
|
|
|
ifneq ($(findstring $(BOOT_MEDIUM),spi_nand slc_nand),)
|
|
SYSDRV_ROOTFS_BUILD_TARGET := rootfs_ubi
|
|
ifeq ($(SYSDRV_ROOTFS_FS_TYPE),)
|
|
SYSDRV_ROOTFS_FS_TYPE := ubifs
|
|
endif
|
|
ifeq ($(SYSDRV_ROOTFS_FS_TYPE),ubifs)
|
|
KERNEL_CMDLINE_FRAGMENT += root=ubi0:rootfs
|
|
endif
|
|
ifneq ($(findstring $(SYSDRV_ROOTFS_FS_TYPE),squashfs erofs),)
|
|
KERNEL_CMDLINE_FRAGMENT += ubi.block=0,rootfs root=/dev/ubiblock0_0
|
|
endif
|
|
KERNEL_CMDLINE_FRAGMENT += rootfstype=$(SYSDRV_ROOTFS_FS_TYPE) \
|
|
ubi.mtd=$(ROOTFS_PART_NUM)
|
|
endif
|
|
|
|
ifeq ($(BOOT_MEDIUM), emmc)
|
|
SYSDRV_ROOTFS_BUILD_TARGET := rootfs_ext4
|
|
ifeq ($(SYSDRV_ROOTFS_FS_TYPE),)
|
|
SYSDRV_ROOTFS_FS_TYPE := ext4
|
|
endif
|
|
KERNEL_CMDLINE_FRAGMENT += rootfstype=$(SYSDRV_ROOTFS_FS_TYPE) \
|
|
root=/dev/mmcblk0p$(ROOTFS_PART_NUM)
|
|
endif
|
|
|
|
ifeq ($(BOOT_MEDIUM), sdmmc)
|
|
SYSDRV_ROOTFS_BUILD_TARGET := rootfs_ext4
|
|
ifeq ($(SYSDRV_ROOTFS_FS_TYPE),)
|
|
SYSDRV_ROOTFS_FS_TYPE := ext4
|
|
endif
|
|
KERNEL_CMDLINE_FRAGMENT += rootfstype=$(SYSDRV_ROOTFS_FS_TYPE) \
|
|
root=/dev/mmcblk1p$(ROOTFS_PART_NUM)
|
|
endif
|
|
|
|
ifeq ($(BOOT_MEDIUM), spi_nor)
|
|
SYSDRV_ROOTFS_BUILD_TARGET := rootfs_jffs2
|
|
ifeq ($(SYSDRV_ROOTFS_FS_TYPE),)
|
|
SYSDRV_ROOTFS_FS_TYPE := jffs2
|
|
endif
|
|
KERNEL_CMDLINE_FRAGMENT += rootfstype=$(SYSDRV_ROOTFS_FS_TYPE) \
|
|
root=/dev/mtdblock$(ROOTFS_PART_NUM)
|
|
endif
|
|
|
|
ifneq ($(RK_KERNEL_CMDLINE_FRAGMENT),)
|
|
KERNEL_CMDLINE_FRAGMENT := $(RK_KERNEL_CMDLINE_FRAGMENT)
|
|
endif
|
|
ifeq ($(SYSDRV_ROOTFS_FS_TYPE),squashfs)
|
|
SYSDRV_ROOTFS_BUILD_TARGET := rootfs_squashfs
|
|
ifneq ($(findstring $(BOOT_MEDIUM),spi_nand slc_nand),)
|
|
SYSDRV_ROOTFS_BUILD_TARGET := rootfs_ubi
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(SYSDRV_ROOTFS_FS_TYPE),initramfs)
|
|
SYSDRV_ROOTFS_BUILD_TARGET := rootfs_initramfs
|
|
endif
|
|
|
|
ifeq ($(ENABLE_RNDIS),y)
|
|
ifeq ($(CHIP),rv1106)
|
|
override KERNEL_CFG_FRAGMENT += rv1106-rndis.config
|
|
else
|
|
$(error TODO rndis for $(CHIP) ...)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(RK_ENABLE_FASTBOOT), y)
|
|
ifneq ($(SYSDRV_BUILD_RECOVERY), y)
|
|
ifeq ($(CHIP),rv1106)
|
|
SYSDRV_DRIVER_MODULE := y
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# TODO: rename defconfig with BOOT_MEDIUM
|
|
KERNEL_CFG ?=
|
|
KERNEL_DTS ?=
|
|
KERNEL_DIR ?= $(SYSDRV_DIR)/source/kernel
|
|
KERNEL_DIR_DRV_KO ?= $(SYSDRV_KERNEL_OBJS_OUTPUT_DIR)/drv_ko
|
|
KERNEL_DTB :=
|
|
ifeq ($(ARCH),arm)
|
|
KERNEL_DTB := $(SYSDRV_KERNEL_OBJS_OUTPUT_DIR)/arch/$(ARCH)/boot/dts/$(KERNEL_DTS:dts=dtb)
|
|
endif
|
|
ifeq ($(ARCH),arm64)
|
|
KERNEL_DTB := $(SYSDRV_KERNEL_OBJS_OUTPUT_DIR)/arch/$(ARCH)/boot/dts/rockchip/$(KERNEL_DTS:dts=dtb)
|
|
endif
|
|
|
|
TOOLCHAIN_FILE := $(shell which $(SYSDRV_CROSS)-gcc )
|
|
TOOLCHAIN_DIR := $(shell dirname $(shell dirname $(TOOLCHAIN_FILE)))
|
|
RUNTIMELIB_DIR = $(shell dirname $(TOOLCHAIN_DIR))/$(RUNTIME_LIB)
|
|
|
|
TOOLCHAIN_RUNTIME_LIB:=runtime_lib
|
|
|
|
RKBIN_DIR := $(SYSDRV_DIR)/source/uboot/rkbin
|
|
UBOOT_DIR := $(SYSDRV_DIR)/source/uboot/u-boot
|
|
DOWNLOAD_SRC_BIN := *_download_v*.bin
|
|
DOWNLOAD_BIN := download.bin
|
|
IDBLOCK_IMG := idblock.img
|
|
IDBLOCK_SRC_BIN := *_idblock_v*.img
|
|
UBOOT_COMPILE_MAKE := $(UBOOT_DIR)/make.sh
|
|
|
|
ifneq ($(SYSDRV_UBOOT_RKBIN_OVERLAY_INI),)
|
|
UBOOT_COMPILE_MAKE_OPTS ?= --spl-new $(SYSDRV_UBOOT_RKBIN_OVERLAY_INI)
|
|
else
|
|
UBOOT_COMPILE_MAKE_OPTS ?= --spl-new
|
|
endif
|
|
|
|
UBOOT_CFG ?=
|
|
UBOOT_CFG_FRAGMENT ?=
|
|
|
|
ifeq ($(SYSDRV_BUILD_RECOVERY),y)
|
|
BUSYBOX_CFG := config_tiny_arm
|
|
endif
|
|
BUSYBOX_CFG ?= config_normal
|
|
BUSYBOX_VER ?= busybox-1.36.1
|
|
BUSYBOX_DIR := $(SYSDRV_DIR)/source/busybox
|
|
SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR ?= $(BUSYBOX_DIR)/objs_$(BUSYBOX_CFG)
|
|
|
|
TOOLCHAIN_RUNTIME_LIB_C:=lib.tar.bz2
|
|
|
|
EXT4_TOOL:=mkfs_ext4.sh
|
|
UBI_TOOL:=mkfs_ubi.sh
|
|
SQUASHFS_TOOL:=mkfs_squashfs.sh
|
|
JFFS2_TOOL:=mkfs_jffs2.sh
|
|
EROFS_TOOL:=mkfs_erofs.sh
|
|
INITRAMFS_TOOL:=mkfs_initramfs.sh
|
|
|
|
export OUT_BOARD:=board_$(SYSDRV_LIB_TYPE)_$(CHIP)
|
|
export OUT_IMAGE:=image_$(SYSDRV_LIB_TYPE)_$(CHIP)
|
|
export OUT_ROOTFS:=rootfs_$(SYSDRV_LIB_TYPE)_$(CHIP)
|
|
|
|
SYSDRV_DIR_OUT_IMAGE := $(SYSDRV_DIR)/out/$(OUT_IMAGE)
|
|
SYSDRV_DIR_OUT_BOARD := $(SYSDRV_DIR)/out/bin/$(OUT_BOARD)
|
|
SYSDRV_DIR_OUT_PC := $(SYSDRV_DIR)/out/bin/pc
|
|
SYSDRV_DIR_OUT_ROOTFS:=$(SYSDRV_DIR)/out/$(OUT_ROOTFS)
|
|
|
|
SYSDRV_KERNEL_MOD_PATH:=$(SYSDRV_DIR)/out/kernel_drv_ko
|
|
SYSDRV_ROOTFS_OUT_IMAGE := $(SYSDRV_DIR_OUT_IMAGE)/rootfs_base.img
|
|
SYSDRV_UBOOT_ENV_CFG_FILE :=$(SYSDRV_DIR_OUT_IMAGE)/.env.txt
|
|
|
|
SYSDRV_RAMDISK_DIR ?= $(SYSDRV_DIR_OUT_BOARD)
|
|
|
|
export SYSDRV_DIR_OUT_PC
|
|
export SYSDRV_DIR_OUT_BOARD
|
|
export SYSDRV_DIR_OUT_ROOTFS
|
|
|
|
export SYSDRV_KERNEL_MOD_PATH
|
|
################################################################################
|
|
## Check Configuraton
|
|
################################################################################
|
|
ifeq ($(ROOTFS_PART_SIZE),0)
|
|
$(warning Check ROOTFS_PART_SIZE is 0 on $(CONFIG_SYSDRV_PARTITION))
|
|
# default build rootfs partition size 32MB
|
|
ROOTFS_PART_SIZE := 32*0x100000
|
|
endif
|
|
|
|
ifeq ($(SYSDRV_DRIVER_MODULE), y)
|
|
sysdrv_kernel_driver_rockit_dir := $(shell test -d $(SYSDRV_DIR)/drv_ko/rockit/rockit-ko && \
|
|
echo "../../../drv_ko/rockit/rockit-ko" ||\
|
|
echo "../../../drv_ko/rockit/release_rockit-ko_rv1106_arm_asm" \
|
|
)
|
|
sysdrv_kernel_driver_kmpp_dir := $(shell test -d $(SYSDRV_DIR)/drv_ko/kmpp/kmpp && \
|
|
echo "../../../drv_ko/kmpp/kmpp" ||\
|
|
echo "../../../drv_ko/kmpp/release_kmpp_rv1106_arm_asm" \
|
|
)
|
|
endif
|
|
|
|
################################################################################
|
|
## set task
|
|
################################################################################
|
|
all: uboot kernel rootfs env
|
|
|
|
clean: uboot_clean kernel_clean busybox_clean pctools_clean boardtools_clean rootfs_clean drv_clean
|
|
|
|
distclean: clean out_clean
|
|
|
|
info:
|
|
@echo -e "$(C_YELLOW)-------------------------------------------------------------------------$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW)$(CHIP) sysdrv info:"
|
|
@echo -e "$(C_YELLOW) BOOT_MEDIUM: $(BOOT_MEDIUM) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) KERNEL_CFG: $(KERNEL_CFG) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) KERNEL_DTS: $(KERNEL_DTS) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) KERNEL_CFG_FRAGMENT: $(KERNEL_CFG_FRAGMENT)$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) KERNEL_CMDLINE_FRAGMENT: $(KERNEL_CMDLINE_FRAGMENT)$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) UBOOT_CFG: $(UBOOT_CFG) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) UBOOT_CFG_FRAGMENT: $(UBOOT_CFG_FRAGMENT) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) UBOOT_ENV_SIZE: $(ENV_PART_SIZE) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) UBOOT_ENV_OFFSET: $(ENV_PART_OFFSET) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) ROOTFS_PART_SIZE: $(ROOTFS_PART_SIZE) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) ROOTFS_PART_NUM: $(ROOTFS_PART_NUM) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) SYSDRV_PARTITION: $(CONFIG_SYSDRV_PARTITION) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) C LIBRARY TYPE: $(SYSDRV_LIB_TYPE) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) <> kernel compile: $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) cd $(KERNEL_DIR)$(C_NORMAL)"
|
|
ifeq ($(SYSDRV_DRIVER_MODULE), y)
|
|
@echo -e "$(C_YELLOW) ln -sf $(sysdrv_kernel_driver_rockit_dir) drivers/rockit-ko $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) ln -sf $(sysdrv_kernel_driver_kmpp_dir) drivers/kmpp $(C_NORMAL)"
|
|
@echo -en "$(C_YELLOW)"
|
|
@echo -n " test $$"
|
|
@echo -n "(grep -wq \"+=.*rockit-ko\" drivers/Makefile; echo $$"
|
|
@echo -n "? ) -eq 0 || echo \"obj-\\$$"
|
|
@echo "(CONFIG_ROCKCHIP_THUNDER_BOOT) += rockit-ko/\" >> drivers/Makefile"
|
|
@echo -n " test $$"
|
|
@echo -n "(grep -wq \"+=.*kmpp\" drivers/Makefile; echo $$"
|
|
@echo -n "? ) -eq 0 || echo \"obj-\\$$"
|
|
@echo "(CONFIG_ROCKCHIP_THUNDER_BOOT) += kmpp/\" >> drivers/Makefile"
|
|
@echo -en "$(C_NORMAL)"
|
|
endif
|
|
@echo -e "$(C_YELLOW) $(MAKE) O=$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR) -C $(KERNEL_DIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) $(KERNEL_CFG) $(KERNEL_CFG_FRAGMENT) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) $(MAKE) O=$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR) -C $(KERNEL_DIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) BOOT_ITS=$(KERNEL_DIR)/boot.its $(KERNEL_DTS:dts=img) -j$(SYSDRV_JOBS)$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) <> kernel out image: boot.img $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) <> uboot compile: $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) cd $(UBOOT_DIR)$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) $(MAKE) $(UBOOT_CFG) $(UBOOT_CFG_FRAGMENT)$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) ./make.sh $(UBOOT_COMPILE_MAKE_OPTS) CROSS_COMPILE=$(CROSS_COMPILE) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) cp -fv ./$(IDBLOCK_SRC_BIN) idblock.img $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) cp -fv ./$(DOWNLOAD_SRC_BIN) $(DOWNLOAD_BIN) $(C_NORMAL)"
|
|
ifeq ($(UBOOT_NAND_PAGE_SIZE),4096)
|
|
@echo -e "$(C_YELLOW) $(RKBIN_DIR)/tools/programmer_image_tool -i $(UBOOT_DIR)/$(DOWNLOAD_SRC_BIN) -b $(UBOOT_NAND_BLOCK_SIZE) -p 4 -2 -t spinand -o $(SYSDRV_DIR_OUT_IMAGE) $(C_NORMAL)"
|
|
endif
|
|
@echo -e "$(C_YELLOW) <> uboot out image: uboot.img idblock.img $(DOWNLOAD_BIN) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW)-------------------------------------------------------------------------$(C_NORMAL)"
|
|
|
|
help:
|
|
@echo -e "$(C_YELLOW)-------------------------------------------------------------------------$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW)help: specified parameters: $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) BOOT_MEDIUM: emmc/spi_nor/spi_nand/slc_nand (default emmc) $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) KERNEL_DTS: $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) KERNEL_CFG: $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) KERNEL_CFG_FRAGMENT: $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) UBOOT_CFG: $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) UBOOT_CFG_FRAGMENT: $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW)$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW)e.g.:$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make BOOT_MEDIUM=emmc # default build uboot/kernel/rootfs $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW)$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make uboot [BOOT_MEDIUM=...] # build uboot $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make kernel [BOOT_MEDIUM=...] # build kernel $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make rootfs [BOOT_MEDIUM=...] # build rootfs $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make rootfs_ubi # force package ubi rootfs image$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make rootfs_ext4 # force package ext4 rootfs image$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make rootfs_jffs2 # force package jffs2 rootfs image$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make rootfs_squashfs # force package squashfs rootfs image$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make rootfs_erofs # force package erofs rootfs image$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make rootfs_initramfs # force package initramfs rootfs image$(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW) make busybox_menuconfig # config busybox $(C_NORMAL)"
|
|
@echo -e "$(C_YELLOW)------------------------------------------------------------------------- $(C_NORMAL)"
|
|
|
|
################################################################################
|
|
# prepare
|
|
################################################################################
|
|
prepare:
|
|
@mkdir -p $(SYSDRV_DIR_OUT_IMAGE)
|
|
@mkdir -p $(SYSDRV_DIR_OUT_BOARD)
|
|
@mkdir -p $(SYSDRV_DIR_OUT_PC)
|
|
@mkdir -p $(SYSDRV_DIR_OUT_ROOTFS)
|
|
|
|
##########################################################################################
|
|
# build uboot
|
|
##########################################################################################
|
|
uboot: prepare
|
|
@echo -e "$(C_GREEN) ==sysdrv== build uboot $(C_NORMAL)"
|
|
@$(MAKE) -C $(UBOOT_DIR) $(UBOOT_CFG) $(UBOOT_CFG_FRAGMENT) || exit 1
|
|
pushd $(UBOOT_DIR);$(UBOOT_COMPILE_MAKE) $(UBOOT_COMPILE_MAKE_OPTS) CROSS_COMPILE=$(CROSS_COMPILE) || exit 1;popd
|
|
$(AT)test ! -f $(UBOOT_DIR)/uboot.img || cp -fv $(UBOOT_DIR)/uboot.img $(SYSDRV_DIR_OUT_IMAGE)
|
|
ifeq ($(UBOOT_NAND_PAGE_SIZE),4096)
|
|
$(RKBIN_DIR)/tools/programmer_image_tool -i $(UBOOT_DIR)/$(DOWNLOAD_SRC_BIN) \
|
|
-b $(UBOOT_NAND_BLOCK_SIZE) -p 4 -2 -t spinand -o $(SYSDRV_DIR_OUT_IMAGE) || exit 1
|
|
else
|
|
$(AT)cp -fv $(UBOOT_DIR)/$(IDBLOCK_SRC_BIN) $(SYSDRV_DIR_OUT_IMAGE)/$(IDBLOCK_IMG)
|
|
endif
|
|
$(AT)cp -fv $(UBOOT_DIR)/$(DOWNLOAD_SRC_BIN) $(SYSDRV_DIR_OUT_IMAGE)/$(DOWNLOAD_BIN)
|
|
$(AT)pushd $(UBOOT_DIR);tar cjf $(SYSDRV_DIR_OUT_BOARD)/uboot.debug.tar.bz2 \
|
|
./spl/u-boot-spl \
|
|
./u-boot \
|
|
./u-boot.map \
|
|
./spl/u-boot-spl.bin \
|
|
./u-boot.bin; popd;
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_IMAGE_PATH), \
|
|
$(SYSDRV_DIR_OUT_IMAGE)/$(IDBLOCK_IMG) \
|
|
$(SYSDRV_DIR_OUT_IMAGE)/uboot.img \
|
|
$(SYSDRV_DIR_OUT_IMAGE)/$(DOWNLOAD_BIN))
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_BOARD_BIN_PATH), \
|
|
$(SYSDRV_DIR_OUT_BOARD)/uboot.debug.tar.bz2)
|
|
|
|
uboot_clean:
|
|
pushd $(UBOOT_DIR);$(MAKE) CROSS_COMPILE=$(CROSS_COMPILE) distclean >/dev/null;popd
|
|
|
|
##########################################################################################
|
|
# build kernel
|
|
##########################################################################################
|
|
kernel: prepare
|
|
@echo -e "$(C_GREEN) ==sysdrv== build kernel $(C_NORMAL)"
|
|
ifeq ($(SYSDRV_DRIVER_MODULE), y)
|
|
$(call MACRO_CHK_DRIVER_MODULE, $(SYSDRV_DIR)/drv_ko/rockit/, rockit-ko)
|
|
$(call MACRO_CHK_DRIVER_MODULE, $(SYSDRV_DIR)/drv_ko/kmpp/, kmpp)
|
|
endif
|
|
$(AT)test ! -f $(KERNEL_DIR)/vmlinux || make -C $(KERNEL_DIR) distclean
|
|
@rm -rf $(KERNEL_DTB)
|
|
$(MAKE) O=$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR) -C $(KERNEL_DIR) ARCH=$(ARCH) \
|
|
CROSS_COMPILE=$(CROSS_COMPILE) $(KERNEL_CFG) $(KERNEL_CFG_FRAGMENT) || exit 1
|
|
$(MAKE) O=$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR) -C $(KERNEL_DIR) ARCH=$(ARCH) \
|
|
CROSS_COMPILE=$(CROSS_COMPILE) $(KERNEL_DTS:dts=img) BOOT_ITS=$(KERNEL_DIR)/boot.its -j$(SYSDRV_JOBS) || exit 1
|
|
ifeq ($(SYSDRV_DRIVER_MODULE), y)
|
|
$(call MACRO_CLEAN_DRIVER_MODULE, rockit-ko)
|
|
$(call MACRO_CLEAN_DRIVER_MODULE, kmpp)
|
|
endif
|
|
ifeq ($(SYSDRV_KERNEL_INSTALL_BOOTIMG),y)
|
|
cp -fv $(SYSDRV_KERNEL_OBJS_OUTPUT_DIR)/boot.img $(SYSDRV_DIR_OUT_IMAGE)/boot.img
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_IMAGE_PATH), $(SYSDRV_DIR_OUT_IMAGE)/boot.img)
|
|
endif
|
|
# Start install kernel drivers
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(SYSDRV_RAMDISK_DIR), \
|
|
$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR)/arch/$(ARCH)/boot/Image* \
|
|
$(KERNEL_DTB) \
|
|
$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR)/arch/$(ARCH)/boot/zImage \
|
|
$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR)/resource.img)
|
|
cp -fv $(SYSDRV_KERNEL_OBJS_OUTPUT_DIR)/vmlinux $(SYSDRV_DIR_OUT_BOARD)
|
|
cp -fv $(KERNEL_DTB) $(SYSDRV_DIR_OUT_BOARD)
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_BOARD_BIN_PATH), \
|
|
$(SYSDRV_DIR_OUT_BOARD)/$(KERNEL_DTS:dts=dtb) $(SYSDRV_DIR_OUT_BOARD)/vmlinux)
|
|
|
|
kernel_clean:
|
|
$(MAKE) O=$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR) -C $(KERNEL_DIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) distclean
|
|
@-rm -rf $(SYSDRV_DIR)/source/objs_*
|
|
@-rm -rf $(SYSDRV_KERNEL_MOD_PATH) $(KERNEL_DIR_DRV_KO)
|
|
|
|
##########################################################################################
|
|
# prepare rootfs
|
|
##########################################################################################
|
|
rootfs_prepare: prepare
|
|
@echo -e "$(C_GREEN) ==sysdrv== prepare rootfs $(C_NORMAL)"
|
|
tar xfv $(SYSDRV_DIR)/tools/board/rootfs_script_struct.tar -C $(SYSDRV_DIR_OUT_ROOTFS)
|
|
cp -rf $(SYSDRV_DIR)/tools/board/rootfs/* $(SYSDRV_DIR_OUT_ROOTFS)
|
|
tar xjf $(TOOLCHAIN_DIR)/$(TOOLCHAIN_RUNTIME_LIB)/$(TOOLCHAIN_RUNTIME_LIB_C) -C $(SYSDRV_DIR_OUT_ROOTFS)
|
|
pushd $(SYSDRV_DIR_OUT_ROOTFS)/lib/ ; mv -fv \
|
|
libasan_preinit.o \
|
|
libasan.so* \
|
|
libtsan.so* \
|
|
libubsan.so* \
|
|
libSegFault.so \
|
|
libmemusage.so* \
|
|
libpcprofile.so* \
|
|
libthread_db*.so* \
|
|
libBrokenLocale* \
|
|
libinproctrace.so \
|
|
$(SYSDRV_DIR_OUT_BOARD); \
|
|
popd
|
|
|
|
##########################################################################################
|
|
# build busybox
|
|
##########################################################################################
|
|
busybox_menuconfig:
|
|
@$(MAKE) O=$(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) menuconfig \
|
|
-C $(BUSYBOX_DIR)/$(BUSYBOX_VER)/
|
|
@cp -f $(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR)/.config \
|
|
$(SYSDRV_DIR)/tools/board/busybox/$(BUSYBOX_CFG);
|
|
|
|
busybox: prepare
|
|
@echo -e "$(C_GREEN) ==sysdrv== build busybox $(C_NORMAL)"
|
|
test -f $(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR)/_install/bin/busybox || (\
|
|
rm $(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR) -rf ;\
|
|
mkdir -p $(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR) ;\
|
|
tar xjf $(SYSDRV_DIR)/tools/board/busybox/$(BUSYBOX_VER).tar.bz2 -C $(BUSYBOX_DIR) ;\
|
|
cp $(SYSDRV_DIR)/tools/board/busybox/$(BUSYBOX_CFG) $(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR)/.config ;\
|
|
cp -fv $(SYSDRV_DIR)/tools/board/busybox/*.patch $(SYSDRV_DIR)/tools/board/busybox/busybox.patch.sh $(BUSYBOX_DIR)/$(BUSYBOX_VER)/;\
|
|
pushd $(BUSYBOX_DIR)/$(BUSYBOX_VER)/;$(SHELL) ./busybox.patch.sh ; $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -j$(SYSDRV_JOBS) O=$(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR)/ || exit 1; popd ;\
|
|
CFLAGS="$(SYSDRV_CROSS_CFLAGS)" \
|
|
$(MAKE) CROSS_COMPILE=$(CROSS_COMPILE) -C $(BUSYBOX_DIR)/$(BUSYBOX_VER) install O=$(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR) || exit 1;\
|
|
);
|
|
ifneq ($(OUTPUT_SYSDRV_RAMDISK_TINY_ROOTFS_DIR),)
|
|
# tar xf $(SYSDRV_DIR)/tools/board/rootfs_script.tar -C $(OUTPUT_SYSDRV_RAMDISK_TINY_ROOTFS_DIR)
|
|
cp -rf $(SYSDRV_DIR)/tools/board/rootfs/* $(OUTPUT_SYSDRV_RAMDISK_TINY_ROOTFS_DIR)
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_SYSDRV_RAMDISK_TINY_ROOTFS_DIR), \
|
|
$(SYSDRV_DIR)/tools/board/busybox/init \
|
|
$(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR)/_install)
|
|
else
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(SYSDRV_DIR_OUT_ROOTFS), \
|
|
$(SYSDRV_DIR)/tools/board/busybox/init \
|
|
$(SYSDRV_BUSYBOX_OBJS_OUTPUT_DIR)/_install)
|
|
endif
|
|
|
|
busybox_clean:
|
|
$(AT)rm -rf $(BUSYBOX_DIR)/$(BUSYBOX_VER)
|
|
$(AT)rm -rf $(BUSYBOX_DIR)/objs_*
|
|
|
|
##########################################################################################
|
|
# build pc tools
|
|
##########################################################################################
|
|
include $(SYSDRV_DIR)/tools/pc/Makefile.tools.pc.mk
|
|
pctools: prepare tools_pc-builds
|
|
@echo -e "$(C_GREEN) ==sysdrv== build tools which run on pc $(C_NORMAL)"
|
|
-chmod a+x $(SYSDRV_DIR_OUT_PC)/*
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_ROOTFS_TOOLS_DIR), $(SYSDRV_DIR_OUT_PC), SELF)
|
|
|
|
pctools_clean:
|
|
@echo -e "$(C_GREEN) ==sysdrv== clean tools which run on pc $(C_NORMAL)"
|
|
|
|
##########################################################################################
|
|
# build board tools
|
|
##########################################################################################
|
|
include $(SYSDRV_DIR)/tools/board/Makefile.tools.board.mk
|
|
boardtools: tools_board-builds
|
|
@echo -e "$(C_GREEN) ==sysdrv== build tools which run on board $(C_NORMAL)"
|
|
|
|
boardtools_clean: tools_board-clean
|
|
@echo -e "$(C_GREEN) ==sysdrv== build $@ done$(C_NORMAL)"
|
|
|
|
##########################################################################################
|
|
# build driver ko
|
|
##########################################################################################
|
|
drv: prepare
|
|
@echo -e "$(C_GREEN) ==sysdrv== build drv $(C_NORMAL)"
|
|
@-rm -rf $(SYSDRV_KERNEL_MOD_PATH) $(KERNEL_DIR_DRV_KO)
|
|
@-mkdir -p $(SYSDRV_KERNEL_MOD_PATH)
|
|
$(MAKE) -C $(KERNEL_DIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -j$(SYSDRV_JOBS) \
|
|
O=$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR) \
|
|
modules
|
|
$(MAKE) -C $(KERNEL_DIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -j$(SYSDRV_JOBS) \
|
|
O=$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR) \
|
|
modules_install INSTALL_MOD_STRIP=1 \
|
|
INSTALL_MOD_PATH=$(KERNEL_DIR_DRV_KO)
|
|
$(AT)find $(KERNEL_DIR_DRV_KO)/lib/modules/*/kernel \
|
|
-name "*.ko" -type f -exec cp -fav {} $(SYSDRV_KERNEL_MOD_PATH) \;
|
|
@test ! -d drv_ko || ($(MAKE) O=$(SYSDRV_KERNEL_OBJS_OUTPUT_DIR) -C $(SYSDRV_DIR)/drv_ko KERNEL_DRV_KO_INSTALL_PATH=$(SYSDRV_KERNEL_MOD_PATH))
|
|
|
|
echo -e "$(C_GREEN) ==sysdrv== generating modules.dep $(C_NORMAL)"
|
|
find $(KERNEL_DIR_DRV_KO)/lib/modules/* \
|
|
-name "modules.dep" -type f -exec cp -fav {} $(SYSDRV_KERNEL_MOD_PATH) \;
|
|
awk \
|
|
'{gsub(/[^\/ ]+\//, ""); print}' $(SYSDRV_KERNEL_MOD_PATH)/modules.dep > $(SYSDRV_KERNEL_MOD_PATH)/modules.dep.tmp && \
|
|
cp -fv $(SYSDRV_KERNEL_MOD_PATH)/modules.dep $(SYSDRV_KERNEL_MOD_PATH)/modules.dep.orig && \
|
|
mv -fv $(SYSDRV_KERNEL_MOD_PATH)/modules.dep.tmp $(SYSDRV_KERNEL_MOD_PATH)/modules.dep
|
|
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_ROOTFS_SOURCE_DIR), $(SYSDRV_KERNEL_MOD_PATH), SELF)
|
|
|
|
drv_clean:
|
|
@test ! -d drv_ko || $(MAKE) -C $(SYSDRV_DIR)/drv_ko clean
|
|
@-rm -rf $(SYSDRV_KERNEL_MOD_PATH) $(KERNEL_DIR_DRV_KO)
|
|
@echo -e "$(C_GREEN) ==sysdrv== clean drv $(C_NORMAL)"
|
|
|
|
##########################################################################################
|
|
# build rootfs
|
|
##########################################################################################
|
|
|
|
rootfs: rootfs_prepare pctools busybox boardtools drv
|
|
@echo -e "$(C_GREEN) ==sysdrv== build rootfs $(C_NORMAL)"
|
|
make -C $(SYSDRV_DIR) strip
|
|
pushd $(SYSDRV_DIR)/out; \
|
|
tar cfv $(OUT_ROOTFS).tar $(OUT_ROOTFS); \
|
|
popd
|
|
@# RK_PARTITION_FS_TYPE_CFG is defined outside of sysdrv,
|
|
@# so if defined RK_PARTITION_FS_TYPE_CFG, we ignore SYSDRV_ROOTFS_BUILD_TARGET
|
|
@test "$(ROOTFS_PART_SIZE)" = "FAIL" || \
|
|
test "$(RK_PARTITION_FS_TYPE_CFG)x" != "x" || \
|
|
make -C $(SYSDRV_DIR) $(SYSDRV_ROOTFS_BUILD_TARGET)
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_ROOTFS_SOURCE_DIR), $(SYSDRV_DIR)/out/$(OUT_ROOTFS).tar )
|
|
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_ROOTFS_TOOLS_DIR), $(SYSDRV_DIR)/out/bin )
|
|
@echo -e "$(C_GREEN) ==sysdrv== finish sysdrv build $(C_NORMAL)"
|
|
|
|
strip:
|
|
ifeq ($(SYSDRV_BUILD_VERSION),RELEASE)
|
|
@echo -e "$(C_GREEN) ==sysdrv== strip files of rootfs $(C_NORMAL)"
|
|
$(call MAROC_STRIP_DEBUG_SYMBOL, $(SYSDRV_DIR_OUT_ROOTFS))
|
|
endif
|
|
|
|
rootfs_ubi:
|
|
@echo -e "$(C_GREEN) ==sysdrv== build ubi rootfs $(C_NORMAL)"
|
|
# build rootfs as follow:
|
|
# the pagesize = 2k, blocksize = 128k, part_size = 32M
|
|
# the pagesize = 2k, blocksize = 256k, part_size = 32M
|
|
# the pagesize = 4k, blocksize = 256k, part_size = 32M
|
|
# command format:
|
|
# $(UBI_TOOL) <source dir> <output dir> <partition size> <partition name> <fs type> <fs comp>"
|
|
$(SYSDRV_DIR_OUT_PC)/$(UBI_TOOL) $(SYSDRV_DIR_OUT_ROOTFS) $(SYSDRV_DIR_OUT_IMAGE) $(ROOTFS_PART_SIZE) rootfs $(SYSDRV_ROOTFS_FS_TYPE) $(SYSDRV_ROOTFS_FS_COMP)
|
|
|
|
rootfs_jffs2:
|
|
@echo -e "$(C_GREEN) ==sysdrv== build jffs2 rootfs $(C_NORMAL)"
|
|
# use for spi nor
|
|
$(SYSDRV_DIR_OUT_PC)/$(JFFS2_TOOL) $(SYSDRV_DIR_OUT_ROOTFS) $(SYSDRV_ROOTFS_OUT_IMAGE) $(ROOTFS_PART_SIZE)
|
|
|
|
rootfs_squashfs:
|
|
@echo -e "$(C_GREEN) ==sysdrv== build squashfs rootfs $(C_NORMAL)"
|
|
# SYSDRV_ROOTFS_FS_COMP support lz4|lzo|lzma|xz|gzip (default gzip)
|
|
$(SYSDRV_DIR_OUT_PC)/$(SQUASHFS_TOOL) $(SYSDRV_DIR_OUT_ROOTFS) $(SYSDRV_ROOTFS_OUT_IMAGE) $(SYSDRV_ROOTFS_FS_COMP)
|
|
|
|
rootfs_erofs:
|
|
@echo -e "$(C_GREEN) ==sysdrv== build erofs rootfs $(C_NORMAL)"
|
|
# SYSDRV_ROOTFS_FS_COMP support lz4|lz4hc (default lz4hc)
|
|
$(SYSDRV_DIR_OUT_PC)/$(EROFS_TOOL) $(SYSDRV_DIR_OUT_ROOTFS) $(SYSDRV_ROOTFS_OUT_IMAGE) $(SYSDRV_ROOTFS_FS_COMP)
|
|
|
|
rootfs_ext4:
|
|
@echo -e "$(C_GREEN) ==sysdrv== build ext4 rootfs $(C_NORMAL)"
|
|
$(SYSDRV_DIR_OUT_PC)/$(EXT4_TOOL) $(SYSDRV_DIR_OUT_ROOTFS) $(SYSDRV_ROOTFS_OUT_IMAGE) $(ROOTFS_PART_SIZE)
|
|
|
|
rootfs_initramfs:
|
|
@echo -e "$(C_GREEN) ==sysdrv== build initramfs rootfs $(C_NORMAL)"
|
|
$(SYSDRV_DIR_OUT_PC)/$(INITRAMFS_TOOL) $(SYSDRV_DIR_OUT_ROOTFS) $(SYSDRV_ROOTFS_OUT_IMAGE)
|
|
|
|
rootfs_clean:
|
|
$(AT)rm $(SYSDRV_DIR_OUT_ROOTFS)/ -rf
|
|
|
|
##########################################################################################
|
|
# build env.img
|
|
##########################################################################################
|
|
env: prepare
|
|
@$(MAKE) -C $(SYSDRV_DIR)/tools/pc/uboot_tools
|
|
ifeq ($(BOOT_MEDIUM),emmc)
|
|
@echo "blkdevparts=mmcblk0:$(CONFIG_SYSDRV_PARTITION)" > $(SYSDRV_UBOOT_ENV_CFG_FILE)
|
|
@test "$(ROOTFS_PART_NUM)" = "FAIL" || \
|
|
echo "sys_bootargs=root=/dev/mmcblk0p$(ROOTFS_PART_NUM)" >> $(SYSDRV_UBOOT_ENV_CFG_FILE)
|
|
endif
|
|
ifeq ($(BOOT_MEDIUM),sdmmc)
|
|
@echo "blkdevparts=mmcblk1:$(CONFIG_SYSDRV_PARTITION)" > $(SYSDRV_UBOOT_ENV_CFG_FILE)
|
|
@test "$(ROOTFS_PART_NUM)" = "FAIL" || \
|
|
echo "sys_bootargs=root=/dev/mmcblk1p$(ROOTFS_PART_NUM)" >> $(SYSDRV_UBOOT_ENV_CFG_FILE)
|
|
endif
|
|
ifeq ($(BOOT_MEDIUM),spi_nor)
|
|
@echo "mtdparts=sfc_nor:$(CONFIG_SYSDRV_PARTITION)" > $(SYSDRV_UBOOT_ENV_CFG_FILE)
|
|
@test "$(ROOTFS_PART_NUM)" = "FAIL" || \
|
|
echo "sys_bootargs=root=/dev/mtdblock$(ROOTFS_PART_NUM)" >> $(SYSDRV_UBOOT_ENV_CFG_FILE)
|
|
endif
|
|
ifneq ($(findstring $(BOOT_MEDIUM),spi_nand slc_nand),)
|
|
@echo "mtdparts=rk-nand:$(CONFIG_SYSDRV_PARTITION)" > $(SYSDRV_UBOOT_ENV_CFG_FILE)
|
|
@test "$(ROOTFS_PART_NUM)" = "FAIL" || \
|
|
echo "sys_bootargs=root=ubi.mtd=$(ROOTFS_PART_NUM)" >> $(SYSDRV_UBOOT_ENV_CFG_FILE)
|
|
endif
|
|
ifeq ($(findstring FAIL,$(ENV_PART_SIZE)),)
|
|
$(SYSDRV_DIR_OUT_PC)/mkenvimage -s $(ENV_PART_SIZE) -p 0x0 -o $(SYSDRV_DIR_OUT_IMAGE)/env.img $(SYSDRV_UBOOT_ENV_CFG_FILE)
|
|
endif
|
|
|
|
##########################################################################################
|
|
# clean out
|
|
##########################################################################################
|
|
out_clean:
|
|
@rm $(SYSDRV_DIR)/out -rf
|
|
|
|
# printvars prints all the variables currently defined in our
|
|
# Makefiles. Alternatively, if a non-empty VARS variable is passed,
|
|
# only the variables matching the make pattern passed in VARS are
|
|
# displayed.
|
|
.PHONY: printvars
|
|
printvars:
|
|
@:$(foreach V, \
|
|
$(sort $(if $(VARS),$(filter $(VARS),$(.VARIABLES)),$(.VARIABLES))), \
|
|
$(if $(filter-out environment% default automatic, \
|
|
$(origin $V)), \
|
|
$(if $(QUOTED_VARS),\
|
|
$(info $V='$(subst ','\'',$(if $(RAW_VARS),$(value $V),$($V)))'), \
|
|
$(info $V=$(if $(RAW_VARS),$(value $V),$($V))))))
|