[source] zynq: convert to new image build code

LEDE Commits lede-commits at lists.infradead.org
Tue Oct 4 16:18:30 PDT 2016


jow pushed a commit to source.git, branch master:
https://git.lede-project.org/a1248daddfa89134822be2f1db02bd8548967e8a

commit a1248daddfa89134822be2f1db02bd8548967e8a
Author: Jo-Philipp Wich <jo at mein.io>
AuthorDate: Thu Jul 28 14:19:16 2016 +0200

    zynq: convert to new image build code
    
    Convert the Zynq target to use the new image build code in order to fix
    broken image generation after 9945a1dca5bb6bc522393f7583baf3a64df6ce11
    changed the handling of CPIO images.
    
    Also remove the misapplied ubifs feature flag since the image generation is
    not using UBIFS for building FIT images.
    
    As part of the conversion, move the DTB building and the uImage ramdisk
    generation into separate build steps which can be generalized and shared
    with other targets, like APM821xx, in the long run.
    
    Also remove the legacy profile declarations and use new-style per-device
    profiles which will allow different package sets per image in the future.
    
    Signed-off-by: Jo-Philipp Wich <jo at mein.io>
---
 target/linux/zynq/Makefile          |  2 +-
 target/linux/zynq/image/Makefile    | 86 ++++++++++++++++---------------------
 target/linux/zynq/profiles/zc702.mk | 16 -------
 target/linux/zynq/profiles/zed.mk   | 16 -------
 target/linux/zynq/profiles/zybo.mk  | 16 -------
 5 files changed, 39 insertions(+), 97 deletions(-)

diff --git a/target/linux/zynq/Makefile b/target/linux/zynq/Makefile
index 6495c59..a84f968 100644
--- a/target/linux/zynq/Makefile
+++ b/target/linux/zynq/Makefile
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/host.mk
 ARCH:=arm
 BOARD:=zynq
 BOARDNAME:=Xilinx Zynq 7000 SoCs
-FEATURES:=fpu gpio rtc usb usbgadget targz ubifs
+FEATURES:=fpu gpio rtc usb usbgadget targz
 CPU_TYPE:=cortex-a9
 CPU_SUBTYPE:=neon
 MAINTAINER:=Jason Wu <jason.wu.misc at gamil.com>
diff --git a/target/linux/zynq/image/Makefile b/target/linux/zynq/image/Makefile
index 4c85bc2..a4400c7 100644
--- a/target/linux/zynq/image/Makefile
+++ b/target/linux/zynq/image/Makefile
@@ -11,33 +11,32 @@ include $(INCLUDE_DIR)/image.mk
 # Images
 #################################################
 
-define Image/boot-imgs
-	# Copy zImage to BIN_DIR
-	$(CP) $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-zImage
-
-	$(call Image/BuildKernel/MkuImage, none, $(KERNEL_LOADADDR), \
-		$(KERNEL_ENTRY_POINT), $(KDIR)/zImage, \
-		$(BIN_DIR)/$(IMG_PREFIX)-uImage)
+# $(1): rootfs contents directory
+define Image/mkfs/cpio
+	( cd $(call mkfs_target_dir,$(1))/; find . | cpio -o -H newc | gzip -9n > $@ )
+endef
 
-	$(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,\
-		$(BIN_DIR)/$(IMG_PREFIX)-system.dtb)
+# $(1): zynq board id
+define Build/dtb
+	$(call Image/BuildDTB,$(DTS_DIR)/zynq-$(1).dts,$@.dtb)
+endef
 
+define Build/uRamdisk
 	# Create uboot cpio.gz
 	mkimage -A arm -T ramdisk -C gzip -n "$(PROFILE) OpenWRT rootfs" \
-		-d $(BIN_DIR)/$(IMG_PREFIX)-rootfs.cpio.gz \
-		$(BIN_DIR)/$(IMG_PREFIX)-uramdisk.image.gz
+		-d $(IMAGE_ROOTFS) $@.new
+	mv $@.new $@
+endef
 
+# $(1): FIT name/description
+define Build/fit
 	# create FIT image with rootfs
 	./mkits.sh \
