From 2268ee8e1f16e7f888bf03c48011271a3ebae122 Mon Sep 17 00:00:00 2001 From: Mike Qin Date: Fri, 15 Jul 2016 12:05:27 +0800 Subject: zynq: add sdcard image generation support when board profile is selected Signed-off-by: Mike Qin --- target/linux/zynq/Makefile | 2 +- target/linux/zynq/image/Config.in | 5 +++++ target/linux/zynq/image/Makefile | 29 ++++++++++++++++++++++++++ target/linux/zynq/image/gen_zynq_sdcard_img.sh | 27 ++++++++++++++++++++++++ target/linux/zynq/profiles/zc702.mk | 3 ++- target/linux/zynq/profiles/zed.mk | 3 ++- target/linux/zynq/profiles/zybo.mk | 3 ++- 7 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 target/linux/zynq/image/Config.in create mode 100755 target/linux/zynq/image/gen_zynq_sdcard_img.sh (limited to 'target/linux') diff --git a/target/linux/zynq/Makefile b/target/linux/zynq/Makefile index 6495c59723..e700c40c3a 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 ext4 CPU_TYPE:=cortex-a9 CPU_SUBTYPE:=neon MAINTAINER:=Jason Wu diff --git a/target/linux/zynq/image/Config.in b/target/linux/zynq/image/Config.in new file mode 100644 index 0000000000..ded974196e --- /dev/null +++ b/target/linux/zynq/image/Config.in @@ -0,0 +1,5 @@ +config ZYNQ_SD_BOOT_PARTSIZE + int "Boot (SD Card) filesystem partition size (in MB)" + depends on TARGET_zynq + default 20 + diff --git a/target/linux/zynq/image/Makefile b/target/linux/zynq/image/Makefile index d803c336b8..d89c0ba3db 100644 --- a/target/linux/zynq/image/Makefile +++ b/target/linux/zynq/image/Makefile @@ -6,6 +6,10 @@ # include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/image.mk +include $(INCLUDE_DIR)/host.mk + +FAT32_BLOCK_SIZE=1024 +FAT32_BLOCKS=$(shell echo $$(($(CONFIG_ZYNQ_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE)))) ################################################# # Images @@ -40,7 +44,26 @@ define Image/boot-imgs 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 +endef +define Image/Build/Zynq + # Create SD card image + rm -f $(KDIR_TMP)/$(IMG_PREFIX)-boot.img + mkfs.fat $(KDIR_TMP)/$(IMG_PREFIX)-boot.img -C $(FAT32_BLOCKS) + mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(KDIR)/uboot-$(IMG_PREFIX)-u-boot.bin ::boot.bin + mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(BIN_DIR)/$(DEVICE_DTS)-system.dtb ::devicetree.dtb + mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(KDIR)/uboot-$(IMG_PREFIX)-u-boot-dtb.img ::u-boot.img + mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(KDIR)/uboot-$(IMG_PREFIX)-uEnv.txt ::uEnv.txt + mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(BIN_DIR)/$(IMG_PREFIX)-uImage ::uImage + + ./gen_zynq_sdcard_img.sh \ + $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img \ + $(KDIR_TMP)/$(IMG_PREFIX)-boot.img \ + $(KDIR)/root.$(1) \ + $(CONFIG_ZYNQ_SD_BOOT_PARTSIZE) \ + $(CONFIG_TARGET_ROOTFS_PARTSIZE) + + $(if $(CONFIG_TARGET_IMAGES_GZIP),gzip -9n -c $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img > $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img.gz) endef ################################################# @@ -83,4 +106,10 @@ define Image/BuildKernel $(call Image/boot-imgs) endef +define Image/Build + $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).img + + $(call Image/Build/Zynq,$(1)) +endef + $(eval $(call BuildImage)) diff --git a/target/linux/zynq/image/gen_zynq_sdcard_img.sh b/target/linux/zynq/image/gen_zynq_sdcard_img.sh new file mode 100755 index 0000000000..6b18c8270f --- /dev/null +++ b/target/linux/zynq/image/gen_zynq_sdcard_img.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +set -x +[ $# -eq 5 ] || { + echo "SYNTAX: $0 " + exit 1 +} + +OUTPUT="$1" +BOOTFS="$2" +ROOTFS="$3" +BOOTFSSIZE="$4" +ROOTFSSIZE="$5" + +head=4 +sect=63 + +set `ptgen -o $OUTPUT -h $head -s $sect -l 4096 -t c -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M` + +BOOTOFFSET="$(($1 / 512))" +BOOTSIZE="$(($2 / 512))" +ROOTFSOFFSET="$(($3 / 512))" +ROOTFSSIZE="$(($4 / 512))" + +dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc +dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc + diff --git a/target/linux/zynq/profiles/zc702.mk b/target/linux/zynq/profiles/zc702.mk index 9d3c972fa6..23ae3b59d6 100644 --- a/target/linux/zynq/profiles/zc702.mk +++ b/target/linux/zynq/profiles/zc702.mk @@ -6,7 +6,8 @@ # define Profile/ZC702 - NAME:=ZC702 development baord + NAME:=ZC702 development board + PACKAGES:= uboot-zynq-zc702 endef define Profile/ZC702/Description diff --git a/target/linux/zynq/profiles/zed.mk b/target/linux/zynq/profiles/zed.mk index d8ff08b02f..42274510a3 100644 --- a/target/linux/zynq/profiles/zed.mk +++ b/target/linux/zynq/profiles/zed.mk @@ -6,7 +6,8 @@ # define Profile/ZED - NAME:=ZedBoard development baord + NAME:=ZedBoard development board + PACKAGES:= uboot-zynq-zed endef define Profile/ZED/Description diff --git a/target/linux/zynq/profiles/zybo.mk b/target/linux/zynq/profiles/zybo.mk index dfe7e675d7..0cad680d72 100644 --- a/target/linux/zynq/profiles/zybo.mk +++ b/target/linux/zynq/profiles/zybo.mk @@ -6,7 +6,8 @@ # define Profile/ZYBO - NAME:=ZYBO development baord + NAME:=ZYBO development board + PACKAGES:= uboot-zynq-zybo endef define Profile/ZYBO/Description -- cgit v1.2.3