скрытое меню

Настройки компилятора и линковщика

Так исторически сложилось , что за внешне самой красивой средой программирования всегда прячутся консольные команды , которые работают из командной строки.

Почему? - просто потому , что они созданы не для продажи (бесплатно) для программистов всея мира...

Компилятор

Настройки компилятора

фотка 1

Command : arm-atollic-eabi-gcc -c . Это компилятор , у меня находится в "C:\Program Files (x86)\Atollic\TrueSTUDIO for STM32 9.3.0\ARMTools\bin".

Вот такие параметры командной строки у нас в 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:\DEVELOPMENT\AtollicTrueStudio\STM32F205\STM32F205VGT6_FreeRtos_UsbHost_LCD_PRN_Kb_QR\Src\MY\QRLib"
-Og
-ffunction-sections
-fdata-sections
-g3
-fstack-usage
-Wall
-specs=nano.specs

По выводу консоли сборки все ,что относится к комппиляции начинается с : arm-atollic-eabi-gcc -c !

Когда начиначется arm-atollic-eabi-gcc -o, это уже сборка (линковка).

Линковщик (сборщик)

Настройки линковки :

фотка 2


-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

фотка 3

Ключ "–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