arduinoarmsizebinutils

Get free space left on target from arm-none-eabi-size


I want to calculate space left on my embedded target.

The Arduino IDE shows this in the output window:

Sketch uses 9544 bytes (3%) of program storage space. Maximum is 262144 bytes.

avr-size has -C option that shows "xx% left":

$ avr-size -C --mcu=atmega32u4 build/myproject.hex
AVR Memory Usage
----------------
Device: atmega32u4

Program:    8392 bytes (25.6% Full)
(.text + .data + .bootloader)

Data:       2196 bytes (85.8% Full)
(.data + .bss + .noinit)

However, I'm actually writing a CMake file to develop code for an Arduino board with an Arm Cortex M0 CPU, so I use arm-none-eabi-size, which shows the code size like this:

[100%] Built target hex
   text    data     bss     dec     hex filename
   8184     208    1988   10380    288c build/myproject
[100%] Built target size
*** Finished ***

Is there a way to calculate the program and data space left on the device? Or do I need to regex the output and calculate percent of a hard-coded value?


Solution

  • If you are using arm-none-eabi toolchain, you can add linker option -Wl,--print-memory-usage which prints RAM and Flash usage in percentage. Output looks like this:

    Memory region         Used Size  Region Size  %age Used
                 RAM:        8968 B        20 KB     43.79%
               FLASH:       34604 B       128 KB     26.40%
    

    I am using make file generated by CubeMX, to enable this print I added the option at the end of LDFLAGS line. For CMake this thread might be useful.