aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/archs38/image/Makefile
diff options
context:
space:
mode:
authorAlexey Brodkin <Alexey.Brodkin@synopsys.com>2016-08-16 14:49:20 +0300
committerJohn Crispin <john@phrozen.org>2016-08-16 12:20:32 +0200
commitdf4f41261cf9da3cb1681c7495c51badfe1d999c (patch)
treed421e8421425578f72c487d21256c2967f1f5e88 /target/linux/archs38/image/Makefile
parent7abf9eda8a60ab2c730fc2807a2047ee19280e31 (diff)
downloadupstream-df4f41261cf9da3cb1681c7495c51badfe1d999c.tar.gz
upstream-df4f41261cf9da3cb1681c7495c51badfe1d999c.tar.bz2
upstream-df4f41261cf9da3cb1681c7495c51badfe1d999c.zip
archs38: Introduce images for SD-cards
Historically on ARC we started from initramfs-based images because: a) It was much easier to debug especially when toolchain and other components were changing quite dynamically b) It was our usual approach for embedded Linux But now with ARC port of Lede/OpenWRT getting more stable and mature we're ready for more real-life scenarios with FS permanently stored on SD-card. This essentially benefits from ability to setup devices that survive reboots with all settings and extra packages kept in place. Still we keep an ability to build images with initramfs. This allows us to use storage-less simulators for testing still. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: John Crispin <john@phrozen.org>
Diffstat (limited to 'target/linux/archs38/image/Makefile')
-rw-r--r--target/linux/archs38/image/Makefile80
1 files changed, 55 insertions, 25 deletions
diff --git a/target/linux/archs38/image/Makefile b/target/linux/archs38/image/Makefile
index f5dce288bd..505ed02625 100644
--- a/target/linux/archs38/image/Makefile
+++ b/target/linux/archs38/image/Makefile
@@ -14,43 +14,73 @@ define Build/calculate-ep
$(eval KERNEL_ENTRY=$(shell $(KERNEL_CROSS)readelf -h $(LINUX_DIR)/vmlinux | grep "Entry point address" | grep -o 0x.*))
endef
-define Build/patch-dtb
- $(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,$@.dtb)
- $(STAGING_DIR_HOST)/bin/patch-dtb $@ $@.dtb
+define Build/build-dtb
+ $(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,$(DTS_DIR)/$(DEVICE_DTS).dtb)
endef
-# Shared device definition: applies to every defined device
-define Device/Default
- PROFILES = Default $$(DEVICE_PROFILE)
- KERNEL_DEPENDS = $$(wildcard ../dts/$$(DEVICE_DTS).dts)
- DEVICE_PROFILE :=
+define Build/patch-dtb
+ $(STAGING_DIR_HOST)/bin/patch-dtb $@ $(DTS_DIR)/$(DEVICE_DTS).dtb
endef
-DEVICE_VARS += DEVICE_PROFILE
+ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
+# Root FS built-in
define Device/vmlinux
- KERNEL_SUFFIX := .elf
- KERNEL_INITRAMFS := kernel-bin | patch-dtb
- KERNEL_INITRAMFS_NAME = vmlinux-initramfs.elf
-endef
-
-define Device/uImage
- KERNEL_SUFFIX := -uImage
- KERNEL_INITRAMFS := kernel-bin | patch-dtb | calculate-ep | uImage none
- KERNEL_LOADADDR := 0x80000000
+ KERNEL_SUFFIX := .elf
+ KERNEL := kernel-bin | build-dtb | patch-dtb
+ KERNEL_INITRAMFS_NAME = vmlinux-initramfs.elf
endef
-define Device/axs103
- $(call Device/uImage)
- DEVICE_PROFILE := axs103
- DEVICE_DTS := axs103_idu
-endef
-TARGET_DEVICES += axs103
-
define Device/nsim_hs
$(call Device/vmlinux)
DEVICE_PROFILE := nsim_hs
DEVICE_DTS := nsim_hs_idu
endef
TARGET_DEVICES += nsim_hs
+else
+# Root FS on SD-card
+KERNEL_LOADADDR := 0x80000000
+DEVICE_DTS_LIST:= axs103_idu
+FAT32_BLOCK_SIZE=1024
+FAT32_BLOCKS=$(shell echo $$(($(CONFIG_AXS10X_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE))))
+
+define Image/Build/SDCard
+ rm -f $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img
+ mkdosfs $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img -C $(FAT32_BLOCKS)
+ mkimage -C none -A arc -T script -d uEnv.txt $(BIN_DIR)/uEnv.scr
+ mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img $(BIN_DIR)/uEnv.scr ::boot.scr
+ mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img $(DTS_DIR)/*.dtb ::
+ mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img $(BIN_DIR)/$(IMG_PREFIX)-uImage ::uImage
+
+ ./gen_axs10x_sdcard_img.sh \
+ $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE)-sdcard-vfat-$(1).img \
+ $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img \
+ $(KDIR)/root.$(1) \
+ $(CONFIG_AXS10X_SD_BOOT_PARTSIZE) \
+ $(CONFIG_TARGET_ROOTFS_PARTSIZE)
+
+ifneq ($(CONFIG_TARGET_IMAGES_GZIP),)
+ gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE)-sdcard-vfat-$(1).img
+endif
+endef
+
+define Image/BuildKernel
+ # Build unified uImage
+ $(call Build/calculate-ep)
+ $(call Image/BuildKernel/MkuImage, \
+ none, $(KERNEL_LOADADDR), $(KERNEL_ENTRY), \
+ $(KDIR)/vmlinux, \
+ $(BIN_DIR)/$(IMG_PREFIX)-uImage \
+ )
+
+ # Build .dtb for all boards we may run on
+ $(foreach DEVICE_DTS,$(shell echo $(DEVICE_DTS_LIST)), $(call Build/build-dtb))
+endef
+
+define Image/Build
+ $(call Image/Build/$(1),$(1))
+ $(call Image/Build/SDCard,$(1))
+ dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync
+endef
+endif
$(eval $(call BuildImage))