gen_stm32_sdcard_img.sh 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #!/bin/sh
  2. # Copyright (C) 2024 Bootlin
  3. set -ex
  4. [ $# -eq 8 ] || {
  5. echo "SYNTAX: $0 <file> <fsbl> <fip> <bootfs image> <rootfs image> <env size> <bootfs size> <rootfs size>"
  6. exit 1
  7. }
  8. OUTPUT="${1}"
  9. FSBL="${2}"
  10. FIP="${3}"
  11. BOOTFS="${4}"
  12. ROOTFS="${5}"
  13. ENVSIZE="$((${6} / 1024))"
  14. BOOTFSSIZE="${7}"
  15. ROOTFSSIZE="${8}"
  16. set $(ptgen -o "${OUTPUT}" -g -a 4 -l 2048 -G ${GUID} -N fsbla -p 2M -N fip -p 3M -N u-boot-env -p "${ENVSIZE}" -N boot -p${BOOTFSSIZE}M -N rootfs -p ${ROOTFSSIZE}M)
  17. FSBLAOFFSET="$((${1} / 512))"
  18. FSBLASIZE="$((${2} / 512))"
  19. FIPOFFSET="$((${3} / 512))"
  20. FIPSIZE="$((${4} / 512))"
  21. ENVOFFSET="$((${5} / 512))"
  22. ENVSIZE="$((${6} / 512))"
  23. BOOTFSOFFSET="$((${7} / 512))"
  24. BOOTFSSIZE="$((${8} / 512))"
  25. ROOTFSOFFSET="$((${9} / 512))"
  26. ROOTFSSIZE="$((${10} / 512))"
  27. dd bs=512 if="${FSBL}" of="${OUTPUT}" seek="${FSBLAOFFSET}" conv=notrunc
  28. dd bs=512 if="${FIP}" of="${OUTPUT}" seek="${FIPOFFSET}" conv=notrunc
  29. dd bs=512 if=/dev/zero of="${OUTPUT}" seek="${ENVOFFSET}" count="${ENVSIZE}" conv=notrunc
  30. dd bs=512 if="${BOOTFS}" of="${OUTPUT}" seek="${BOOTFSOFFSET}" conv=notrunc
  31. dd bs=512 if="${ROOTFS}" of="${OUTPUT}" seek="${ROOTFSOFFSET}" conv=notrunc