diff --git a/target/linux/archs38/Makefile b/target/linux/archs38/Makefile index 166d3d55407..cbdbfba34a3 100644 --- a/target/linux/archs38/Makefile +++ b/target/linux/archs38/Makefile @@ -11,7 +11,7 @@ CPU_TYPE:=archs BOARD:=archs38 BOARDNAME:=Synopsys DesignWare ARC HS38 MAINTAINER:=Alexey Brodkin -SUBTARGETS:=generic +SUBTARGETS:=sd ramdisk KERNEL_PATCHVER:=4.4 diff --git a/target/linux/archs38/generic/profiles/01-minimal.mk b/target/linux/archs38/generic/profiles/01-minimal.mk deleted file mode 100644 index fe8d8c3a596..00000000000 --- a/target/linux/archs38/generic/profiles/01-minimal.mk +++ /dev/null @@ -1,15 +0,0 @@ -# -# Copyright (C) 2016 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/archs38/generic/profiles/02-axs103.mk b/target/linux/archs38/generic/profiles/02-axs103.mk deleted file mode 100644 index 7a89b212328..00000000000 --- a/target/linux/archs38/generic/profiles/02-axs103.mk +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2016 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/axs103 - NAME:=Synopsys DesignWare AXS103 - PACKAGES:= kmod-usb-core kmod-usb-ohci kmod-ath9k-htc wpad-mini -endef - -define Profile/axs103/Description - Package set compatible with hardware using Synopsys DesignWare AXS103 boards. -endef -$(eval $(call Profile,axs103)) diff --git a/target/linux/archs38/generic/profiles/03-nsim_hs.mk b/target/linux/archs38/generic/profiles/03-nsim_hs.mk deleted file mode 100644 index cebb0a66f4a..00000000000 --- a/target/linux/archs38/generic/profiles/03-nsim_hs.mk +++ /dev/null @@ -1,15 +0,0 @@ -# -# Copyright (C) 2016 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/nsim_hs - NAME:=Synopsys nSIM -endef - -define Profile/nsim_hs/Description - Package set compatible with hardware using Synopsys nSIM HS boards. -endef -$(eval $(call Profile,nsim_hs)) diff --git a/target/linux/archs38/generic/target.mk b/target/linux/archs38/generic/target.mk deleted file mode 100644 index 19b310e2c09..00000000000 --- a/target/linux/archs38/generic/target.mk +++ /dev/null @@ -1,8 +0,0 @@ -BOARDNAME:=Generic -FEATURES += ramdisk usb - -define Target/Description - Build firmware images for generic ARC HS38 based boards. -endef - - diff --git a/target/linux/archs38/image/Config.in b/target/linux/archs38/image/Config.in new file mode 100644 index 00000000000..e51db8338bb --- /dev/null +++ b/target/linux/archs38/image/Config.in @@ -0,0 +1,5 @@ +config AXS10X_SD_BOOT_PARTSIZE + int "Boot (SD Card) filesystem partition size (in MB)" + depends on TARGET_archs38 + default 20 + diff --git a/target/linux/archs38/image/Makefile b/target/linux/archs38/image/Makefile index f5dce288bd6..505ed026254 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/build-dtb + $(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,$(DTS_DIR)/$(DEVICE_DTS).dtb) +endef + define Build/patch-dtb - $(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,$@.dtb) - $(STAGING_DIR_HOST)/bin/patch-dtb $@ $@.dtb + $(STAGING_DIR_HOST)/bin/patch-dtb $@ $(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 := -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 + KERNEL_SUFFIX := .elf + KERNEL := kernel-bin | build-dtb | 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 -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)) diff --git a/target/linux/archs38/image/gen_axs10x_sdcard_img.sh b/target/linux/archs38/image/gen_axs10x_sdcard_img.sh new file mode 100755 index 00000000000..9a6f93d0d9d --- /dev/null +++ b/target/linux/archs38/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 " + 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/archs38/image/uEnv.txt b/target/linux/archs38/image/uEnv.txt new file mode 100644 index 00000000000..35549cb1c45 --- /dev/null +++ b/target/linux/archs38/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 diff --git a/target/linux/archs38/ramdisk/profiles/00-default.mk b/target/linux/archs38/ramdisk/profiles/00-default.mk new file mode 100644 index 00000000000..4d86da3382e --- /dev/null +++ b/target/linux/archs38/ramdisk/profiles/00-default.mk @@ -0,0 +1,15 @@ +# +# Copyright (C) 2016 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/Default + NAME:=Default Profile (all drivers) +endef + +define Profile/Default/Description + Default package set compatible with most boards. +endef +$(eval $(call Profile,Default)) diff --git a/target/linux/archs38/ramdisk/target.mk b/target/linux/archs38/ramdisk/target.mk new file mode 100644 index 00000000000..8612d3273d4 --- /dev/null +++ b/target/linux/archs38/ramdisk/target.mk @@ -0,0 +1,8 @@ +BOARDNAME:=Ramdisk +FEATURES += ramdisk + +define Target/Description + Build firmware images for generic ARC HS38 based boards that use built-in initramfs +endef + + diff --git a/target/linux/archs38/generic/profiles/00-default.mk b/target/linux/archs38/sd/profiles/00-default.mk similarity index 100% rename from target/linux/archs38/generic/profiles/00-default.mk rename to target/linux/archs38/sd/profiles/00-default.mk diff --git a/target/linux/archs38/sd/target.mk b/target/linux/archs38/sd/target.mk new file mode 100644 index 00000000000..ca4f19137ec --- /dev/null +++ b/target/linux/archs38/sd/target.mk @@ -0,0 +1,8 @@ +BOARDNAME:=SD +FEATURES += ext4 usb + +define Target/Description + Build firmware images for ARC HS38 based boards that use SD-card for booting. +endef + +