-		-D $(DEVICE_LC) -o $(KDIR)/fit-$(DEVICE_LC).its -k $(KDIR)/zImage \
-		-d $(BIN_DIR)/$(IMG_PREFIX)-system.dtb \
-		-C none -a $(KERNEL_LOADADDR) -e $(KERNEL_ENTRY_POINT) \
-		-A $(ARCH) -v $(LINUX_VERSION) \
-		-r $(BIN_DIR)/$(IMG_PREFIX)-rootfs.cpio.gz -z gzip
-	PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/fit-$(DEVICE_LC).its $(KDIR)/fit-$(DEVICE_LC).itb
-	$(CP) $(KDIR)/fit-$(DEVICE_LC).itb $(BIN_DIR)/$(IMG_PREFIX)-fit.itb
-	ln -fs $(IMG_PREFIX)-fit.itb $(BIN_DIR)/fit.itb
+		-D $(1) -o $@.its -k $(IMAGE_KERNEL) -d $(IMAGE_KERNEL).dtb \
+		-C none -a $(KERNEL_LOADADDR) -e $(KERNEL_ENTRY) \
+		-A $(ARCH) -v $(LINUX_VERSION) -r $(IMAGE_ROOTFS) -z gzip
 
+	PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@
 endef
 
 #################################################
@@ -46,36 +45,27 @@ endef
 
 # default kernel load address
 KERNEL_LOADADDR=0x8000
-KERNEL_ENTRY_POINT=0x8000
-
-### Device macros ###
-define Device/Default
-	IMG_PREFIX := zynq
-	PROFILE_SANITIZED :=
-endef
-
-define Device/DefaultConfig
-	DEVICE_LC = $(1)
-	IMG_PREFIX = zynq-$(1)
-	DEVICE_DTS = zynq-$(1)
+KERNEL_ENTRY=0x8000
+
+TARGET_FILESYSTEMS += cpio
+
+# $(1): canonical device name
+# $(2): lowercase device id
+define ZynqDevice
+  define Device/$(1)
+	DEVICE_TITLE := $(1) development board
+	KERNEL := dtb $(2) | kernel-bin | uImage none
+	KERNEL_NAME = zImage
+	IMAGES := uramdisk.image.gz fit.itb
+	IMAGE/uramdisk.image.gz := uRamdisk
+	IMAGE/fit.itb := fit $(2)
+	IMAGE_NAME = $$$$(IMG_PREFIX)-$(2)-$$$$(2)
+  endef
+  TARGET_DEVICES += $(1)
 endef
 
-### ZC702 ###
-define Device/ZC702
-	$(call Device/DefaultConfig,zc702)
-endef
-
-define Device/ZED
-	$(call Device/DefaultConfig,zed)
-endef
-
-define Device/ZYBO
-	$(call Device/DefaultConfig,zybo)
-endef
-
-define Image/BuildKernel
-	$(eval $(call Device/$(PROFILE)))
-	$(call Image/boot-imgs)
-endef
+$(eval $(call ZynqDevice,ZC702,zc702))
+$(eval $(call ZynqDevice,ZedBoard,zed))
+$(eval $(call ZynqDevice,ZYBO,zybo))
 
 $(eval $(call BuildImage))
diff --git a/target/linux/zynq/profiles/zc702.mk b/target/linux/zynq/profiles/zc702.mk
deleted file mode 100644
index 9d3c972..0000000
--- a/target/linux/zynq/profiles/zc702.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/ZC702
-	NAME:=ZC702 development baord
-endef
-
-define Profile/ZC702/Description
-	Build firmware image for Xilinx Zynq ZC702 development board.
-endef
-
-$(eval $(call Profile,ZC702))
diff --git a/target/linux/zynq/profiles/zed.mk b/target/linux/zynq/profiles/zed.mk
deleted file mode 100644
index d8ff08b..0000000
--- a/target/linux/zynq/profiles/zed.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/ZED
-	NAME:=ZedBoard development baord
-endef
-
-define Profile/ZED/Description
-	Build firmware image for Avnet Digilent ZedBoard development board.
-endef
-
-$(eval $(call Profile,ZED))
diff --git a/target/linux/zynq/profiles/zybo.mk b/target/linux/zynq/profiles/zybo.mk
deleted file mode 100644
index dfe7e67..0000000
--- a/target/linux/zynq/profiles/zybo.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Copyright (C) 2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/ZYBO
-	NAME:=ZYBO development baord
-endef
-
-define Profile/ZYBO/Description
-	Build firmware image for Digilent ZYBO development board.
-endef
-
-$(eval $(call Profile,ZYBO))



More information about the lede-commits mailing list