# # Copyright (C) 2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk 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 define Build/build-dtb $(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,$(DTS_DIR)/$(DEVICE_DTS).dtb) endef define Build/patch-dtb $(STAGING_DIR_HOST)/bin/patch-dtb $@ $(DTS_DIR)/$(DEVICE_DTS).dtb endef ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) # Root FS built-in define Device/vmlinux KERNEL_SUFFIX := .elf KERNEL := kernel-bin | build-dtb | patch-dtb KERNEL_INITRAMFS_NAME = vmlinux-initramfs.elf endef 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))