check_size.sh 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # L2 Cache Share SRAM contains:
  2. # 4 KB GFH : 0x0020_0000 ~ 0x0020_1000
  3. # 345 KB Preloader : 0x0020_1000 ~ 0x0025_77FF
  4. # 80 KB Preloader BSS2 : 0x0026_7000 ~ 0x0027_B000
  5. PL_START_ADDR=0x00201000
  6. PL_END_ADDR=0x002577FF
  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 secure buffer allocate 48 KB, thus we evaluate
  10. # bss2 size up to 80 KB on L3C.
  11. PL_MAX_RAM_SIZE=81920
  12. # Keep ROM size smaller than 345 KB
  13. # Keep ROM size smaller than 0x0025_77FF - 0x0020_1000 - Signature
  14. SIG_SIZE=$(cat "${PRELOADER_OUT}/bin/sig_size.txt")
  15. if [ -z "$SIG_SIZE" ]
  16. then
  17. SIG_SIZE=292
  18. fi
  19. PL_MAX_ROM_SIZE=$((PL_END_ADDR - PL_START_ADDR - SIG_SIZE))
  20. ROM_RPT_SIZE=500
  21. RAM_RPT_SIZE=500
  22. # check image rom size
  23. PL_ROM_SIZE=$(stat -c%s "${PL_IMAGE}")
  24. if [ $PL_ROM_SIZE -gt $PL_MAX_ROM_SIZE ]; then
  25. echo "===================== Building Fail ==========================="
  26. echo " IMG ROM Size: ${PL_ROM_SIZE} bytes > ${PL_MAX_ROM_SIZE} bytes!! "
  27. echo " WARNING: Reduce your code size first then compile again!! "
  28. echo "==============================================================="
  29. echo " ROM SIZE REPORT (>${ROM_RPT_SIZE} bytes) "
  30. echo "---------------------------------------------------------------"
  31. cat ${PRELOADER_OUT}/report-codesize.txt | awk -F' ' '{if ($3=="FUNC" && $2>sz) print $0}' sz=${ROM_RPT_SIZE}
  32. echo "---------------------------------------------------------------"
  33. rm -f ${PL_IMAGE}
  34. echo "BUILD FAIL."
  35. exit 1;
  36. fi
  37. # check image ram size
  38. PL_RAM_SIZE=$(mawk '{if($3=="_bss2_start") {BSS_START=("0x" $1)+0} ;
  39. if($3=="_bss2_end") {BSS_END=("0x" $1)+0}}
  40. END{printf("%d\n",BSS_END-BSS_START)}' ${PL_FUN_MAP})
  41. if [ $PL_RAM_SIZE -gt $PL_MAX_RAM_SIZE ]; then
  42. echo "===================== Building Fail ==========================="
  43. echo " IMG RAM Size: ${PL_RAM_SIZE} bytes > ${PL_MAX_RAM_SIZE} bytes!!"
  44. echo " WARNING: Reduce your code size first then compile again!! "
  45. echo "==============================================================="
  46. echo " RAM SIZE REPORT (>${RAM_RPT_SIZE} bytes) "
  47. echo "---------------------------------------------------------------"
  48. cat ${PRELOADER_OUT}/report-codesize.txt | awk -F' ' '{if ($3=="OBJECT" && $2>sz) print $0}' sz=${RAM_RPT_SIZE}
  49. echo "---------------------------------------------------------------"
  50. rm -f ${PL_IMAGE}
  51. echo "BUILD FAIL."
  52. exit 1;
  53. fi
  54. # check image dram size
  55. PL_DRAM_SIZE=$(mawk '{if($3=="_dram_start") {DRAM_START=("0x" $1)+0} ;
  56. if($3=="_dram_end") {DRAM_END=("0x" $1)+0}}
  57. END{printf("%d\n",DRAM_END-DRAM_START)}' ${PL_FUN_MAP})
  58. PL_SIZE=`expr $PL_RAM_SIZE + $PL_ROM_SIZE`
  59. echo "===================== Building Success ==========================="
  60. echo " PL MAX ROM size : ${PL_MAX_ROM_SIZE} bytes"
  61. echo " PL ROM size : ${PL_ROM_SIZE} bytes"
  62. echo " PL RAM size : ${PL_RAM_SIZE} bytes"
  63. echo " PL DRAM size : ${PL_DRAM_SIZE} bytes"
  64. echo " PL ROM+RAM size : ${PL_SIZE} bytes"
  65. echo "=================================================================="