qspi-image.bb 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. SUMMARY = "QSPI Image Creator"
  2. DESCRIPTION = "Generate QSPI boot firmware, kernel image, device tree blob, kernel bundled with initramfs, NFS and SD rootfs image"
  3. LICENSE = "CLOSED"
  4. inherit core-image
  5. DEPENDS = "deploy-bootfiles core-image-minimal"
  6. LIC_FILES_CHKSUM = ""
  7. # Generate QSPI firmware & SD rootfs (NFS rootfs will be auto-generated by default IMAGE_FSTYPES, which is tar.gz)
  8. IMAGE_FSTYPES += " qspi qspi_sd"
  9. # Set image naming as such: Image-<boot_mode>-<machine>
  10. # Image-initramfs-starfive-dubhe (initramfs boot)
  11. # Image-nfs-starfive-dubhe (NFS boot)
  12. # Image-sd-starfive-dubhe (SD boot)
  13. IMAGE_BASENAME = "Image-nfs"
  14. IMAGE_TYPEDEP:qspi_sd = "ext4 wic wic.gz wic.bmap"
  15. do_rootfs[depends] += " \
  16. dubhe-image-initramfs:do_rootfs \
  17. "
  18. do_image[depends] += "\
  19. deploy-bootfiles:do_deploy \
  20. u-boot-starfive:do_deploy \
  21. "
  22. # Generate a boot firmware image that contains bootcode, bootjump, U-Boot SPL, U-Boot proper & OpenSBI
  23. IMAGE_CMD:qspi() {
  24. dd if=${DEPLOY_DIR_IMAGE}/bootcode.bin of=${DEPLOY_DIR_IMAGE}/${MACHINE}-qspi-firmware.bin bs=32 seek=0 count=128
  25. dd if=${DEPLOY_DIR_IMAGE}/bootjump.bin of=${DEPLOY_DIR_IMAGE}/${MACHINE}-qspi-firmware.bin bs=32 seek=128 count=128
  26. dd if=${DEPLOY_DIR_IMAGE}/u-boot-spl.bin of=${DEPLOY_DIR_IMAGE}/${MACHINE}-qspi-firmware.bin bs=32 seek=256 count=8192
  27. dd if=${DEPLOY_DIR_IMAGE}/u-boot.itb of=${DEPLOY_DIR_IMAGE}/${MACHINE}-qspi-firmware.bin bs=32 seek=8448 count=32768
  28. }
  29. # Generate SD image using bmaptool
  30. IMAGE_CMD:qspi_sd() {
  31. cd ${IMGDEPLOYDIR}
  32. bmaptool copy ${IMAGE_BASENAME}-${MACHINE}.wic.gz ${DEPLOY_DIR_IMAGE}/Image-sd-${MACHINE}.img
  33. }
  34. # Create an output folder for all machine variations across Dubhe series
  35. do_create_output_folder() {
  36. rm -rf ${DEPLOY_DIR_IMAGE}/Dubhe-*0
  37. mkdir -p ${DEPLOY_DIR_IMAGE}/Dubhe-80
  38. cp ${DEPLOY_DIR_IMAGE}/${MACHINE}-qspi-firmware.bin ${DEPLOY_DIR_IMAGE}/Dubhe-80
  39. cp ${DEPLOY_DIR_IMAGE}/Image ${DEPLOY_DIR_IMAGE}/Dubhe-80
  40. cp ${DEPLOY_DIR_IMAGE}/Image-initramfs-${MACHINE}.bin ${DEPLOY_DIR_IMAGE}/Dubhe-80
  41. cp ${DEPLOY_DIR_IMAGE}/${IMAGE_BASENAME}-${MACHINE}.tar.gz ${DEPLOY_DIR_IMAGE}/Dubhe-80
  42. cp ${DEPLOY_DIR_IMAGE}/Image-sd-${MACHINE}.img ${DEPLOY_DIR_IMAGE}/Dubhe-80
  43. cp -r ${DEPLOY_DIR_IMAGE}/Dubhe-80 ${DEPLOY_DIR_IMAGE}/Dubhe-90
  44. cp ${DEPLOY_DIR_IMAGE}/dubhe80_fpga.dtb ${DEPLOY_DIR_IMAGE}/Dubhe-80
  45. cp ${DEPLOY_DIR_IMAGE}/dubhe90_fpga.dtb ${DEPLOY_DIR_IMAGE}/Dubhe-90
  46. }
  47. addtask do_create_output_folder before do_populate_lic_deploy after do_image_complete
  48. COMPATIBLE_MACHINE = "starfive-dubhe"