blob: e7401114cc4781f234a406eebcb0bf108726ec33 [file] [log] [blame]
#!/bin/bash
# Exit in error if we use an undefined variable (i.e. commit a typo).
set -u
function getvar {
hex=$(nm $1 | grep -v "U" | grep "$2" |awk '{print "16#" $1 }')
echo $(($hex))
}
heap_start=$(getvar $1 __heap_start)
heap_end=$(getvar $1 __heap_end)
heap_sz=$(($heap_end-$heap_start))
bss_start=$(getvar $1 __bss_start)
bss_end=$(getvar $1 __bss_end)
bss_sz=$(($bss_end-$bss_start))
data_start=$(getvar $1 __data_start)
data_end=$(getvar $1 __data_end)
data_sz=$(($data_end-$data_start))
stack_start=$(getvar $1 __stack_bottom)
stack_end=$(getvar $1 __stack_top)
stack_sz=$(($stack_end-$stack_start))
code_start=$(getvar $1 __code_start)
code_end=$(getvar $1 __text_end)
code_sz=$(($code_end-$code_start))
echo
echo "SIZES:"
printf " BSS SIZE: %6d bytes\n" $bss_sz
printf " DATA SIZE: %6d bytes\n" $data_sz
printf " STACK SIZE: %6d bytes\n" $stack_sz
printf " HEAP SIZE: %6d bytes\n" $heap_sz
printf " CODE SIZE: %6d bytes\n" $code_sz
flash_use=$(($code_sz+$data_sz))
ram_use=$(($heap_sz+$bss_sz+$data_sz+$stack_sz))
echo
printf " OS RAM USE: %6d bytes\n" $ram_use
printf " OS FLASH USE: %6d bytes\n" $flash_use