diff --git a/target/linux/zynq/Makefile b/target/linux/zynq/Makefile index 35598441fc..a8bbefccc7 100644 --- a/target/linux/zynq/Makefile +++ b/target/linux/zynq/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk ARCH:=arm BOARD:=zynq BOARDNAME:=Xilinx Zynq 7000 SoCs -FEATURES:=fpu gpio rtc usb usbgadget targz source-only +FEATURES:=fpu gpio rtc usb usbgadget ramdisk targz source-only CPU_TYPE:=cortex-a9 CPU_SUBTYPE:=neon MAINTAINER:=Jason Wu @@ -24,7 +24,7 @@ KERNEL_PATCHVER:=4.4 include $(INCLUDE_DIR)/target.mk -KERNELNAME:=zImage dtbs +KERNELNAME:=Image dtbs DEFAULT_PACKAGES += uboot-envtools diff --git a/target/linux/zynq/image/Makefile b/target/linux/zynq/image/Makefile index a4400c7287..70fb00be69 100644 --- a/target/linux/zynq/image/Makefile +++ b/target/linux/zynq/image/Makefile @@ -8,64 +8,46 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/image.mk ################################################# -# Images +# Default and templates ################################################# -# $(1): rootfs contents directory -define Image/mkfs/cpio - ( cd $(call mkfs_target_dir,$(1))/; find . | cpio -o -H newc | gzip -9n > $@ ) +define Device/Default + PROFILES := Default + KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts) + KERNEL_INITRAMFS_PREFIX := $$(IMG_PREFIX)-$(1)-initramfs + KERNEL_PREFIX := $$(IMAGE_PREFIX) + KERNEL_LOADADDR := 0x8000 endef -# $(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 $(IMAGE_ROOTFS) $@.new - mv $@.new $@ -endef - -# $(1): FIT name/description -define Build/fit - # create FIT image with rootfs - ./mkits.sh \ - -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 $@ +define Device/FitImageGzip + KERNEL_SUFFIX := -fit-uImage.itb + KERNEL = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb + KERNEL_NAME := Image endef ################################################# # Devices ################################################# -# default kernel load address -KERNEL_LOADADDR=0x8000 -KERNEL_ENTRY=0x8000 - -TARGET_FILESYSTEMS += cpio +define Device/digilent_zynq-zybo + $(call Device/FitImageGzip) + DEVICE_TITLE := ZYBO Development Board + DEVICE_DTS := zynq-zybo +endef +TARGET_DEVICES += digilent_zynq-zybo -# $(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) +define Device/xlnx_zynq-zc702 + $(call Device/FitImageGzip) + DEVICE_TITLE := ZC702 Development Board + DEVICE_DTS := zynq-zc702 endef +TARGET_DEVICES += xlnx_zynq-zc702 -$(eval $(call ZynqDevice,ZC702,zc702)) -$(eval $(call ZynqDevice,ZedBoard,zed)) -$(eval $(call ZynqDevice,ZYBO,zybo)) +define Device/xlnx_zynq-zed + $(call Device/FitImageGzip) + DEVICE_TITLE := Zed Development Board + DEVICE_DTS := zynq-zed +endef +TARGET_DEVICES += xlnx_zynq-zed $(eval $(call BuildImage)) diff --git a/target/linux/zynq/image/mkits.sh b/target/linux/zynq/image/mkits.sh deleted file mode 100755 index 2b00d0fc43..0000000000 --- a/target/linux/zynq/image/mkits.sh +++ /dev/null @@ -1,150 +0,0 @@ -#!/bin/bash -# -# Licensed under the terms of the GNU GPL License version 2 or later. -# -# Author: Peter Tyser -# -# U-Boot firmware supports the booting of images in the Flattened Image -# Tree (FIT) format. The FIT format uses a device tree structure to -# describe a kernel image, device tree blob, ramdisk, etc. This script -# creates an Image Tree Source (.its file) which can be passed to the -# 'mkimage' utility to generate an Image Tree Blob (.itb file). The .itb -# file can then be booted by U-Boot (or other bootloaders which support -# FIT images). See doc/uImage.FIT/howto.txt in U-Boot source code for -# additional information on FIT images. -# - -usage() { - echo "Usage: `basename $0` -A arch -C comp -a addr -e entry" \ - "-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-r ==> include ramdisk" - echo -e "\t-z ==> ramdisk compression type" - echo -e "\t-o ==> create output file 'its_file'" - exit 1 -} - -while getopts ":A:a:C:D:d:e:k:o:v:r:z:" OPTION -do - case $OPTION in - A ) ARCH=$OPTARG;; - a ) LOAD_ADDR=$OPTARG;; - C ) COMPRESS=$OPTARG;; - D ) DEVICE=$OPTARG;; - d ) DTB=$OPTARG;; - e ) ENTRY_ADDR=$OPTARG;; - k ) KERNEL=$OPTARG;; - o ) OUTPUT=$OPTARG;; - v ) VERSION=$OPTARG;; - r ) RAMDISK=$OPTARG;; - z ) RD_COMPRESS=$OPTARG;; - * ) echo "Invalid option passed to '$0' (options:$@)" - usage;; - esac -done - -# Make sure user entered all required parameters -if [ -z "${ARCH}" ] || [ -z "${COMPRESS}" ] || [ -z "${LOAD_ADDR}" ] || \ - [ -z "${ENTRY_ADDR}" ] || [ -z "${VERSION}" ] || [ -z "${KERNEL}" ] || \ - [ -z "${OUTPUT}" ]; then - usage -fi - -ARCH_UPPER=`echo $ARCH | tr '[:lower:]' '[:upper:]'` - -# Conditionally create fdt information -if [ -n "${DTB}" ]; then - FDT=" - fdt@1 { - description = \"${ARCH_UPPER} OpenWrt ${DEVICE} device tree blob\"; - data = /incbin/(\"${DTB}\"); - type = \"flat_dt\"; - arch = \"${ARCH}\"; - compression = \"none\"; - hash@1 { - algo = \"crc32\"; - }; - hash@2 { - algo = \"sha1\"; - }; - }; -" - CONF=" fdt = \"fdt@1\";" -fi - -# Conditionally create ramdisk node -if [ -n "${RAMDISK}" ]; then - RD_COMPRESS=${RD_COMPRESS:-none} - RD=" - ramdisk@1 { - description = \"${ARCH_UPPER} OpenWrt ${DEVICE} ramdisk\"; - data = /incbin/(\"${RAMDISK}\"); - type = \"ramdisk\"; - arch = \"${ARCH}\"; - os = \"linux\"; - compression = \"${RD_COMPRESS}\"; - hash@1 { - algo = \"crc32\"; - }; - hash@2 { - algo = \"sha1\"; - }; - }; -" - if [ -z "${CONF}" ]; then - CONF=" ramdisk = \"ramdisk@1\";" - else - CONF="$CONF - ramdisk = \"ramdisk@1\";" - fi -fi - -# Create a default, fully populated DTS file -DATA="/dts-v1/; - -/ { - description = \"${ARCH_UPPER} OpenWrt FIT (Flattened Image Tree)\"; - #address-cells = <1>; - - images { - kernel@1 { - description = \"${ARCH_UPPER} OpenWrt Linux-${VERSION}\"; - data = /incbin/(\"${KERNEL}\"); - type = \"kernel\"; - arch = \"${ARCH}\"; - os = \"linux\"; - compression = \"${COMPRESS}\"; - load = <${LOAD_ADDR}>; - entry = <${ENTRY_ADDR}>; - hash@1 { - algo = \"crc32\"; - }; - hash@2 { - algo = \"sha1\"; - }; - }; - -${RD} -${FDT} - - }; - - configurations { - default = \"config@1\"; - config@1 { - description = \"OpenWrt\"; - kernel = \"kernel@1\"; -${CONF} - }; - }; -};" - -# Write .its file to disk -echo "$DATA" > ${OUTPUT}