STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Dimon456 писал(а):есть не большое отличие EmBitz от моего компилятора
EmBitz это не компилятор а IDE. В ней используется GCC.
Судя по логу у вас не самая свежая версия. В GCC 4.8 насколько помню были проблемы с LTO. Не помешало бы обновится до текущей версии GCC 9.3.
Dimon456 писал(а):вот и код получился больше, видимо добавил больше чем нужно
Многое зависит от опций сборки. Попробуйте собрать с -Os и -flto.
Желательно использовать текущую версию GCC.
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Reflector, EmBitz мне ни чего не выдает, это очень плохо, ни знаю как посмотреть.
А мой компилятор собирает с такими ключами

Код: Выделить всё

-mcpu=cortex-m0; -mthumb; -g; -nostartfiles; -Map=proekt_digit_stm32f030x.map; -Os; --gc-sections; --specs=nano.specs; -L${linkdir}; -T${linkdir}/arm-gcc-link.ld; 
-mcpu=cortex-m0; -mthumb; -Wall; -ffunction-sections; -g; -Os; -gdwarf-2; -std=gnu99; -fstack-usage; -DUSE_STDPERIPH_DRIVER; -D__ASSEMBLY__; -DSTM32F031F6; -DSTM32F0XX_LD; -I.; 
они по умолчанию, я их и не трогал, единственно только вот -Os.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Dimon456 писал(а):EmBitz мне ни чего не выдает
Меню Настроки --> Tools и выбрать полная командная строка
СпойлерИзображение
1.png
(57.44 КБ) 214 скачиваний
Лог будет на вкладке "Журнал сборки".
СпойлерИзображение
2.png
(26.45 КБ) 225 скачиваний
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Мурик писал(а):В GCC 4.8 насколько помню были проблемы с LTO. Не помешало бы обновится до текущей версии GCC 9.3.
да версия старая, в новой версии код становится байт на 600 больше, по этому старая версия.
Вот лог сборки с проекта EmBitz
Спойлер

Код: Выделить всё

-------------- Clean: Release in em_digit_f0 ---------------

Cleaned "em_digit_f0 - Release"

-------------- Build: Release in em_digit_f0 ---------------

arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_adc.c -o obj\release\spl\src\stm32f0xx_adc.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_can.c -o obj\release\spl\src\stm32f0xx_can.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_cec.c -o obj\release\spl\src\stm32f0xx_cec.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_comp.c -o obj\release\spl\src\stm32f0xx_comp.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_crc.c -o obj\release\spl\src\stm32f0xx_crc.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_crs.c -o obj\release\spl\src\stm32f0xx_crs.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_dac.c -o obj\release\spl\src\stm32f0xx_dac.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_dbgmcu.c -o obj\release\spl\src\stm32f0xx_dbgmcu.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_dma.c -o obj\release\spl\src\stm32f0xx_dma.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_exti.c -o obj\release\spl\src\stm32f0xx_exti.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_flash.c -o obj\release\spl\src\stm32f0xx_flash.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_gpio.c -o obj\release\spl\src\stm32f0xx_gpio.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_i2c.c -o obj\release\spl\src\stm32f0xx_i2c.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_iwdg.c -o obj\release\spl\src\stm32f0xx_iwdg.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_misc.c -o obj\release\spl\src\stm32f0xx_misc.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_pwr.c -o obj\release\spl\src\stm32f0xx_pwr.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_rcc.c -o obj\release\spl\src\stm32f0xx_rcc.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_rtc.c -o obj\release\spl\src\stm32f0xx_rtc.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_spi.c -o obj\release\spl\src\stm32f0xx_spi.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_syscfg.c -o obj\release\spl\src\stm32f0xx_syscfg.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_tim.c -o obj\release\spl\src\stm32f0xx_tim.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_usart.c -o obj\release\spl\src\stm32f0xx_usart.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c SPL\src\stm32f0xx_wwdg.c -o obj\release\spl\src\stm32f0xx_wwdg.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\color_transform.c -o obj\release\src\color_transform.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\main.c -o obj\release\src\main.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\mmc.c -o obj\release\src\mmc.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
src\main.c: In function 'get_next_script':
src\main.c:207:7: warning: implicit declaration of function 'sd_check' [-Wimplicit-function-declaration]
    if(sd_check()) return false;
       ^
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\pff.c -o obj\release\src\pff.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\pixel.c -o obj\release\src\pixel.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
src\pixel.c: In function 'synchronize':
src\pixel.c:169:2: warning: implicit declaration of function 'wdt_reset' [-Wimplicit-function-declaration]
  wdt_reset();
  ^
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\script_cmd.c -o obj\release\src\script_cmd.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\script_exec.c -o obj\release\src\script_exec.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\spi.c -o obj\release\src\spi.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\startup_stm32f0xx.S -o obj\release\src\startup_stm32f0xx.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\stm32_init.c -o obj\release\src\stm32_init.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\system_stm32f0xx.c -o obj\release\src\system_stm32f0xx.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -DSTM32F031F6 -DSTM32F0XX -DUSE_STDPERIPH_DRIVER  -c src\xprintf.c -o obj\release\src\xprintf.o -MMD -I.\inc -I.\src -I.\cmsis -I.\SPL\inc -I.\SPL\src -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi\include -IC:\EmBitz\share\em_armgcc\bin\..\arm-none-eabi -IC:\EmBitz\share\em_armgcc\bin\..\lib\cmsis\include 
arm-none-eabi-gcc.exe -mcpu=cortex-m0  -mthumb  -Wl,--defsym=__HEAP_SIZE=0x0000 -Wl,--defsym=__STACK_SIZE=0x0100 -mfloat-abi=soft -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2  -Wl,-script="./stm32f031f6_flash.ld" -o bin\Release\em_digit_f0.elf obj\release\spl\src\stm32f0xx_adc.o obj\release\spl\src\stm32f0xx_can.o obj\release\spl\src\stm32f0xx_cec.o obj\release\spl\src\stm32f0xx_comp.o obj\release\spl\src\stm32f0xx_crc.o obj\release\spl\src\stm32f0xx_crs.o obj\release\spl\src\stm32f0xx_dac.o obj\release\spl\src\stm32f0xx_dbgmcu.o obj\release\spl\src\stm32f0xx_dma.o obj\release\spl\src\stm32f0xx_exti.o obj\release\spl\src\stm32f0xx_flash.o obj\release\spl\src\stm32f0xx_gpio.o obj\release\spl\src\stm32f0xx_i2c.o obj\release\spl\src\stm32f0xx_iwdg.o obj\release\spl\src\stm32f0xx_misc.o obj\release\spl\src\stm32f0xx_pwr.o obj\release\spl\src\stm32f0xx_rcc.o obj\release\spl\src\stm32f0xx_rtc.o obj\release\spl\src\stm32f0xx_spi.o obj\release\spl\src\stm32f0xx_syscfg.o obj\release\spl\src\stm32f0xx_tim.o obj\release\spl\src\stm32f0xx_usart.o obj\release\spl\src\stm32f0xx_wwdg.o obj\release\src\color_transform.o obj\release\src\main.o obj\release\src\mmc.o obj\release\src\pff.o obj\release\src\pixel.o obj\release\src\script_cmd.o obj\release\src\script_exec.o obj\release\src\spi.o obj\release\src\startup_stm32f0xx.o obj\release\src\stm32_init.o obj\release\src\system_stm32f0xx.o obj\release\src\xprintf.o   -Wl,-Map=bin\Release\em_digit_f0.map  -specs=nano.specs -Wl,--gc-sections    
arm-none-eabi-objcopy.exe -O ihex bin\Release\em_digit_f0.elf bin\Release\em_digit_f0.hex
Process terminated with status 0 (0 minutes, 14 seconds)
0 errors, 2 warnings (0 minutes, 14 seconds)
 
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Dimon456 писал(а):в новой версии код становится байт на 600 больше
Почти на всех моих проектах GCC 9.3 генерировал код меньшего объема по сравнению с GCC 5.3 при одинаковых опциях сборки.
Dimon456 писал(а):Вот лог сборки с проекта EmBitz
-flto нет. Можно было немного уменьшить размер и ускорить работу.
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Мурик писал(а):-flto нет.
Куда его вставить?
И к стати, всего 2 варнинга, а должно быть 3, один пропускает и он очень важен.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

