X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=target%2Flinux%2Farchs38%2Fimage%2FMakefile;h=1e0d3e99fdb82f531e67e49db9981757ef395b37;hp=03bd8ee8ebe9b25b0e9c4d324bdf345cf62280fc;hb=d55a05fc9e92e4699f98216e0f01221796d9df9a;hpb=668dbec3f4e50f9689ddfdfb4e84818fa736aa9f diff --git a/target/linux/archs38/image/Makefile b/target/linux/archs38/image/Makefile index 03bd8ee8eb..1e0d3e99fd 100644 --- a/target/linux/archs38/image/Makefile +++ b/target/linux/archs38/image/Makefile @@ -10,60 +10,77 @@ include $(INCLUDE_DIR)/image.mk # On ARC initramfs is put before entry point and so entry point moves # 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.*)) -endef +kernel_ep = `$(KERNEL_CROSS)readelf -h $(1) | grep "Entry point address" | grep -o 0x.*` define Build/patch-dtb - $(call Image/BuildDTB,../dts/$(DEVICE_DTS).dts,$@.dtb) - $(STAGING_DIR_HOST)/bin/patch-dtb $@ $@.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 := - DEVICE_DTS := + $(STAGING_DIR_HOST)/bin/patch-dtb $@ $(DTS_DIR)/$(DEVICE_DTS).dtb endef -DEVICE_VARS += DEVICE_PROFILE DEVICE_DTS +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 | patch-dtb + KERNEL_INITRAMFS_NAME = vmlinux-initramfs.elf endef -define Device/uImage - KERNEL_SUFFIX := .bin - KERNEL_INITRAMFS := kernel-bin | patch-dtb | calculate-ep | uImage none - KERNEL_LOADADDR := 0x80000000 +define Device/nsim_hs + $(call Device/vmlinux) + DEVICE_PROFILE := nsim_hs + DEVICE_DTS := nsim_hs_idu endef +TARGET_DEVICES += nsim_hs +endif + +# Root FS on SD-card +KERNEL_LOADADDR := 0x90000000 +DEVICE_DTS_LIST:= axs103_idu nsim_hs_idu hsdk +FAT32_BLOCK_SIZE=1024 +FAT32_BLOCKS=$(shell echo $$(($(CONFIG_AXS10X_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE)))) -define add_archs38_uImage - define Device/$(1)-uImage - $(call Device/uImage) - DEVICE_PROFILE := $(1) - DEVICE_DTS := $(1) - endef - TARGET_DEVICES += $(1)-uImage +define Image/Prepare + # Build .dtb for all boards we may run on + $(foreach dts,$(DEVICE_DTS_LIST), + $(call Image/BuildDTB,$(DTS_DIR)/$(dts).dts,$(DTS_DIR)/$(dts).dtb) + ) endef -define add_archs38_vmlinux - define Device/$(1)-vmlinux - $(call Device/vmlinux) - DEVICE_PROFILE := $(1) - DEVICE_DTS := $(1) - endef - TARGET_DEVICES += $(1)-vmlinux +define Image/Build/SDCard + rm -f $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img + mkfs.fat $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img -C $(FAT32_BLOCKS) + mkimage -C none -A arc -T script -d uEnv.txt $(BIN_DIR)/uEnv.scr + mkenvimage -s 0x4000 -o $(BIN_DIR)/uboot.env ./uboot.env.txt + 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 + mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img $(BIN_DIR)/uboot.env ::uboot.env + + ./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 -# DesignWare AXS103 -$(eval $(call add_archs38_vmlinux,axs103_idu)) -$(eval $(call add_archs38_uImage,axs103_idu)) +define Image/BuildKernel + # Build unified uImage + $(call Image/BuildKernel/MkuImage, \ + none, $(KERNEL_LOADADDR),$(call kernel_ep,$(KDIR)/vmlinux.elf) , \ + $(KDIR)/vmlinux, \ + $(BIN_DIR)/$(IMG_PREFIX)-uImage \ + ) +endef -# nSIM with ARCHS38 -$(eval $(call add_archs38_vmlinux,nsim_hs_idu)) -$(eval $(call add_archs38_uImage,nsim_hs_idu)) +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 + $(call Image/Gzip,$(BIN_DIR)/$(IMG_PREFIX)-root.$(1)) +endef $(eval $(call BuildImage))