image.mk 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #==============================================================================
  2. # Build the SD/flash image for StarFive VisionFive V1.
  3. #==============================================================================
  4. #visionfive_v1_uboot_all
  5. #visionfive_v1_linux_all
  6. #$(initramfs)
  7. #visionfive_v1_uboot_build_tools
  8. #make buildroot_rootfs -jx
  9. #make DISK=/dev/sdX format-nvdla-rootfs && sync
  10. #TF 卡分区信息:
  11. VISIONFIVE_V1_BOOT_TYPE = EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  12. VISIONFIVE_V1_ROOTFS_TYPE = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
  13. VISIONFIVE_V1_BOOTLOADER_TYPE = 5B193300-FC78-40CD-8002-E86C45580B47
  14. #for debug
  15. VISIONFIVE_V1_UENV_PATH=$(SDK_PREBUILD_DIR)/image$(CONFIG_BOARD_SUBFIX)/uEnv.txt
  16. CONFIG_VISIONFIVE_V1_ROOTFS_IMAGE=$(SDK_PREBUILD_DIR)/image$(CONFIG_BOARD_SUBFIX)/test.ext4
  17. CONFIG_VISIONFIVE_V1_BOOT_START=4096
  18. CONFIG_VISIONFIVE_V1_BOOT_SECTORS=466943
  19. CONFIG_VISIONFIVE_V1_BOOTLOADER_START=471040
  20. CONFIG_VISIONFIVE_V1_BOOTLOADER_SECTORS=2047
  21. CONFIG_VISIONFIVE_V1_ROOTFS_START=475136
  22. CONFIG_VISIONFIVE_V1_ROOTFS_SECTORS=409600
  23. #for debug
  24. VISIONFIVE_V1_BOOT_END=$(shell expr \
  25. $(CONFIG_VISIONFIVE_V1_BOOT_START) + \
  26. $(CONFIG_VISIONFIVE_V1_BOOT_SECTORS))
  27. VISIONFIVE_V1_BOOTLOADER_END=$(shell expr \
  28. $(CONFIG_VISIONFIVE_V1_BOOTLOADER_START) + \
  29. $(CONFIG_VISIONFIVE_V1_BOOTLOADER_SECTORS))
  30. #VISIONFIVE_V1_ROOTFS_END=$(shell expr \
  31. # $(CONFIG_VISIONFIVE_V1_ROOTFS_START) + \
  32. # $(CONFIG_VISIONFIVE_V1_ROOTFS_SECTORS))
  33. #0 means 'to the end of image'
  34. VISIONFIVE_V1_ROOTFS_END=0
  35. VISIONFIVE_V1_SD_IMAGE_SECTORS_NUM=$(shell expr \
  36. $(CONFIG_VISIONFIVE_V1_ROOTFS_START) + \
  37. $(CONFIG_VISIONFIVE_V1_ROOTFS_SECTORS))
  38. #4K = 512 * 8
  39. VISIONFIVE_V1_SD_IMAGE_BLK_SECTORS=8
  40. VISIONFIVE_V1_SD_IMAGE_COUNT=$(shell expr \
  41. $(VISIONFIVE_V1_SD_IMAGE_SECTORS_NUM) / \
  42. $(VISIONFIVE_V1_SD_IMAGE_BLK_SECTORS) + \
  43. 1)
  44. VISIONFIVE_V1_SD_IMAGE_DIR=$(SDK_OUTPUT_DIR)/image$(CONFIG_BOARD_SUBFIX)
  45. VISIONFIVE_V1_SD_IMAGE_FILE=flash$(CONFIG_BOARD_SUBFIX).img
  46. visionfive_v1_create_image:
  47. mkdir -p $(VISIONFIVE_V1_SD_IMAGE_DIR)/
  48. dd iflag=fullblock bs=4K count=$(VISIONFIVE_V1_SD_IMAGE_COUNT) \
  49. if=/dev/zero \
  50. of=$(VISIONFIVE_V1_SD_IMAGE_DIR)/$(VISIONFIVE_V1_SD_IMAGE_FILE)
  51. tree -h --timefmt "%Y/%m/%d %H:%M:%S" $(VISIONFIVE_V1_SD_IMAGE_DIR)
  52. visionfive_v1_format_image: visionfive_v1_create_image
  53. sgdisk --clear -g \
  54. --new=1:$(CONFIG_VISIONFIVE_V1_BOOT_START):$(VISIONFIVE_V1_BOOT_END) \
  55. --change-name=1:"Vfat Boot" \
  56. --typecode=1:$(VISIONFIVE_V1_BOOT_TYPE) \
  57. --new=2:$(CONFIG_VISIONFIVE_V1_BOOTLOADER_START):$(VISIONFIVE_V1_BOOTLOADER_END) \
  58. --change-name=2:uboot \
  59. --typecode=2:$(VISIONFIVE_V1_BOOTLOADER_TYPE) \
  60. --new=3:$(CONFIG_VISIONFIVE_V1_ROOTFS_START):$(VISIONFIVE_V1_ROOTFS_END) \
  61. --change-name=3:root \
  62. --typecode=3:$(VISIONFIVE_V1_ROOTFS_TYPE) \
  63. $(VISIONFIVE_V1_SD_IMAGE_DIR)/$(VISIONFIVE_V1_SD_IMAGE_FILE)
  64. visionfive_v1_make_image:
  65. pushd $(VISIONFIVE_V1_SD_IMAGE_DIR); \
  66. mkdir -p mnt;\
  67. LOOP_DEVS=`sudo kpartx -av $(VISIONFIVE_V1_SD_IMAGE_FILE) | awk '{print $$3}'`;\
  68. BOOT_LOOP_DEV=$${LOOP_DEVS%p1*}p1; \
  69. BL_LOOP_DEV=$${LOOP_DEVS%p1*}p2; \
  70. ROOT_LOOP_DEV=$${LOOP_DEVS%p1*}p3; \
  71. sudo mkfs.vfat /dev/mapper/$${BOOT_LOOP_DEV};\
  72. mkdir -p mnt/boot;\
  73. sudo mount /dev/mapper/$${BOOT_LOOP_DEV} mnt/boot; sleep 3; \
  74. sudo cp -rf $(SDK_OUTPUT_DIR)/$(CONFIG_CONFIG_FILE).fit \
  75. $(VISIONFIVE_V1_UENV_PATH) mnt/boot/ ;\
  76. tree -h --timefmt "%Y/%m/%d %H:%M:%S" mnt/boot/; \
  77. sync; sleep 3; sudo umount mnt/boot; \
  78. rm -rf mnt; \
  79. sudo dd if=$(join $(UBOOT_INSTALL_DIR), $(CONFIG_BOARD_SUBFIX))/u-boot.bin \
  80. of=/dev/mapper/$${BL_LOOP_DEV} bs=4K; sync; \
  81. sudo dd if=$(CONFIG_VISIONFIVE_V1_ROOTFS_IMAGE) \
  82. of=/dev/mapper/$${ROOT_LOOP_DEV} bs=4K; sync; \
  83. sudo resize2fs /dev/mapper/$${ROOT_LOOP_DEV}; \
  84. sudo fsck.ext4 /dev/mapper/$${ROOT_LOOP_DEV}; \
  85. sudo kpartx -d $(VISIONFIVE_V1_SD_IMAGE_FILE); sync; \
  86. sudo growpart $(VISIONFIVE_V1_SD_IMAGE_FILE) 3 ; \
  87. popd