diff options
author | John Crispin <john@openwrt.org> | 2016-02-12 08:29:24 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2016-02-12 08:29:24 +0000 |
commit | 2d45ad07fc64b04a2e723a77491d450a1664cdec (patch) | |
tree | dcb49bd7f86d031de8783ad5f915996d37eb38df /target/linux/zynq/image | |
parent | 69517e88bea6ac19626dbff16cdc5e4a9f55cc25 (diff) | |
download | upstream-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/Makefile | 75 | ||||
-rwxr-xr-x | target/linux/zynq/image/mkits.sh | 150 |
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} |