diff options
-rw-r--r-- | include/image.mk | 7 | ||||
-rwxr-xr-x[-rw-r--r--] | scripts/mkits.sh (renamed from target/linux/imx6/files-3.10/scripts/mkits.sh) | 22 | ||||
-rw-r--r-- | target/linux/imx6/image/Makefile | 27 |
3 files changed, 35 insertions, 21 deletions
diff --git a/include/image.mk b/include/image.mk index 8f895a3..729929f 100644 --- a/include/image.mk +++ b/include/image.mk @@ -87,6 +87,13 @@ define Image/BuildKernel/MkuImageARM -n 'ARM OpenWrt Linux-$(LINUX_VERSION)' -d $(2) $(3) endef +define Image/BuildKernel/MkFIT + $(TOPDIR)/scripts/mkits.sh \ + -D $(1) -o $(KDIR)/fit-$(1).its -k $(2) -d $(3) -C $(4) -a $(5) -e $(6) \ + -A $(ARCH) -v $(LINUX_VERSION) + PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/fit-$(1).its $(KDIR)/fit-$(1)$(7).itb +endef + define Image/mkfs/jffs2/sub # FIXME: removing this line will cause strange behaviour in the foreach loop below $(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(3) --pad -e $(patsubst %k,%KiB,$(1)) -o $(KDIR)/root.jffs2-$(2) -d $(TARGET_DIR) -v 2>&1 1>/dev/null | awk '/^.+$$$$/' diff --git a/target/linux/imx6/files-3.10/scripts/mkits.sh b/scripts/mkits.sh index 3b02b69..c360c73 100644..100755 --- a/target/linux/imx6/files-3.10/scripts/mkits.sh +++ b/scripts/mkits.sh @@ -16,24 +16,26 @@ usage() { echo "Usage: `basename $0` -A arch -C comp -a addr -e entry" \ - "-v version -k kernel [-d dtb] -o its_file" + "-v version -k kernel [-D name -d dtb] -o its_file" echo -e "\t-A ==> set architecture to 'arch'" echo -e "\t-C ==> set compression type 'comp'" echo -e "\t-a ==> set load address to 'addr' (hex)" echo -e "\t-e ==> set entry point to 'entry' (hex)" echo -e "\t-v ==> set kernel version to 'version'" echo -e "\t-k ==> include kernel image 'kernel'" + echo -e "\t-D ==> human friendly Device Tree Blob 'name'" echo -e "\t-d ==> include Device Tree Blob 'dtb'" echo -e "\t-o ==> create output file 'its_file'" exit 1 } -while getopts ":A:C:a:d:e:k:o:v:" OPTION +while getopts ":A:a:C:D:d:e:k:o:v:" OPTION do case $OPTION in A ) ARCH=$OPTARG;; - C ) COMPRESS=$OPTARG;; a ) LOAD_ADDR=$OPTARG;; + C ) COMPRESS=$OPTARG;; + D ) DEVICE=$OPTARG;; d ) DTB=$OPTARG;; e ) ENTRY_ADDR=$OPTARG;; k ) KERNEL=$OPTARG;; @@ -51,16 +53,18 @@ if [ -z "${ARCH}" ] || [ -z "${COMPRESS}" ] || [ -z "${LOAD_ADDR}" ] || \ usage fi +ARCH_UPPER=`echo $ARCH | tr '[:lower:]' '[:upper:]'` + # Create a default, fully populated DTS file DATA="/dts-v1/; / { - description = \"Linux kernel ${VERSION}\"; + description = \"${ARCH_UPPER} OpenWrt FIT (Flattened Image Tree)\"; #address-cells = <1>; images { kernel@1 { - description = \"Linux Kernel ${VERSION}\"; + description = \"${ARCH_UPPER} OpenWrt Linux-${VERSION}\"; data = /incbin/(\"${KERNEL}\"); type = \"kernel\"; arch = \"${ARCH}\"; @@ -76,8 +80,8 @@ DATA="/dts-v1/; }; }; - fdt@1 { /* start fdt */ - description = \"Flattened Device Tree blob\"; + fdt@1 { + description = \"${ARCH_UPPER} OpenWrt ${DEVICE} device tree blob\"; data = /incbin/(\"${DTB}\"); type = \"flat_dt\"; arch = \"${ARCH}\"; @@ -88,13 +92,13 @@ DATA="/dts-v1/; hash@2 { algo = \"sha1\"; }; - }; /* end fdt */ + }; }; configurations { default = \"config@1\"; config@1 { - description = \"Default Linux kernel\"; + description = \"OpenWrt\"; kernel = \"kernel@1\"; fdt = \"fdt@1\"; }; diff --git a/target/linux/imx6/image/Makefile b/target/linux/imx6/image/Makefile index 0bcb85b..aad1527 100644 --- a/target/linux/imx6/image/Makefile +++ b/target/linux/imx6/image/Makefile @@ -11,22 +11,25 @@ BOARDS := \ imx6dl-wandboard \ imx6q-gw5400-a -# board-specific Flattened Image Tree -define mkfit - /bin/sh $(LINUX_DIR)/scripts/mkits.sh -A arm -C none -a $(2) -e $(2) \ - -v 'OpenWrt Linux-$(LINUX_VERSION)' \ - -d $(LINUX_DIR)/arch/arm/boot/dts/$(1).dtb -k $(LINUX_DIR)/arch/arm/boot/zImage \ - -o $(KDIR)/$(1)-uImage.its - PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/$(1)-uImage.its $(BIN_DIR)/openwrt-$(1)-uImage.itb -endef - # emit FIT images, DTB's and generic zImage define Image/BuildKernel $(foreach board,$(BOARDS), - $(call mkfit,$(board),0x10008000) - cp $(LINUX_DIR)/arch/arm/boot/dts/$(board).dtb $(BIN_DIR) + cp $(LINUX_DIR)/arch/arm/boot/dts/$(board).dtb $(BIN_DIR)/$(IMG_PREFIX)-$(board).dtb + + $(call Image/BuildKernel/MkFIT,$(board),$(KDIR)/zImage,$(BIN_DIR)/$(IMG_PREFIX)-$(board).dtb,none,0x10008000,0x10008000) + cp $(KDIR)/fit-$(board).itb $(BIN_DIR)/$(IMG_PREFIX)-$(board)-uImage.itb + + ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) + $(call Image/BuildKernel/MkFIT,$(board),$(KDIR)/zImage-initramfs,$(BIN_DIR)/$(IMG_PREFIX)-$(board).dtb,none,0x10008000,0x10008000,-initramfs) + cp $(KDIR)/fit-$(board)-initramfs.itb $(BIN_DIR)/$(IMG_PREFIX)-$(board)-uImage-initramfs.itb + endif ) - cp $(KDIR)/zImage $(BIN_DIR)/openwrt-$(BOARD)-zImage + + cp $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-zImage + + ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) + cp $(KDIR)/zImage-initramfs $(BIN_DIR)/$(IMG_PREFIX)-zImage-initramfs + endif endef # board-specific sysupgrade image |