aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/zynq/image
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2016-02-12 08:29:24 +0000
committerJohn Crispin <john@openwrt.org>2016-02-12 08:29:24 +0000
commit2d45ad07fc64b04a2e723a77491d450a1664cdec (patch)
treedcb49bd7f86d031de8783ad5f915996d37eb38df /target/linux/zynq/image
parent69517e88bea6ac19626dbff16cdc5e4a9f55cc25 (diff)
downloadupstream-2d45ad07fc64b04a2e723a77491d450a1664cdec.tar.gz
upstream-2d45ad07fc64b04a2e723a77491d450a1664cdec.tar.bz2
upstream-2d45ad07fc64b04a2e723a77491d450a1664cdec.zip
zynq: add new target
Add support for Xilinx ZC702 Dev board Zynq target is using 4.4 kernel and mainline 2016.1 u-boot. Patch is tested with Xilinx ZC702 Dev board with SD boot mode. known issues: - no QSPI driver in 4.4 kernel: no QSPI flash support - USB is not working in 4.4 kernel Signed-off-by: Jason Wu <jason.wu.misc@gmail.com> create mode 100644 package/boot/uboot-zynq/Makefile create mode 100644 target/linux/zynq/Makefile create mode 100644 target/linux/zynq/base-files.mk create mode 100755 target/linux/zynq/base-files/etc/board.d/02_network create mode 100644 target/linux/zynq/base-files/etc/config/network create mode 100644 target/linux/zynq/base-files/etc/inittab create mode 100644 target/linux/zynq/config-4.4 create mode 100644 target/linux/zynq/image/Makefile create mode 100755 target/linux/zynq/image/mkits.sh create mode 100644 target/linux/zynq/patches-4.4/0001-arm-dts-zynq-zc702.dts-Set-default-rdinit-to-sbin-in.patch create mode 100644 target/linux/zynq/profiles/zc702.mk SVN-Revision: 48697
Diffstat (limited to 'target/linux/zynq/image')
-rw-r--r--target/linux/zynq/image/Makefile75
-rwxr-xr-xtarget/linux/zynq/image/mkits.sh150
2 files changed, 225 insertions, 0 deletions
diff --git a/target/linux/zynq/image/Makefile b/target/linux/zynq/image/Makefile
new file mode 100644
index 0000000000..2924a5d3ea
--- /dev/null
+++ b/target/linux/zynq/image/Makefile
@@ -0,0 +1,75 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+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)
+
+ $(call Image/mkfs/cpiogz)
+ $(call Image/mkfs/targz)
+
+ # 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
+
+ # create FIT image with rootfs
+ ./mkits.sh \
+ -D $(1) -o $(KDIR)/fit-$(1).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-$(1).its $(KDIR)/fit-$(1).itb
+ $(CP) $(KDIR)/fit-$(1).itb $(BIN_DIR)/$(IMG_PREFIX)-fit.itb
+ ln -fs $(IMG_PREFIX)-fit.itb $(BIN_DIR)/fit.itb
+
+endef
+
+#################################################
+# Devices
+#################################################
+
+# default kernel load address
+KERNEL_LOADADDR=0x8000
+KERNEL_ENTRY_POINT=0x8000
+
+### Device macros ###
+define Device/Default
+ IMG_PREFIX := zynq
+ DEVICE_DTS :=
+ PROFILE_SANITIZED :=
+endef
+
+DEVICE_VARS += DEVICE_DTS
+
+### ZC702 ###
+define Device/ZC702
+ DEVICE_DTS := zynq-zc702
+endef
+
+Image/boot-imgs/ZC702=$(call Image/boot-imgs,zc702)
+
+define Image/BuildKernel
+ $(eval $(call Device/$(PROFILE)))
+ $(call Image/boot-imgs/$(PROFILE))
+endef
+
+$(eval $(call BuildImage))
diff --git a/target/linux/zynq/image/mkits.sh b/target/linux/zynq/image/mkits.sh
new file mode 100755
index 0000000000..2b00d0fc43
--- /dev/null
+++ b/target/linux/zynq/image/mkits.sh
@@ -0,0 +1,150 @@
+#!/bin/bash
+#
+# Licensed under the terms of the GNU GPL License version 2 or later.
+#
+# Author: Peter Tyser <ptyser@xes-inc.com>
+#
+# 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}