diff options
Diffstat (limited to 'target/linux/socfpga/image')
-rw-r--r-- | target/linux/socfpga/image/Config.in | 5 | ||||
-rw-r--r-- | target/linux/socfpga/image/Makefile | 135 | ||||
-rwxr-xr-x | target/linux/socfpga/image/gen_socfpga_sdcard_img.sh | 41 | ||||
-rw-r--r-- | target/linux/socfpga/image/ubinize.cfg | 13 |
4 files changed, 194 insertions, 0 deletions
diff --git a/target/linux/socfpga/image/Config.in b/target/linux/socfpga/image/Config.in new file mode 100644 index 0000000000..c6875e3a2a --- /dev/null +++ b/target/linux/socfpga/image/Config.in @@ -0,0 +1,5 @@ +config SOCFPGA_SD_BOOT_PARTSIZE + int "Boot (SD Card) filesystem partition size (in MB)" + depends on TARGET_socfpga + default 20 + diff --git a/target/linux/socfpga/image/Makefile b/target/linux/socfpga/image/Makefile new file mode 100644 index 0000000000..7919ace980 --- /dev/null +++ b/target/linux/socfpga/image/Makefile @@ -0,0 +1,135 @@ +# +# 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 + +FAT32_BLOCK_SIZE=1024 +FAT32_BLOCKS=$(shell echo $$(($(CONFIG_SOCFPGA_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE)))) +KDIR_TMP:=$(KDIR)/tmp +KDIR_TMP_EXT4:=$(KDIR)/tmp-ext4 + +# Terasic SoCkit: QSPI NOR, N25Q00A +SOCFPGA_SOCKIT_UBIFS_OPTS="-m 1 -e 65408 -c 2040" +SOCFPGA_SOCKIT_UBI_OPTS="-m 1 -p 64KiB -s 1" + +define sanitize_profile_name +$(shell echo $(PROFILE) | tr '[:upper:]' '[:lower:]' | sed 's/_/-/g') +endef + +define Image/BuildKernel/Template + + ifneq ($(1),) + $(CP) $(DTS_DIR)/$(1).dtb $(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb + + $(call Image/BuildKernel/MkFIT,$(1),$(KDIR)/zImage,$(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb,none,0x00008000,0x00008000) + $(CP) $(KDIR)/fit-$(1).itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage.itb + + ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) + $(call Image/BuildKernel/MkFIT,$(1),$(KDIR)/zImage-initramfs,$(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb,none,0x00008000,0x00008000,-initramfs) + $(CP) $(KDIR)/fit-$(1)-initramfs.itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage-initramfs.itb + endif + endif + + $(CP) $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-zImage + $(call Image/BuildKernel/MkuImage, \ + none, 0x00008000, 0x00008000, \ + $(BIN_DIR)/$(IMG_PREFIX)-zImage, \ + $(BIN_DIR)/$(IMG_PREFIX)-uImage \ + ) + + ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) + $(CP) $(KDIR)/zImage-initramfs $(BIN_DIR)/$(IMG_PREFIX)-zImage-initramfs + $(call Image/BuildKernel/MkuImage, \ + none, 0x00008000, 0x00008000, \ + $(BIN_DIR)/$(IMG_PREFIX)-zImage-initramfs, \ + $(BIN_DIR)/$(IMG_PREFIX)-uImage-initramfs \ + ) + endif +endef + +define Image/InstallKernel/Template + + ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_KERNEL)$(CONFIG_TARGET_socfpga_SOCFPGA_SOCKIT),) + $(INSTALL_DIR) $(TARGET_DIR)/boot + ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_UIMAGE)$(CONFIG_TARGET_socfpga_SOCFPGA_SOCKIT),) + $(CP) $(BIN_DIR)/$(IMG_PREFIX)-uImage $(TARGET_DIR)/boot/ + ln -sf $(IMG_PREFIX)-uImage $(TARGET_DIR)/boot/uImage + endif + ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_ZIMAGE),) + $(CP) $(BIN_DIR)/$(IMG_PREFIX)-zImage $(TARGET_DIR)/boot/ + ln -sf $(IMG_PREFIX)-zImage $(TARGET_DIR)/boot/zImage + endif + ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_FIT),) + $(foreach dts,$(shell echo $(1)), + $(CP) $(BIN_DIR)/$(IMG_PREFIX)-$(dts)-fit-uImage.itb $(TARGET_DIR)/boot/ + ) + endif + endif + + ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_DTB)$(CONFIG_TARGET_socfpga_SOCFPGA_SOCKIT),) + $(INSTALL_DIR) $(TARGET_DIR)/boot + $(foreach dts,$(shell echo $(1)), + $(CP) $(BIN_DIR)/$(IMG_PREFIX)-$(dts).dtb $(TARGET_DIR)/boot/, + ln -sf $(IMG_PREFIX)-$(dts).dtb $(TARGET_DIR)/boot/$(dts).dtb + ) + endif +endef + +define Image/Build/SDCard + + ifeq ($(1),ext4) + ./gen_socfpga_sdcard_img.sh \ + $(BIN_DIR)/$(IMG_PREFIX)-$(call sanitize_profile_name)-sdcard-vfat-$(1).img \ + $(KDIR)/root.$(1) \ + $(CONFIG_TARGET_ROOTFS_PARTSIZE) \ + $(BIN_DIR)/uboot-socfpga-$(2)/$(IMG_PREFIX)-$(2)-u-boot-with-spl.sfp \ + $(KDIR)/cfg.img + endif +endef + +define Image/mkfs/targz + $(TAR) -czpf $(BIN_DIR)/$(IMG_PREFIX)-$(call sanitize_profile_name)-rootfs.tar.gz --numeric-owner --owner=0 --group=0 -C $(TARGET_DIR)/ . +endef + +Image/BuildKernel/Template/Generic=$(call Image/BuildKernel/Template) +Image/InstallKernel/Template/Generic=$(call Image/InstallKernel/Template) + +Image/BuildKernel/Template/SOCFPGA_SOCKIT=$(foreach dts,$(shell echo $(SOCFPGA_SOCKIT_DTS)),$(call Image/BuildKernel/Template,$(dts))) +Image/InstallKernel/Template/SOCFPGA_SOCKIT=$(call Image/InstallKernel/Template,$(SOCFPGA_SOCKIT_DTS)) + +define Image/BuildKernel + $(call Image/BuildKernel/Template/$(PROFILE)) +endef + +define Image/InstallKernel + $(call Image/InstallKernel/Template/$(PROFILE)) +endef + +define Image/Build/Profile/SOCFPGA_SOCKIT + + ifeq ($(1),ext4) + $(call Image/Build/SDCard,$(1),socfpga_cyclone5_sockit) + $(call Image/Build/SysupgradeNAND,$(call sanitize_profile_name),ext4,) + endif + ifeq ($(1),ubifs) + $(call Image/Build/SysupgradeNAND,$(call sanitize_profile_name),ubifs,) + endif +endef + +define Image/Build + $(if $(Image/Build/$(1)), \ + $(call Image/Build/$(1),$(1)), \ + $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(call sanitize_profile_name)-$(1).img \ + ) + + $(if $(Image/Build/Profile/$(PROFILE)), \ + $(call Image/Build/Profile/$(PROFILE),$(1)), \ + $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(call sanitize_profile_name)-$(1).img \ + ) +endef + +$(eval $(call BuildImage)) diff --git a/target/linux/socfpga/image/gen_socfpga_sdcard_img.sh b/target/linux/socfpga/image/gen_socfpga_sdcard_img.sh new file mode 100755 index 0000000000..420e4b61fb --- /dev/null +++ b/target/linux/socfpga/image/gen_socfpga_sdcard_img.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +# +# Copyright (C) 2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +set -x +[ $# -eq 5 ] || { + echo "SYNTAX: $0 <file> <rootfs image> <rootfs size> <u-boot image> <cfg image>" + exit 1 +} + +OUTPUT="$1" +ROOTFS="$2" +ROOTFSSIZE="$3" +UBOOT="$4" +CFGFS="$5" + +head=4 +sect=63 + +set `ptgen -o $OUTPUT -h $head -s $sect -l 1024 \ + -t a2 -p 1M \ + -t 83 -p ${ROOTFSSIZE}M \ + -t 83 -p 1M` + +UBOOTOFFSET="$(($1 / 512))" +UBOOTSIZE="$(($2 / 512))" +ROOTFSOFFSET="$(($3 / 512))" +ROOTFSSIZE="$(($4 / 512))" +CFGFSOFFSET="$(($5 / 512))" +CFGFSSIZE="$(($6 / 512))" + +dd bs=512 if="$UBOOT" of="$OUTPUT" seek="$UBOOTOFFSET" conv=notrunc +dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc + +mkdosfs "$CFGFS" -C 1024 +dd bs=512 if="$CFGFS" of="$OUTPUT" seek="$CFGFSOFFSET" conv=notrunc diff --git a/target/linux/socfpga/image/ubinize.cfg b/target/linux/socfpga/image/ubinize.cfg new file mode 100644 index 0000000000..e4149ec7d7 --- /dev/null +++ b/target/linux/socfpga/image/ubinize.cfg @@ -0,0 +1,13 @@ +[rootfs] +# Volume mode (other option is static) +mode=ubi +# Source image +image=root.ubifs +# Volume ID in UBI image +vol_id=0 +# Allow for dynamic resize +vol_type=dynamic +# Volume name +vol_name=rootfs +# Autoresize volume at first mount +vol_flags=autoresize |