1 #!/bin/bash 2 3 # Exit in error if we use an undefined variable (i.e. commit a typo). 4 set -u 5 6 function getvar { 7 hex=$(nm $1 | grep -v "U" | grep "$2" |awk '{print "16#" $1 }') 8 echo $(($hex)) 9 } 10 11 12 heap_start=$(getvar $1 __heap_start) 13 heap_end=$(getvar $1 __heap_end) 14 heap_sz=$(($heap_end-$heap_start)) 15 16 bss_start=$(getvar $1 __bss_start) 17 bss_end=$(getvar $1 __bss_end) 18 bss_sz=$(($bss_end-$bss_start)) 19 20 data_start=$(getvar $1 __data_start) 21 data_end=$(getvar $1 __data_end) 22 data_sz=$(($data_end-$data_start)) 23 24 stack_start=$(getvar $1 __stack_bottom) 25 stack_end=$(getvar $1 __stack_top) 26 stack_sz=$(($stack_end-$stack_start)) 27 28 code_start=$(getvar $1 __code_start) 29 code_end=$(getvar $1 __text_end) 30 code_sz=$(($code_end-$code_start)) 31 32 echo 33 echo "SIZES:" 34 35 printf " BSS SIZE: %6d bytes\n" $bss_sz 36 printf " DATA SIZE: %6d bytes\n" $data_sz 37 printf " STACK SIZE: %6d bytes\n" $stack_sz 38 printf " HEAP SIZE: %6d bytes\n" $heap_sz 39 printf " CODE SIZE: %6d bytes\n" $code_sz 40 41 flash_use=$(($code_sz+$data_sz)) 42 ram_use=$(($heap_sz+$bss_sz+$data_sz+$stack_sz)) 43 44 echo 45 printf " OS RAM USE: %6d bytes\n" $ram_use 46 printf " OS FLASH USE: %6d bytes\n" $flash_use 47