Originally published at
Шалаш инженера. You can comment here or
there.
Если хочется узнать какой код занимает больше всего флэша в микроконтроллере, стоит воспользоваться утилитой nm. Параметр radix задаёт формат отображения чисел. Десятичный удобен для понимания размера, но портит адреса. Пример цели size для make:
size:
$(PREFIX)nm --print-size --size-sort --radix=d $(BUILD_DIR)/$(TARGET).elf
Таким образом можно узнать, что функция HAL_RCC_OscConfig занимает больше килобайта!
arm-none-eabi-nm --print-size --size-sort --radix=d ./build/target.elf
....
134218896 00001100 T HAL_RCC_OscConfig
Для некоторых случаев можно сократить этот размер закомментировав настройку ненужных источников тактирования. Странно, что это не делается автоматически для источников, отсутствующих в данном МК.