How to get code size of the library
Embedded platforms have memory limitations. Deciding what library to use on your product is important, to save overall code size. Therefore, you need the code size of Mbed TLS. This article is relevant for platforms running on Cortex M3/M4.
Mbed TLS is a configurable library, so its code size varies, depending on the configuration used. For more information on how to control and reduce the code size, see Reducing Mbed TLS memory and storage footprint.
Obtain the code size of the library by using the arm-none-eabi-size -t
command (when using the arm-none-eabi
toolchain).
Mbed TLS supplies a script that checks the footprint of the library. The script shows the code size of the library compiled with several configuration files:
include/mbedtls/mbedtls_config.h
(include/mbedtls/config.h
in Mbed TLS 2.x) - The default configuration file, unless modified by the user.configs/config-thread.h
- A minimal configuration example of Mbed TLS using Thread networking protocol.configs/config-suite-b.h
- A minimal configuration example supporting NSA Suite B.configs/config-ccm-psk-tls1_2.h
- A minimal configuration example supporting preshared key and with AES-CCM.
Prerequisites
arm-none-eabi
toolchain installed and found in thePATH
environment variable.make
.POSIX shell.
Updated
include/mbedtls/mbedtls_config.h
with the required configuration. See How do I configure Mbed TLS for more information.
Note: The arm-none-eabi
toolchain may give different results than other toolchains, such as ARMCC
or `IAR.
Usage
./scripts/footprint.sh
Output will be:
Footprint of standard configurations (minus net_sockets.c, timing.c, fs_io) for bare-metal ARM Cortex-M3/M4 microcontrollers. Mbed TLS 2.4.1 (git head: af610a0baf) arm-none-eabi-gcc (15:4.9.3+svn231177-1) 4.9.3 20150529 (prerelease) CFLAGS=-Os -march=armv7-m -mthumb default (include/mbedtls/config.h): text data bss dec hex filename 250087 612 9360 260059 3f7db (TOTALS) thread (configs/config-thread.h): text data bss dec hex filename 58021 19 10 58050 e2c2 (TOTALS) suite-b (configs/config-suite-b.h): text data bss dec hex filename 79988 88 11 80087 138d7 (TOTALS) psk (configs/config-ccm-psk-tls1_2.h): text data bss dec hex filename 28115 12 4 28131 6de3 (TOTALS)
When you use Mbed TLS as a static library, you can optimize the linker to omit any unused symbol. You can find full symbol information in mbedtls-footprint.zip
.