From fb985d741f0250420f8c90be40c909d6b5083db3 Mon Sep 17 00:00:00 2001 From: Zoltan Herpai Date: Sun, 14 Sep 2014 13:47:42 +0000 Subject: sunxi: add sdcard image generation support when board profile is selected Signed-off-by: Zoltan HERPAI SVN-Revision: 42534 --- target/linux/sunxi/image/Config.in | 5 ++ target/linux/sunxi/image/Makefile | 59 +++++++++++++++++++++++- target/linux/sunxi/image/gen_sunxi_sdcard_img.sh | 35 ++++++++++++++ 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 target/linux/sunxi/image/Config.in create mode 100755 target/linux/sunxi/image/gen_sunxi_sdcard_img.sh (limited to 'target/linux') diff --git a/target/linux/sunxi/image/Config.in b/target/linux/sunxi/image/Config.in new file mode 100644 index 0000000..0d6861c --- /dev/null +++ b/target/linux/sunxi/image/Config.in @@ -0,0 +1,5 @@ +config SUNXI_SD_BOOT_PARTSIZE + int "Boot (SD Card) filesystem partition size (in MB)" + depends on TARGET_sunxi + default 20 + diff --git a/target/linux/sunxi/image/Makefile b/target/linux/sunxi/image/Makefile index c41c51b..81ba597 100644 --- a/target/linux/sunxi/image/Makefile +++ b/target/linux/sunxi/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_SUNXI_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE)))) BOARDS:= \ sun4i-a10-cubieboard \ @@ -40,9 +44,62 @@ define Image/BuildKernel ) endef +define Image/Build/SDCard + rm -f $(KDIR)/boot.img + mkdosfs $(KDIR)/boot.img -C $(FAT32_BLOCKS) + + mcopy -i $(KDIR)/boot.img $(BIN_DIR)/uboot-sunxi-$(PROFILE)/openwrt-sunxi-$(PROFILE)-uEnv.txt ::uEnv.txt + mcopy -i $(KDIR)/boot.img $(BIN_DIR)/$(2).dtb ::dtb + mcopy -i $(KDIR)/boot.img $(BIN_DIR)/$(IMG_PREFIX)-uImage ::uImage + + ./gen_sunxi_sdcard_img.sh \ + $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE)-sdcard-vfat-$(1).img \ + $(KDIR)/boot.img \ + $(KDIR)/root.$(1) \ + $(CONFIG_SUNXI_SD_BOOT_PARTSIZE) \ + $(CONFIG_TARGET_ROOTFS_PARTSIZE) \ + $(BIN_DIR)/uboot-sunxi-$(PROFILE)/openwrt-sunxi-$(PROFILE)-u-boot-with-spl.bin +endef + +define Image/Build/Profile/A10-OLinuXino-Lime + $(call Image/Build/SDCard,$(1),sun4i-a10-olinuxino-lime) +endef + +define Image/Build/Profile/A13-OLinuXino + $(call Image/Build/SDCard,$(1),sun5i-a13-olinuxino) +endef + +define Image/Build/Profile/A20-OLinuXino_MICRO + $(call Image/Build/SDCard,$(1),sun7i-a20-olinuxino-micro) +endef + +define Image/Build/Profile/Bananapi + $(call Image/Build/SDCard,$(1),sun7i-a20-bananapi) +endef + +define Image/Build/Profile/Cubieboard + $(call Image/Build/SDCard,$(1),sun4i-a10-cubieboard) +endef + +define Image/Build/Profile/Cubieboard2 + $(call Image/Build/SDCard,$(1),sun7i-a20-cubieboard2) +endef + +define Image/Build/Profile/OLIMEX-A13-SOM + $(call Image/Build/SDCard,$(1),sun5i-a13-olinuxino) +endef + +define Image/Build/Profile/pcDuino + $(call Image/Build/SDCard,$(1),sun4i-a10-pcduino) +endef + +define Image/Build/Profile/Linksprite_pcDuino3 + $(call Image/Build/SDCard,$(1),sun7i-a20-pcduino3) +endef + define Image/Build $(call Image/Build/$(1),$(1)) - dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/openwrt-$(BOARD)-root.$(1) bs=128k conv=sync + $(call Image/Build/Profile/$(PROFILE),$(1)) endef $(eval $(call BuildImage)) diff --git a/target/linux/sunxi/image/gen_sunxi_sdcard_img.sh b/target/linux/sunxi/image/gen_sunxi_sdcard_img.sh new file mode 100755 index 0000000..06957a5 --- /dev/null +++ b/target/linux/sunxi/image/gen_sunxi_sdcard_img.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# +# Copyright (C) 2013 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +set -x +[ $# == 6 ] || { + echo "SYNTAX: $0 " + exit 1 +} + +OUTPUT="$1" +BOOTFS="$2" +ROOTFS="$3" +BOOTFSSIZE="$4" +ROOTFSSIZE="$5" +UBOOT="$6" + +head=4 +sect=63 + +set `ptgen -o $OUTPUT -h $head -s $sect -l 1024 -t c -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M` + +BOOTOFFSET="$(($1 / 512))" +BOOTSIZE="$(($2 / 512))" +ROOTFSOFFSET="$(($3 / 512))" +ROOTFSSIZE="$(($4 / 512))" + +dd bs=1024 if="$UBOOT" of="$OUTPUT" seek=8 conv=notrunc +dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc +dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc -- cgit v1.1