1# 2# Copyright (C) 2015 OpenWrt.org 3# 4# This is free software, licensed under the GNU General Public License v2. 5# See /LICENSE for more information. 6# 7include $(TOPDIR)/rules.mk 8include $(INCLUDE_DIR)/image.mk 9include $(INCLUDE_DIR)/host.mk 10 11FAT32_BLOCK_SIZE=1024 12FAT32_BLOCKS=$(shell echo $$(($(CONFIG_ZYNQ_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE)))) 13 14################################################# 15# Images 16################################################# 17 18define Image/boot-imgs 19 # Copy zImage to BIN_DIR 20 $(CP) $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-zImage 21 22 $(call Image/BuildKernel/MkuImage, none, $(KERNEL_LOADADDR), \ 23 $(KERNEL_ENTRY_POINT), $(KDIR)/zImage, \ 24 $(BIN_DIR)/$(IMG_PREFIX)-uImage) 25 26 $(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,\ 27 $(BIN_DIR)/$(IMG_PREFIX)-system.dtb) 28 29 $(call Image/mkfs/cpiogz) 30 $(call Image/mkfs/targz) 31 32 # Create uboot cpio.gz 33 mkimage -A arm -T ramdisk -C gzip -n "$(PROFILE) OpenWRT rootfs" \ 34 -d $(BIN_DIR)/$(IMG_PREFIX)-rootfs.cpio.gz \ 35 $(BIN_DIR)/$(IMG_PREFIX)-uramdisk.image.gz 36 37 # create FIT image with rootfs 38 ./mkits.sh \ 39 -D $(DEVICE_LC) -o $(KDIR)/fit-$(DEVICE_LC).its -k $(KDIR)/zImage \ 40 -d $(BIN_DIR)/$(IMG_PREFIX)-system.dtb \ 41 -C none -a $(KERNEL_LOADADDR) -e $(KERNEL_ENTRY_POINT) \ 42 -A $(ARCH) -v $(LINUX_VERSION) \ 43 -r $(BIN_DIR)/$(IMG_PREFIX)-rootfs.cpio.gz -z gzip 44 PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/fit-$(DEVICE_LC).its $(KDIR)/fit-$(DEVICE_LC).itb 45 $(CP) $(KDIR)/fit-$(DEVICE_LC).itb $(BIN_DIR)/$(IMG_PREFIX)-fit.itb 46 ln -fs $(IMG_PREFIX)-fit.itb $(BIN_DIR)/fit.itb 47endef 48 49define Image/Build/Zynq 50 # Create SD card image 51 rm -f $(KDIR_TMP)/$(IMG_PREFIX)-boot.img 52 mkfs.fat $(KDIR_TMP)/$(IMG_PREFIX)-boot.img -C $(FAT32_BLOCKS) 53 mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(KDIR)/uboot-$(IMG_PREFIX)-u-boot.bin ::boot.bin 54 mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(BIN_DIR)/$(DEVICE_DTS)-system.dtb ::devicetree.dtb 55 mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(KDIR)/uboot-$(IMG_PREFIX)-u-boot-dtb.img ::u-boot.img 56 mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(KDIR)/uboot-$(IMG_PREFIX)-uEnv.txt ::uEnv.txt 57 mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-boot.img $(BIN_DIR)/$(IMG_PREFIX)-uImage ::uImage 58 59 ./gen_zynq_sdcard_img.sh \ 60 $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img \ 61 $(KDIR_TMP)/$(IMG_PREFIX)-boot.img \ 62 $(KDIR)/root.$(1) \ 63 $(CONFIG_ZYNQ_SD_BOOT_PARTSIZE) \ 64 $(CONFIG_TARGET_ROOTFS_PARTSIZE) 65 66 $(if $(CONFIG_TARGET_IMAGES_GZIP),gzip -9n -c $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img > $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img.gz) 67endef 68 69################################################# 70# Devices 71################################################# 72 73# default kernel load address 74KERNEL_LOADADDR=0x8000 75KERNEL_ENTRY_POINT=0x8000 76 77### Device macros ### 78define Device/Default 79 IMG_PREFIX := zynq 80 DEVICE_DTS := 81 PROFILE_SANITIZED := 82endef 83DEVICE_VARS += DEVICE_DTS 84 85define Device/DefaultConfig 86 DEVICE_LC = $(1) 87 IMG_PREFIX = zynq-$(1) 88 DEVICE_DTS = zynq-$(1) 89endef 90 91### ZC702 ### 92define Device/ZC702 93 $(call Device/DefaultConfig,zc702) 94endef 95 96define Device/ZED 97 $(call Device/DefaultConfig,zed) 98endef 99 100define Device/ZYBO 101 $(call Device/DefaultConfig,zybo) 102endef 103 104define Image/BuildKernel 105 $(eval $(call Device/$(PROFILE))) 106 $(call Image/boot-imgs) 107endef 108 109define Image/Build 110 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).img 111 112 $(call Image/Build/Zynq,$(1)) 113endef 114 115$(eval $(call BuildImage)) 116