aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/arc770/generic/profiles/01-minimal.mk15
-rw-r--r--target/linux/arc770/generic/profiles/02-axs101.mk16
-rw-r--r--target/linux/arc770/generic/profiles/03-nsim_700.mk15
-rw-r--r--target/linux/arc770/generic/target.mk2
-rw-r--r--target/linux/arc770/image/Config.in5
-rw-r--r--target/linux/arc770/image/Makefile82
-rwxr-xr-xtarget/linux/arc770/image/gen_axs10x_sdcard_img.sh33
-rw-r--r--target/linux/arc770/image/uEnv.txt7
8 files changed, 102 insertions, 73 deletions
diff --git a/target/linux/arc770/generic/profiles/01-minimal.mk b/target/linux/arc770/generic/profiles/01-minimal.mk
deleted file mode 100644
index c8968daecd..0000000000
--- a/target/linux/arc770/generic/profiles/01-minimal.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/Minimal
- NAME:=Minimal Profile (no drivers)
-endef
-
-define Profile/Minimal/Description
- Minimal package set compatible with most boards.
-endef
-$(eval $(call Profile,Minimal))
diff --git a/target/linux/arc770/generic/profiles/02-axs101.mk b/target/linux/arc770/generic/profiles/02-axs101.mk
deleted file mode 100644
index 3fb652612a..0000000000
--- a/target/linux/arc770/generic/profiles/02-axs101.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/axs101
- NAME:=Synopsys DesignWare AXS101
- PACKAGES:= kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ath9k-htc wpad-mini
-endef
-
-define Profile/axs101/Description
- Package set compatible with hardware using Synopsys DesignWare AXS101 boards.
-endef
-$(eval $(call Profile,axs101))
diff --git a/target/linux/arc770/generic/profiles/03-nsim_700.mk b/target/linux/arc770/generic/profiles/03-nsim_700.mk
deleted file mode 100644
index 843a3424b5..0000000000
--- a/target/linux/arc770/generic/profiles/03-nsim_700.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/nsim_700
- NAME:=Synopsys nSIM
-endef
-
-define Profile/nsim_700/Description
- Package set compatible with hardware using Synopsys nSIM 700 boards.
-endef
-$(eval $(call Profile,nsim_700))
diff --git a/target/linux/arc770/generic/target.mk b/target/linux/arc770/generic/target.mk
index eba5c3c7e8..15f598ee16 100644
--- a/target/linux/arc770/generic/target.mk
+++ b/target/linux/arc770/generic/target.mk
@@ -1,5 +1,5 @@
BOARDNAME:=Generic
-FEATURES += ramdisk usb
+FEATURES += ramdisk usb ext4
define Target/Description
Build firmware images for generic ARC 770D based boards.
diff --git a/target/linux/arc770/image/Config.in b/target/linux/arc770/image/Config.in
new file mode 100644
index 0000000000..52f68ba241
--- /dev/null
+++ b/target/linux/arc770/image/Config.in
@@ -0,0 +1,5 @@
+config AXS10X_SD_BOOT_PARTSIZE
+ int "Boot (SD Card) filesystem partition size (in MB)"
+ depends on TARGET_arc770
+ default 20
+
diff --git a/target/linux/arc770/image/Makefile b/target/linux/arc770/image/Makefile
index 79ce71e726..f5e43f5bc9 100644
--- a/target/linux/arc770/image/Makefile
+++ b/target/linux/arc770/image/Makefile
@@ -11,46 +11,76 @@ include $(INCLUDE_DIR)/image.mk
# in memory from build to built. Thus we need to extract EP from vmlinux
# every time before generation of uImage.
define Build/calculate-ep
- $(eval KERNEL_ENTRY=$(shell $(KERNEL_CROSS)readelf -h $(LINUX_DIR)/vmlinux | grep "Entry point address" | grep -o 0x.*))
+ $(eval KERNEL_ENTRY=$(shell $(KERNEL_CROSS)readelf -h $(1) | 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/axs101
- $(call Device/uImage)
- DEVICE_PROFILE := axs101
- DEVICE_DTS := axs101
-endef
-TARGET_DEVICES += axs101
-
define Device/nsim
$(call Device/vmlinux)
DEVICE_PROFILE := nsim
DEVICE_DTS := nsim_700
endef
TARGET_DEVICES += nsim
+endif
+
+# Root FS on SD-card
+KERNEL_LOADADDR := 0x80000000
+DEVICE_DTS_LIST:= axs101
+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, $(KDIR)/vmlinux.elf)
+ $(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
$(eval $(call BuildImage))
diff --git a/target/linux/arc770/image/gen_axs10x_sdcard_img.sh b/target/linux/arc770/image/gen_axs10x_sdcard_img.sh
new file mode 100755
index 0000000000..9a6f93d0d9
--- /dev/null
+++ b/target/linux/arc770/image/gen_axs10x_sdcard_img.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+
+#
+# Copyright (C) 2016 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> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
+ 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 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=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/arc770/image/uEnv.txt b/target/linux/arc770/image/uEnv.txt
new file mode 100644
index 0000000000..35549cb1c4
--- /dev/null
+++ b/target/linux/arc770/image/uEnv.txt
@@ -0,0 +1,7 @@
+setenv kernel_addr_r 0x82000000
+setenv fdt_addr_r 0x83000000
+setenv loadkernel fatload mmc 0 \$(kernel_addr_r) uImage
+setenv loaddtb fatload mmc 0 \$(fdt_addr_r) \$(dts)
+setenv bootargs earlycon=uart8250,mmio32,0xe0022000,115200n8 console=ttyS3,115200n8 root=/dev/mmcblk0p2 rootwait print-fatal-signals=1
+setenv uenvcmd run loadkernel\; run loaddtb\; bootm \$(kernel_addr_r) - \$(fdt_addr_r)
+run uenvcmd