mt7623.mk 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_IMAGE
  2. # The bootrom of MT7623 expects legacy MediaTek headers present in
  3. # exactly the location also used for the primary GPT partition table.
  4. # (*MMC_BOOT and BRLYT)
  5. # Hence only MSDOS/MBR partitioning can work here.
  6. #
  7. # ------------------------ Sector Offset
  8. # | MBR + SDMMC_BOOT | 0 0x0
  9. # |----------------------|
  10. # | BRLYT header | 1 0x200
  11. # |----------------------|
  12. # . .
  13. # . .
  14. # |----------------------|
  15. # | | 4 0x800
  16. # | |
  17. # | Preloader |
  18. # . .
  19. # . .
  20. # | | 639
  21. # |----------------------|
  22. # | MBR partition #1 | 640 0x50000
  23. # | |
  24. # | U-Boot |
  25. # . .
  26. # . .
  27. # | | 1663
  28. # |----------------------|
  29. # | MBR partition #2 |
  30. # | |
  31. # | Recovery |
  32. # . .
  33. # . (uImage.FIT) .
  34. # | |
  35. # |----------------------|
  36. # | MBR partition #3 |
  37. # | |
  38. # | Production |
  39. # | |
  40. # | (uImage.FIT, |
  41. # . rootfs_Data.) .
  42. # . .
  43. # | |
  44. # ------------------------
  45. #
  46. # For eMMC boot, everything up to and including the preloader must be
  47. # written to /dev/mmcblk0boot0, with the SDMMC_BOOT header changed to
  48. # read EMMC_BOOT\0 instead.
  49. #
  50. # The contents of the main eMMC are identical to the SD card layout,
  51. # with the preloader loading 512KiB of U-Boot starting at 0x50000.
  52. define Build/mt7623-mbr
  53. cp $@ [email protected] 2>/dev/null || true
  54. ptgen -o [email protected] -h 4 -s 63 -a 0 -l 1024 \
  55. -t 0x41 -N uboot -p 1M@$(UBOOT_OFFSET) \
  56. -t 0xea -N recovery -p 40M@4M \
  57. -t 0x2e -N production -p $(CONFIG_TARGET_ROOTFS_PARTSIZE)M@48M
  58. echo -en \
  59. $(if $(findstring sdmmc,$1),"SDMMC_BOOT\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00") \
  60. $(if $(findstring emmc,$1),"EMMC_BOOT\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00") \
  61. | dd bs=1 of="[email protected]" seek=0 conv=notrunc
  62. echo -en "BRLYT\x00\x00\x00\x01\x00\x00\x00\x00\x08\x00\x00\x00\x08\x00\x00\x42\x42\x42\x42\x08\x00\x01\x00\x00\x08\x00\x00\x00\x08\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"\
  63. | dd bs=1 of="[email protected]" seek=512 conv=notrunc
  64. cat [email protected] >> $@
  65. rm [email protected]
  66. endef
  67. define Build/append-preloader
  68. cat $(STAGING_DIR_IMAGE)/$1-preloader.bin >> $@
  69. endef
  70. define Build/append-bootloader
  71. cat $(STAGING_DIR_IMAGE)/$1-$(UBOOT_IMAGE) >> $@
  72. endef
  73. define Build/scatterfile
  74. ./gen_scatterfile.sh $(subst mt,MT,$(SUBTARGET)) "$1" \
  75. $(subst -scatter.txt,,$(notdir $@)) "$(DEVICE_TITLE)" > $@
  76. endef
  77. define Device/bananapi_bpi-r2
  78. DEVICE_VENDOR := Bananapi
  79. DEVICE_MODEL := BPi-R2
  80. DEVICE_DTS := mt7623n-bananapi-bpi-r2
  81. DEVICE_PACKAGES := mkf2fs e2fsprogs kmod-usb3 kmod-ata-ahci
  82. UBOOT_OFFSET := 320k
  83. UBOOT_TARGET := mt7623n_bpir2
  84. UBOOT_IMAGE := u-boot.bin
  85. UBOOT_PATH := $(STAGING_DIR_IMAGE)/$$(UBOOT_TARGET)-$$(UBOOT_IMAGE)
  86. IMAGES := sysupgrade.itb
  87. KERNEL := kernel-bin | gzip
  88. KERNEL_INITRAMFS_SUFFIX := -recovery.itb
  89. KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb with-initrd
  90. IMAGE_SIZE := $$(shell expr 48 + $$(CONFIG_TARGET_ROOTFS_PARTSIZE))m
  91. IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb external-static-with-rootfs | append-metadata
  92. ARTIFACT/preloader.bin := mt7623-mbr emmc |\
  93. pad-to 2k | append-preloader $$(UBOOT_TARGET)
  94. ARTIFACT/u-boot.bin := append-uboot
  95. ARTIFACT/sdcard.img.gz := mt7623-mbr sdmmc |\
  96. pad-to 2k | append-preloader $$(UBOOT_TARGET) |\
  97. pad-to $$(UBOOT_OFFSET) | append-bootloader $$(UBOOT_TARGET) |\
  98. pad-to 4092k | mt7623-mbr emmc |\
  99. $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),\
  100. pad-to 4M | append-image-stage initramfs-recovery.itb | check-size 48m |\
  101. ) \
  102. $(if $(CONFIG_TARGET_ROOTFS_SQUASHFS),\
  103. pad-to 48M | append-image squashfs-sysupgrade.itb | check-size |\
  104. ) \
  105. gzip
  106. ARTIFACTS := u-boot.bin preloader.bin sdcard.img.gz
  107. SUPPORTED_DEVICES := bananapi,bpi-r2
  108. endef
  109. TARGET_DEVICES += bananapi_bpi-r2
  110. define Device/unielec_u7623-02
  111. DEVICE_VENDOR := UniElec
  112. DEVICE_MODEL := U7623-02
  113. # When we use FIT images, U-Boot will populate the /memory node with the correct
  114. # memory size discovered from the preloader, so we don't need separate builds.
  115. DEVICE_DTS := mt7623a-unielec-u7623-02
  116. DEVICE_DTS_DIR := ../dts
  117. DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \
  118. mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci
  119. UBOOT_OFFSET := 256k
  120. UBOOT_TARGET := mt7623a_unielec_u7623
  121. UBOOT_IMAGE := u-boot-mtk.bin
  122. UBOOT_PATH := $(STAGING_DIR_IMAGE)/$$(UBOOT_TARGET)-$$(UBOOT_IMAGE)
  123. IMAGE_SIZE := $$(shell expr 48 + $$(CONFIG_TARGET_ROOTFS_PARTSIZE))m
  124. IMAGES := sysupgrade.itb
  125. KERNEL := kernel-bin | gzip
  126. KERNEL_INITRAMFS_SUFFIX := -recovery.itb
  127. KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd
  128. IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata
  129. ARTIFACT/u-boot.bin := append-uboot
  130. # vendor Preloader seems not to care about SDMMC_BOOT/EMMC_BOOT header,
  131. # but OpenWrt expects 'SDMM' magic for sysupgrade.
  132. ARTIFACT/emmc.img.gz := mt7623-mbr sdmmc |\
  133. pad-to $$(UBOOT_OFFSET) | append-bootloader $$(UBOOT_TARGET) |\
  134. $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),\
  135. pad-to 4M | append-image-stage initramfs-recovery.itb | check-size 48m |\
  136. ) \
  137. $(if $(CONFIG_TARGET_ROOTFS_SQUASHFS),\
  138. pad-to 48M | append-image squashfs-sysupgrade.itb | check-size |\
  139. ) \
  140. gzip | append-metadata
  141. ARTIFACT/scatter.txt := scatterfile emmc.img.gz
  142. ARTIFACTS := u-boot.bin scatter.txt emmc.img.gz
  143. SUPPORTED_DEVICES += unielec,u7623-02-emmc-512m
  144. endef
  145. TARGET_DEVICES += unielec_u7623-02
  146. # Legacy helper for U7623 board
  147. define Build/fat-recovery-fs
  148. rm -f [email protected]
  149. mkfs.fat -C [email protected] 3070
  150. cat [email protected] >> $@
  151. endef
  152. # Legacy partial image for U7623
  153. # This preserves the vendor U-Boot and starts with a uImage at 0xA00
  154. define Device/unielec_u7623-02-emmc-512m-legacy
  155. DEVICE_VENDOR := UniElec
  156. DEVICE_MODEL := U7623-02
  157. DEVICE_VARIANT := eMMC/512MiB RAM (legacy image)
  158. DEVICE_DTS := mt7623a-unielec-u7623-02-emmc-512m
  159. DEVICE_DTS_DIR := ../dts
  160. KERNEL_NAME := zImage
  161. KERNEL := kernel-bin | append-dtb | uImage none
  162. KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none
  163. DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \
  164. mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci \
  165. partx-utils
  166. IMAGES := sysupgrade.bin.gz
  167. IMAGE/sysupgrade.bin.gz := append-kernel |\
  168. pad-to 4864k | fat-recovery-fs |\
  169. pad-to 7936k | append-rootfs |\
  170. gzip | append-metadata
  171. SUPPORTED_DEVICES := unielec,u7623-02-emmc-512m
  172. endef
  173. TARGET_DEVICES += unielec_u7623-02-emmc-512m-legacy