В опциях проекта на вкладке настроек линкера нужно поставить галку Use Link Time Optomozation.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

-flto меняет размер прошивки в пределах о-малое. Дело не в нём.
Последний раз редактировалось VladislavS Вс ноя 22, 2020 19:15:24, всего редактировалось 1 раз.
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Было
Спойлер

Код: Выделить всё

|1|Program size (bytes):   23332|
||Data size    (bytes):     152|
||BSS size     (bytes):    2820|
||             ----------------|
||Total size   (bytes):   26304   (R/W Memory: 2972)|
стало
Спойлер

Код: Выделить всё

|1|Program size (bytes):   22900|
||Data size    (bytes):     152|
||BSS size     (bytes):    2811|
||             ----------------|
||Total size   (bytes):   25863   (R/W Memory: 2963)|
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Есть же map-файл. Там всё видно.
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Держите, один мар и другой мар
map_file.zip
(25.58 КБ) 321 скачивание
У ARV в 18кило вылезло, здесь с накладными расходами ~22кило, не забываем 2кило на таблицу идет.
Друг Кота
Аватара пользователя
Сообщения: 7053
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Тут по ходу разбора чужого кода вопрос возник. Есть какой-то практический смысл в использовании типа bool в Си? Вроде экономии памяти или скорости выполнения операций. В IAR для использования этого типа нужно подключить файл stdbool.h. Заглянул я в файл, но ничего не понял в этих ifndef __cplusplus и #define __bool_true_false_are_defined 1. Что-то ужасное произойдет, если заменить bool на char или int?
Астролябия-сама меряет, было бы что мерять!!!
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3929170#p3929170"]Есть какой-то практический смысл в использовании типа bool в Си? Вроде экономии памяти или скорости выполнения операций. В IAR для использования этого типа нужно подключить файл stdbool.h.[/uquote]
В C2x bool/true/false наконец станут ключевыми словами и хедеры подключать будет не нужно. А смысл не в экономии, а в выразительности и лучшей защиты от возможных ошибок.
Друг Кота
Аватара пользователя
Сообщения: 7053
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Понятно, спасибо. Я думал bool всего 1 бит занимает в памяти, а сейчас прочитал, что съедает те же 8 бит.
Астролябия-сама меряет, было бы что мерять!!!
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Asmodey писал(а):Тут по ходу разбора чужого кода вопрос возник.
Нет, просто эффективность компилятора.
И пока EmBitz проигрывает во всем, самое главное не умеет строит "зависимости", что бы открыть функцию в другом файле, мне приходится слева выбрать файл с функцией, а если их куча файлов приходится каждый перещелкать пока найдешь нужный, либо очень очень "умную голову" иметь, что бы в памяти все это держать.

Только можно представить как вот это
Спойлер

Код: Выделить всё

#define CMD(x)	static const char SCMD(x)[] = # x ; \
		static int16_t FCMD(x)(char *str); \
		static const cmd_t __attribute__((used, section(".my_table"))) CONCAT(_ , SCMD(x)) = { \
				.name = SCMD(x), .func = FCMD(x) }; \
		static int16_t CONCAT(f_cmd_, x)(char *str)
можно собрать в кучу в голове.

На очереди IAR, а то что-то хвастаются что IAR "ложит на лопатки" любой компилятор, посмотрим.
Прорезались зубы
Аватара пользователя
Сообщения: 202
Зарегистрирован: Сб янв 09, 2016 15:51:17

Сообщение AVI-crak »

Не так - проверяется всего один бит, или всё число на ноль. А размер может быль любым. В частности при возврате параметра в arm системе - это всегда регистр ядра, то-есть 32 бита. И всего два состояния ответа - команда успешна или нет.
Другое дело логические операции с bool, особенно с промежуточным хранением в структуре. Тут вообще нет экономии ни в размере памяти, ни в логическом наглядном применении. В этом случае bool значительно проигрывает перечислению. Гораздо приятнее видеть не просто факт сбоя, но тип ошибки.

