aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/zynq/image
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2016-07-28 14:19:16 +0200
committerJo-Philipp Wich <jo@mein.io>2016-10-05 01:18:02 +0200
commita1248daddfa89134822be2f1db02bd8548967e8a (patch)
treec259ed875d30df0d3f99d3ea9a7ce6a775283c9d /target/linux/zynq/image
parent3c4858eeb2bbb3107f87bb3be07d5c172c8e0ef9 (diff)
downloadupstream-a1248daddfa89134822be2f1db02bd8548967e8a.tar.gz
upstream-a1248daddfa89134822be2f1db02bd8548967e8a.tar.bz2
upstream-a1248daddfa89134822be2f1db02bd8548967e8a.zip
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@mein.io>
Diffstat (limited to 'target/linux/zynq/image')
-rw-r--r--target/linux/zynq/image/Makefile86
1 files changed, 38 insertions, 48 deletions
diff --git a/target/linux/zynq/image/Makefile b/target/linux/zynq/image/Makefile
index 4c85bc283d..a4400c7287 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))