zynq: add sdcard image generation support when board profile is selected
[openwrt-github/.git] / target / linux / zynq / image / Makefile
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 #
7 include $(TOPDIR)/rules.mk
8 include $(INCLUDE_DIR)/image.mk
9 include $(INCLUDE_DIR)/host.mk
10
11 FAT32_BLOCK_SIZE=1024
12 FAT32_BLOCKS=$(shell echo $$(($(CONFIG_ZYNQ_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE))))
13
14 #################################################
15 # Images
16 #################################################
17
18 define 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
47 endef
48
49 define 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)
67 endef
68
69 #################################################
70 # Devices
71 #################################################
72
73 # default kernel load address
74 KERNEL_LOADADDR=0x8000
75 KERNEL_ENTRY_POINT=0x8000
76
77 ### Device macros ###
78 define Device/Default
79         IMG_PREFIX := zynq
80         DEVICE_DTS :=
81         PROFILE_SANITIZED :=
82 endef
83 DEVICE_VARS += DEVICE_DTS
84
85 define Device/DefaultConfig
86         DEVICE_LC = $(1)
87         IMG_PREFIX = zynq-$(1)
88         DEVICE_DTS = zynq-$(1)
89 endef
90
91 ### ZC702 ###
92 define Device/ZC702
93         $(call Device/DefaultConfig,zc702)
94 endef
95
96 define Device/ZED
97         $(call Device/DefaultConfig,zed)
98 endef
99
100 define Device/ZYBO
101         $(call Device/DefaultConfig,zybo)
102 endef
103
104 define Image/BuildKernel
105         $(eval $(call Device/$(PROFILE)))
106         $(call Image/boot-imgs)
107 endef
108
109 define Image/Build
110         $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).img
111
112         $(call Image/Build/Zynq,$(1))
113 endef
114
115 $(eval $(call BuildImage))