EmBitz не знаю "зависимости", есть область видимости. Если хидер подключен к файлу - то его функции имеют режим авто_дополнения, а так-же видны в коленке с лева. Просто не нужно к майну подключать абсолютно всё, каша получится.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Dimon456 писал(а):Нет, просто эффективность компилятора.
И пока EmBitz проигрывает во всем
Как уже писал EmBitz это IDE. Она может использовать различные компиляторы в том числе GCC и компилятор кейла. Я использую текущую версию GCC 9.3.
Dimon456 писал(а):что бы открыть функцию в другом файле, мне приходится слева выбрать файл с функцией, а если их куча файлов приходится каждый перещелкать пока найдешь нужный
Все намного проще.
СпойлерИзображение
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3928913#p3928913"]А редактор с подсветкой синтаксиса будет мне автодополнения разных членов структур, переменных и т.п. показывать? И на лету статанализатором ошибки проверять?[/uquote]
Будет, но качество сильно зависит от редактора и стиля написания :) Например, можно без проблем скомпилировать такой код:

Код: Выделить всё

TIM5->RCR = 12345;
TIM1->RCR = 12345;
TIM16->RCR = 12345;
У TIM5 RCR нет вообще, у TIM16 он 8-ми битный, разрядность для TIM1 может быть 8/16 бит, в зависимости от серии, но в данном случае мы не получим даже предупреждения. А в таком случае получим предупреждение и ошибку:
Изображение

Реализовано довольно таки просто, на иероглифах :)
СпойлерИзображение
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="Мурик",url="/forum/viewtopic.php?p=3928944#p3928944"]Зачем Makefile? IDE его не использует. Для компиляции, прошивки и отладки он не нужен.[/uquote]
Мне просто нечего сказать. Это - вообще дегенерация какая-то что ли?

Добавлено after 1 minute 16 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3928958#p3928958"]Добавил файлы в проект, задал параметры сборки хоть для каждого файла в отдельности, скомпилировал, отладил, прошил и отправил проект в архив. Всё в одной среде без танцев с бубном.[/uquote]
Вот, что и требовалось доказать: полная дегенерация. Абсолютное отсутствие контроля со стороны разработчика…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3929267#p3929267"]Абсолютное отсутствие контроля со стороны разработчика…[/uquote]Наоборот, полный контроль. Покажи мне makefile в котором для каждого файла можно задать свои параметры компиляции. Слабо?

PS:
А запульнуть прошивку сразу на SPI-флэшку, откуда она будет грузиться загрузчиком? А загрузить и отлаживать её с того места, куда её штатно загрузчик подгружает? А подключиться к работающей программе "на лету" и подсмотреть состояние любого регистра? А инициализировать SDRAM перед загрузкой в неё отлаживаемой прошивки? И ещё много того, что тебе даже не снилось. Ответ я знаю - ТЕБЕ НЕ НАДА.

Добавлено after 1 hour 35 minutes 4 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3928913#p3928913"]т.к. мне нужно видеть весь выхлоп make'а в нормальном виде.[/uquote]Только вот понятие "в нормальном виде" у тебя какое-то ненормальное. Зачем смотреть на вывод 100500 строк с кучей параметров компиляции для файлов, скомпилированных без ошибки? IDE мне всё это спрячет и покажет только ошибки и предупреждения. Ну и финальную статистику. Это сильно упрощает и ускоряет мою работу. Даже секунды, потраченные на переключение в терминал и запуск make это время, украденное у меня.

Добавлено after 1 hour 13 minutes 7 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=3929223#p3929223"]Реализовано довольно таки просто, на иероглифах :)[/uquote]А в данном примере если info без static объявить, скомпилируется? Ведь она в статическом методе фактически не используется (скорее всего в других используется), а только в концепте. И метод так и просит inline. Компилятор, конечно, разберётся сам, но для наглядности :)
Ответить

Вернуться в «ARM»