On 29/07/2016 12:01 AM, Jo-Philipp Wich wrote:
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.
Can you check if you still have the build issue if you enabled the
CONFIG_TARGET_ROOTFS_CPIOGZ options
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.
nice work.
Signed-off-by: Jo-Philipp Wich <j...@mein.io>
---
target/linux/zynq/Makefile | 2 +-
target/linux/zynq/image/Makefile | 86 ++++++++++++++++++----------------------
2 files changed, 39 insertions(+), 49 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.m...@gamil.com>
diff --git a/target/linux/zynq/image/Makefile b/target/linux/zynq/image/Makefile
index 4c85bc2..4452787 100644
--- a/target/linux/zynq/image/Makefile
+++ b/target/linux/zynq/image/Makefile
@@ -11,33 +11,33 @@ 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)
-
- $(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,\
- $(BIN_DIR)/$(IMG_PREFIX)-system.dtb)
+# $(1): rootfs contents directory
+define Image/mkfs/cpio
should not this be Image/mkfs/cpiogz as you use gzip
+ ( cd $(call mkfs_target_dir,$(1))/; find . | cpio -o -H newc | gzip -9n
> $@ )
+endef
I don't think you need to add define Image/mkfs/cpio. The cpio.gz should
be there if you enable CONFIG_TARGET_ROOTFS_TARGZ
+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 $(KDIR)/root.cpio $@.new
+ mv $@.new $@
+endef
I think the problem that needs to be addressed is to setup correct cpio
image base on the config options.
+# $(1): dts file basename
+define Build/dtb
+ $(call Image/BuildDTB,$(DTS_DIR)/$(1).dts,$@.dtb)
+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) \
+ -D $(1) -o $@.its -k $(KDIR)/zImage -d $@.dtb \
+ -C none -a $(KERNEL_LOADADDR) -e $(KERNEL_ENTRY) \
-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
+ -r $(KDIR)/root.cpio -z gzip
-r and -z options need to be set base on the config options.
+ PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@
endef
#################################################
@@ -46,36 +46,26 @@ 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)
-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)
+KERNEL_ENTRY=0x8000
+
+TARGET_FILESYSTEMS += cpio
+
+# $(1): uppercase profile name
+# $(2): lowercase profile name
+define ZynqDevice
+ define Device/$(1)
+ KERNEL := kernel-bin | uImage none
+ KERNEL_NAME = zImage
+ IMAGES := uramdisk.image.gz fit.itb
+ IMAGE/uramdisk.image.gz := uRamdisk
+ IMAGE/fit.itb := dtb zynq-$(2) | fit $(2)
+ IMAGE_NAME = $$$$(IMG_PREFIX)-$(2)-$$$$(2)
+ endef
+ TARGET_DEVICES += $(1)
endef
-define Image/BuildKernel
- $(eval $(call Device/$(PROFILE)))
- $(call Image/boot-imgs)
-endef
+$(eval $(call ZynqDevice,ZC702,zc702))
+$(eval $(call ZynqDevice,ZED,zed))
+$(eval $(call ZynqDevice,ZYBO,zybo))
$(eval $(call BuildImage))
nice work on cleaning it up.
Thanks.
Jason
_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev