mt7623.mk 6.7 KB

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