check_size.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. # L2 Cache Share SRAM contains:
  2. # 4 KB GFH : 0x0020_0000 ~ 0x0020_1000
  3. # 316 KB Preloader : 0x0020_1000 ~ 0x0024_FFFF
  4. # 22 KB Preloader BSS2 : 0x0011_4C00 ~ 0x0011_A400
  5. PL_START_ADDR=0x00201000
  6. PL_END_ADDR=0x0024FFFF
  7. # Preloader BSS is splitted into bss1 and bss2. bss1 would be overwritten
  8. # by ATF. bss2 keeps the variables which will be used after ATF is loaded.
  9. # Since normal + security + UFS features are around 10 KB, thus we evaluate
  10. # bss2 size up to 22 KB.
  11. PL_MAX_BSS1_SIZE=36864
  12. PL_MAX_BSS2_SIZE=32768
  13. # Keep ROM size smaller than 316 KB
  14. # Keep ROM size smaller than 0x0024_FFFF - 0x0020_1000 - Signature
  15. SIG_SIZE=$(cat "${PRELOADER_OUT}/bin/sig_size.txt")
  16. if [ -z "$SIG_SIZE" ]
  17. then
  18. SIG_SIZE=292
  19. fi
  20. PL_MAX_ROM_SIZE=$((PL_END_ADDR - PL_START_ADDR - SIG_SIZE))
  21. ROM_RPT_SIZE=500
  22. RAM_RPT_SIZE=500
  23. # check image rom size
  24. PL_ROM_SIZE=$(stat -c%s "${PL_IMAGE}")
  25. if [ $PL_ROM_SIZE -gt $PL_MAX_ROM_SIZE ]; then
  26. echo "===================== Building Fail ==========================="
  27. echo " IMG ROM Size: ${PL_ROM_SIZE} bytes > ${PL_MAX_ROM_SIZE} bytes!! "
  28. echo " WARNING: Reduce your code size first then compile again!! "
  29. echo "==============================================================="
  30. echo " ROM SIZE REPORT (>${ROM_RPT_SIZE} bytes) "
  31. echo "---------------------------------------------------------------"
  32. cat ${PRELOADER_OUT}/report-codesize.txt | awk -F' ' '{if ($3=="FUNC" && $2>sz) print $0}' sz=${ROM_RPT_SIZE}
  33. echo "---------------------------------------------------------------"
  34. rm -f ${PL_IMAGE}
  35. echo "BUILD FAIL."
  36. exit 1;
  37. fi
  38. # check image bss1 size
  39. PL_BSS1_SIZE=$(mawk '{if($3=="_bss1_start") {BSS_START=("0x" $1)+0} ;
  40. if($3=="_bss1_end") {BSS_END=("0x" $1)+0}}
  41. END{printf("%d\n",BSS_END-BSS_START)}' ${PL_FUN_MAP})
  42. if [ $PL_BSS1_SIZE -gt $PL_MAX_BSS1_SIZE ]; then
  43. echo "===================== Building Fail ==========================="
  44. echo " IMG BSS1 Size: ${PL_BSS1_SIZE} bytes > ${PL_MAX_BSS1_SIZE} bytes!!"
  45. echo " WARNING: Reduce your code size first then compile again!! "
  46. echo "==============================================================="
  47. echo " BSS SIZE REPORT (>${RAM_RPT_SIZE} bytes) "
  48. echo "---------------------------------------------------------------"
  49. cat ${PRELOADER_OUT}/report-codesize.txt | awk -F' ' '{if ($3=="OBJECT" && $2>sz) print $0}' sz=${RAM_RPT_SIZE}
  50. echo "---------------------------------------------------------------"
  51. rm -f ${PL_IMAGE}
  52. echo "BUILD FAIL."
  53. exit 1;
  54. fi
  55. # check image bss2 size
  56. PL_BSS2_SIZE=$(mawk '{if($3=="_bss2_start") {BSS_START=("0x" $1)+0} ;
  57. if($3=="_bss2_end") {BSS_END=("0x" $1)+0}}
  58. END{printf("%d\n",BSS_END-BSS_START)}' ${PL_FUN_MAP})
  59. if [ $PL_BSS2_SIZE -gt $PL_MAX_BSS2_SIZE ]; then
  60. echo "===================== Building Fail ==========================="
  61. echo " IMG RAM Size: ${PL_BSS2_SIZE} bytes > ${PL_MAX_BSS2_SIZE} bytes!!"
  62. echo " WARNING: Reduce your code size first then compile again!! "
  63. echo "==============================================================="
  64. echo " BSS SIZE REPORT (>${RAM_RPT_SIZE} bytes) "
  65. echo "---------------------------------------------------------------"
  66. cat ${PRELOADER_OUT}/report-codesize.txt | awk -F' ' '{if ($3=="OBJECT" && $2>sz) print $0}' sz=${RAM_RPT_SIZE}
  67. echo "---------------------------------------------------------------"
  68. rm -f ${PL_IMAGE}
  69. echo "BUILD FAIL."
  70. exit 1;
  71. fi
  72. # check image dram size
  73. PL_DRAM_SIZE=$(mawk '{if($3=="_dram_start") {DRAM_START=("0x" $1)+0} ;
  74. if($3=="_dram_end") {DRAM_END=("0x" $1)+0}}
  75. END{printf("%d\n",DRAM_END-DRAM_START)}' ${PL_FUN_MAP})
  76. PL_SIZE=`expr $PL_BSS1_SIZE + $PL_BSS2_SIZE + $PL_ROM_SIZE`
  77. echo "===================== Building Success ==========================="
  78. echo " PL MAX ROM size : ${PL_MAX_ROM_SIZE} bytes"
  79. echo " PL ROM size : ${PL_ROM_SIZE} bytes"
  80. echo " PL BSS1 size : ${PL_BSS1_SIZE} bytes (Max ${PL_MAX_BSS1_SIZE})"
  81. echo " PL BSS2 size : ${PL_BSS2_SIZE} bytes (Max ${PL_MAX_BSS2_SIZE})"
  82. echo " PL DRAM size : ${PL_DRAM_SIZE} bytes"
  83. echo " PL ROM+BSS size : ${PL_SIZE} bytes"
  84. echo "=================================================================="