Первоначальные сведения о сборке на примере среды Atollic True Studio.
Так исторически сложилось , что за внешне самой красивой средой программирования всегда прячутся консольные команды , которые работают из командной строки.
Почему? - просто потому , что они созданы не для продажи (бесплатно) для программистов всея мира...
Компилятор
Настройки компилятора
Command : arm-atollic-eabi-gcc -c . Это компилятор , у меня находится в "C:Program Files (x86)AtollicTrueSTUDIO for STM32 9.3.0ARMToolsin".
Вот такие параметры командной строки у нас в Atollic по умолчанию для комилятора (All options):
-mthumb
-mcpu=cortex-m3
-std=gnu11
-D__weak=__attribute__((weak))
-D__packed=__attribute__((__packed__))
-DUSE_HAL_DRIVER
-DSTM32F205xx
-I"../src/MY"
-I../Inc
-I../Drivers/STM32F2xx_HAL_Driver/Inc
-I../Drivers/STM32F2xx_HAL_Driver/Inc/Legacy
-I../Middlewares/Third_Party/FreeRTOS/Source/include
-I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS
-I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3
-I../Drivers/CMSIS/Device/ST/STM32F2xx/Include
-I../Drivers/CMSIS/Include
-I"D:DEVELOPMENTAtollicTrueStudioSTM32F205STM32F205VGT6_FreeRtos_UsbHost_LCD_PRN_Kb_QRSrcMYQRLib"
-Og
-ffunction-sections
-fdata-sections
-g3
-fstack-usage
-Wall
-specs=nano.specs
По выводу консоли сборки все ,что относится к комппиляции начинается с : arm-atollic-eabi-gcc -c !
Когда начиначется arm-atollic-eabi-gcc -o, это уже сборка (линковка).
Линковщик (сборщик)
Настройки линковки :
-mthumb
-mcpu=cortex-m3
-T"../STM32F205VE_FLASH.ld"
-specs=nosys.specs
-static "-Wl,-Map=${BuildArtifactFileBaseName}.map"
-Wl,--gc-sections
-Wl,--defsym=malloc_getpagesize_P=0x80
-Wl,--start-group
-lc
-lm
-Wl,--end-group -specs=nano.specs
Тут мы получем на выходе *.elf файл.
Закладка Build (objcopy) , Post build steps
Ключ "–O" определяет формат выходного файла.
objcopy физически готовит файл прошивки для контроллера , убирая лишнюю информацию из elf файла по отладке и т.д., минимизирую размер прошивки.
Выполняется objcopy в самом конце :
arm-atollic-eabi-objcopy.exe -O ihex STM32F205VGT6_FreeRtos_UsbHost_LCD_PRN_Kb_QR.elf STM32F205VGT6_FreeRtos_UsbHost_LCD_PRN_Kb_QR.hex
Полезно в консоле сборки посмотреть :
Print size information
text data bss dec hex filename
29288 460 108952 138700 21dcc STM32F205VGT6_FreeRtos_UsbHost_LCD_PRN_Kb_QR.elf
Print size information done