diff options
Diffstat (limited to 'target/linux/mxs/image')
-rw-r--r-- | target/linux/mxs/image/Config.in | 8 | ||||
-rw-r--r-- | target/linux/mxs/image/Makefile | 89 | ||||
-rwxr-xr-x | target/linux/mxs/image/gen_sdcard_ext4_ext4.sh | 33 | ||||
-rwxr-xr-x | target/linux/mxs/image/gen_sdcard_vfat_ext4.sh | 37 |
4 files changed, 167 insertions, 0 deletions
diff --git a/target/linux/mxs/image/Config.in b/target/linux/mxs/image/Config.in new file mode 100644 index 0000000..250553e --- /dev/null +++ b/target/linux/mxs/image/Config.in @@ -0,0 +1,8 @@ +config TARGET_BOOTFS_PARTSIZE + int "Boot (SD Card) filesystem partition size (in MB)" + depends on TARGET_mxs_olinuxino-maxi || TARGET_mxs_olinuxino-micro + default 8 + help + On the Olimex OLinuXino boards, mainline U-Boot loads the + linux kernel and device tree file from a FAT partition. + The default value of 8 MB should be more than adequate. diff --git a/target/linux/mxs/image/Makefile b/target/linux/mxs/image/Makefile new file mode 100644 index 0000000..94fed82 --- /dev/null +++ b/target/linux/mxs/image/Makefile @@ -0,0 +1,89 @@ +# +# Copyright (C) 2013-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 + +BOARDS:= \ + imx23-olinuxino \ + imx28-duckbill + +FAT32_BLOCK_SIZE=1024 +FAT32_BLOCKS=$(shell echo $$(($(CONFIG_TARGET_BOOTFS_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE)))) + +define Image/BuildKernel + mkimage -A arm -O linux -T kernel -C none \ + -a 0x40008000 -e 0x40008000 \ + -n 'ARM OpenWrt Linux-$(LINUX_VERSION)' \ + -d $(KDIR)/zImage $(KDIR)/uImage + cp $(KDIR)/uImage $(BIN_DIR)/$(IMG_PREFIX)-uImage +endef + +define Image/InstallKernel + + ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_ZIMAGE),) + mkdir -p $(TARGET_DIR)/boot + cp $(KDIR)/zImage $(TARGET_DIR)/boot/ + endif + + ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_UIMAGE),) + mkdir -p $(TARGET_DIR)/boot + cp $(KDIR)/uImage $(TARGET_DIR)/boot/ + endif + + ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_DTB),) + mkdir -p $(TARGET_DIR)/boot + $(foreach board,$(BOARDS), + $(CP) $(DTS_DIR)/$(board).dtb $(TARGET_DIR)/boot/ + ) + endif + +endef + +define Image/Build/SDCard-vfat-ext4 + rm -f $(KDIR)/boot.img + mkdosfs $(KDIR)/boot.img -C $(FAT32_BLOCKS) + + mcopy -i $(KDIR)/boot.img $(DTS_DIR)/$(3).dtb ::$(3).dtb + mcopy -i $(KDIR)/boot.img $(BIN_DIR)/$(IMG_PREFIX)-uImage ::uImage + + ./gen_sdcard_vfat_ext4.sh \ + $(BIN_DIR)/$(2) \ + $(BIN_DIR)/uboot-mxs-$(4)/uboot-mxs-$(4).sb \ + $(KDIR)/boot.img \ + $(KDIR)/root.$(1) \ + $(CONFIG_TARGET_BOOTFS_PARTSIZE) \ + $(CONFIG_TARGET_ROOTFS_PARTSIZE) +endef + +define Image/Build/SDCard-ext4-ext4 + ./gen_sdcard_ext4_ext4.sh \ + $(BIN_DIR)/$(2) \ + $(BIN_DIR)/uboot-mxs-$(4)/uboot-mxs-$(4).sb \ + $(KDIR)/root.$(1) \ + $(CONFIG_TARGET_ROOTFS_PARTSIZE) +endef + +define Image/Build/Profile/olinuxino-maxi + $(call Image/Build/SDCard-vfat-ext4,$(1),$(2),imx23-olinuxino,mx23_olinuxino) +endef + +define Image/Build/Profile/olinuxino-micro + $(call Image/Build/SDCard-vfat-ext4,$(1),$(2),imx23-olinuxino,mx23_olinuxino) +endef + +define Image/Build/Profile/duckbill + $(call Image/Build/SDCard-ext4-ext4,$(1),$(2),imx28-duckbill,duckbill) +endef + +define Image/Build + $(call Image/Build/$(1),$(1)) + $(call Image/Build/Profile/$(PROFILE),$(1),$(IMG_PREFIX)-$(PROFILE)-sdcard.img) + dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync +endef + +$(eval $(call BuildImage)) diff --git a/target/linux/mxs/image/gen_sdcard_ext4_ext4.sh b/target/linux/mxs/image/gen_sdcard_ext4_ext4.sh new file mode 100755 index 0000000..5653ba8 --- /dev/null +++ b/target/linux/mxs/image/gen_sdcard_ext4_ext4.sh @@ -0,0 +1,33 @@ +#!/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 4 ] || { + echo "SYNTAX: $0 <file> <u-boot.sb image> <rootfs image> <rootfs size>" + exit 1 +} + +OUTPUT="$1" +UBOOT="$2" +ROOTFS="$3" +ROOTFSSIZE="$4" + +head=4 +sect=63 + +# set the Boot stream partition size to 1M +set `ptgen -o $OUTPUT -h $head -s $sect -l 1024 -t 53 -p 1M -t 83 -p ${ROOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M` + +ROOTFS1OFFSET="$(($3 / 512))" +ROOTFS1SIZE="$(($4 / 512))" +ROOTFS2OFFSET="$(($5 / 512))" +ROOTFS2SIZE="$(($6 / 512))" + +dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFS1OFFSET" conv=notrunc +dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFS2OFFSET" conv=notrunc +sdimage -d "$OUTPUT" -f "$UBOOT" diff --git a/target/linux/mxs/image/gen_sdcard_vfat_ext4.sh b/target/linux/mxs/image/gen_sdcard_vfat_ext4.sh new file mode 100755 index 0000000..616639d --- /dev/null +++ b/target/linux/mxs/image/gen_sdcard_vfat_ext4.sh @@ -0,0 +1,37 @@ +#!/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 6 ] || { + echo "SYNTAX: $0 <file> <u-boot.sb image> <bootfs image> <rootfs image> <bootfs size> <rootfs size>" + exit 1 +} + +OUTPUT="$1" +UBOOT="$2" +BOOTFS="$3" +ROOTFS="$4" +BOOTFSSIZE="$5" +ROOTFSSIZE="$6" + +head=4 +sect=63 + +# Set the u-boot storage to 2M +set `ptgen -o $OUTPUT -h $head -s $sect -l 1024 -t 53 -p 2M -t c -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M` + +UBOOTOFFSET="$(($1 / 512))" +UBOOTSIZE="$(($2 / 512))" +BOOTOFFSET="$(($3 / 512))" +BOOTSIZE="$(($4 / 512))" +ROOTFSOFFSET="$(($5 / 512))" +ROOTFSSIZE="$(($6 / 512))" + +dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc +dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc +sdimage -d "$OUTPUT" -f "$UBOOT" |