Компиляция под STM32 с помощью gcc
Компиляция под STM32 с помощью gcc
Ну, основной вопрос составляет то, как заставить компилятор вырабатывать объектные файлы под вариант архитектуры arm cortex m3, на которой построены данные микроконтроллеры. Сама компиляция осуществляется, если я ничего не напутал, командой arm-none-eabi-gcc. Почитав интернет, наткнулся на статью, где её автор писал про данную компиляцию. Проблема его статьи была в том, что в самой статье команд на компиляцию он не привёл, а отвёл роль изучения данных команд на приложенный к статье makefile, который скачать было нельзя, а из той-же самой статьи следовало то, что cortex m3 это упрощённая версия arm, в которой отсутствует как минимум 1 команда (там-же приведённая). Так вот, как должна быть составлена команда на компиляцию, чтобы компилятор выработал код, полностью совместимый с данной архитектурой? Так-же, заодно вопрос, как выработанный код преобразовать в файл .hex? Так-же, при попытке скомпилировать программу, подсунув ему нужные файлы из cmsis выдаёт следующие сообщения об ошибках:
core_cm3.c: In function 'uint32_t __get_PSP()':
core_cm3.c:445:12: error: cannot allocate stack for variable 'result', naked function.
uint32_t result=0;
^~~~~~
core_cm3.c: In function 'uint32_t __get_MSP()':
core_cm3.c:479:12: error: cannot allocate stack for variable 'result', naked function.
uint32_t result=0;
^~~~~~
In file included from system_stm32f10x.c:65:0:
stm32f10x.h:96:3: error: #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
#error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
А при попытке подсунуть файл startup_stm32f10x_cl.s кучу сообщений такого рода:
startup_stm32f10x_cl.s:349: Error: bad instruction `else '
Как это можно исправить?
И, если знаете толковые материалы про использованию arm-gcc для stm32, подскажите, пожалуйста.
core_cm3.c: In function 'uint32_t __get_PSP()':
core_cm3.c:445:12: error: cannot allocate stack for variable 'result', naked function.
uint32_t result=0;
^~~~~~
core_cm3.c: In function 'uint32_t __get_MSP()':
core_cm3.c:479:12: error: cannot allocate stack for variable 'result', naked function.
uint32_t result=0;
^~~~~~
In file included from system_stm32f10x.c:65:0:
stm32f10x.h:96:3: error: #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
#error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
А при попытке подсунуть файл startup_stm32f10x_cl.s кучу сообщений такого рода:
startup_stm32f10x_cl.s:349: Error: bad instruction `else '
Как это можно исправить?
И, если знаете толковые материалы про использованию arm-gcc для stm32, подскажите, пожалуйста.
Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
Re: Компиляция под STM32 с помощью gcc
Почему бы не использовать IDE с компилятором GCC?
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: Компиляция под STM32 с помощью gcc
Кусочек из makefile'а:
В итоге, строка получается примерно такого вида:
Сборка *.o файла:
Сборка ассемблерного файла (отличаются только имена файлов)
Линковка:
Бинарник:
P.S.: Это работает в linux'е. Win* система потребует всё правильно переименовать. Ну и пути, естественно.
А вообще, если нужно именно собирать вручную - рекомендую озаботиться сборкой шаблона в виде Makefile'а.
Код: Выделить всё
STARTUP = startup_armcm3.s
SRC = system_stm32f1xx.c main.c
# Указываем каталоги, в которых находятся *.h файлы от библиотек.
DEVICE = /media/Data/ARM/STM32CubeF1/STM32Cube_FW_F1_V1.2.0/Drivers/STM32F1xx_HAL_Driver
CORE = /media/Data/ARM/STM32CubeF1/STM32Cube_FW_F1_V1.2.0/Drivers/CMSIS/Device/ST/STM32F1xx/Include
CMSIS = /media/Data/ARM/STM32CubeF1/STM32Cube_FW_F1_V1.2.0/Drivers/CMSIS/Include/
PROJ = .
# Собираем каталоги в одну переменную вида -I<путь> -I<путь>
INCLUDES += -I$(DEVICE)/Inc \
-I$(CORE) \
-I$(CMSIS) \
-I$(PROJ)
CC=arm-none-eabi-gcc
LD=arm-none-eabi-ld
CP=arm-none-eabi-objcopy
# Некоторые дефайны - нестандартная частота кварца, тип кристалла и заглушка для HAL драйвера (который работает БЕЗ остальной части нормально).
DEFS = -DSTM32F103xB -DHSE_VALUE=12000000 -DUSE_HAL_DRIVER
LDSCRIPT = stm32f103cbt6_app.ld
OPTIMIZE = -Os
MCU = cortex-m3
MCFLAGS = -mcpu=$(MCU) -mthumb -mlittle-endian --specs=nosys.specs -ffunction-sections -fdata-sections -Wl,--gc-sections -nostartfiles
CFLAGS = $(MCFLAGS) $(OPTIMIZE) $(DEFS) $(INCLUDES) -g -gdwarf-2 -Wall -c
LDFLAGS = $(MCFLAGS) -T$(LDSCRIPT)
OBJS := $(notdir $(SRC:.c=.o)) $(STARTUP:.s=.o)
BUILDS := $(addprefix $(BUILDDIR)/, $(OBJS))
%.o: %.c
@echo "Compiling: $^"
@$(CC) $(CFLAGS) $^ -o $(BUILDDIR)/$@
%.o: %.s
@echo "Compiling: $^"
@$(CC) $(CFLAGS) $^ -o $(BUILDDIR)/$@
$(TARGET): $(EXECUTABLE)
@$(SIZE) $(EXECUTABLE)
@$(CP) -O binary $< $@
$(EXECUTABLE): $(OBJS)
@echo "Building: $(EXECUTABLE)"
@$(CC) $(LDFLAGS) $(BUILDS) -o $(EXECUTABLE)
@echo "[DONE]"
clean:
rm -rf $(BUILDDIR)/*.elf $(BUILDDIR)/*.o $(BUILDDIR)/*.bin
В итоге, строка получается примерно такого вида:
Сборка *.o файла:
Код: Выделить всё
arm-none-eabi-gcc -mcpu=$(MCU) -mthumb -mlittle-endian --specs=nosys.specs -ffunction-sections -fdata-sections -Wl,--gc-sections -nostartfiles -Os -DSTM32F103xB -DHSE_VALUE=12000000 -DUSE_HAL_DRIVER -I/media/Data/ARM/STM32CubeF1/STM32Cube_FW_F1_V1.2.0/Drivers/STM32F1xx_HAL_Driver -I/media/Data/ARM/STM32CubeF1/STM32Cube_FW_F1_V1.2.0/Drivers/CMSIS/Device/ST/STM32F1xx/Include -I/media/Data/ARM/STM32CubeF1/STM32Cube_FW_F1_V1.2.0/Drivers/CMSIS/Include/ -g -gdwarf-2 -Wall -c main.c -o main.oСборка ассемблерного файла (отличаются только имена файлов)
Код: Выделить всё
arm-none-eabi-gcc -mcpu=$(MCU) -mthumb -mlittle-endian --specs=nosys.specs -ffunction-sections -fdata-sections -Wl,--gc-sections -nostartfiles -Os -DSTM32F103xB -DHSE_VALUE=12000000 -DUSE_HAL_DRIVER -I/media/Data/ARM/STM32CubeF1/STM32Cube_FW_F1_V1.2.0/Drivers/STM32F1xx_HAL_Driver -I/media/Data/ARM/STM32CubeF1/STM32Cube_FW_F1_V1.2.0/Drivers/CMSIS/Device/ST/STM32F1xx/Include -I/media/Data/ARM/STM32CubeF1/STM32Cube_FW_F1_V1.2.0/Drivers/CMSIS/Include/ -g -gdwarf-2 -Wall -c startup_armcm3.s -o startup_armcm3.oЛинковка:
Код: Выделить всё
arm-none-eabi-gcc -mcpu=$(MCU) -mthumb -mlittle-endian --specs=nosys.specs -ffunction-sections -fdata-sections -Wl,--gc-sections -nostartfiles -Tstm32f103cbt6_app.ld <ВСЕ *.o файлы> -o <some_app.elf>Бинарник:
Код: Выделить всё
arm-none-eabi-objcopy -O binary <some_app.elf> <some_app.hex>P.S.: Это работает в linux'е. Win* система потребует всё правильно переименовать. Ну и пути, естественно.
А вообще, если нужно именно собирать вручную - рекомендую озаботиться сборкой шаблона в виде Makefile'а.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Компиляция под STM32 с помощью gcc
Советую в Makefile добавить после цели all еще такое:
В итоге для отладки не надо долго мучиться, а достаточно написать make debug. Можно вообще удалить цель all и сделать по умолчанию вывод подсказки, запилив две цели: debug и release. Но мне проще так.
Ну и да, мало ли, куда вы положите arm-none-eabi? Скажем, у меня в генте проблема с "коробочным" gcc под arm: он пытается запустить аппаратное деление на STM32F0, поэтому я пишу:
И в Makefile можно для F1 либо переписать путь, либо make вызвать с измененной опцией PREFIX.
P.S. Крайне не рекомендую пользоваться калом.
Код: Выделить всё
debug: CFLAGS += -DEBUG -Werror
debug: allВ итоге для отладки не надо долго мучиться, а достаточно написать make debug. Можно вообще удалить цель all и сделать по умолчанию вывод подсказки, запилив две цели: debug и release. Но мне проще так.
Ну и да, мало ли, куда вы положите arm-none-eabi? Скажем, у меня в генте проблема с "коробочным" gcc под arm: он пытается запустить аппаратное деление на STM32F0, поэтому я пишу:
Код: Выделить всё
PREFIX ?= /opt/bin/arm-none-eabiИ в Makefile можно для F1 либо переписать путь, либо make вызвать с измененной опцией PREFIX.
P.S. Крайне не рекомендую пользоваться калом.
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: Компиляция под STM32 с помощью gcc
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3766818#p3766818"]P.S. Крайне не рекомендую пользоваться калом.[/uquote]
Мне нужны были от него заголовочники. А без дефайна они не подключались в тот момент. А может дефайн остался случайно. Но вот их *.c файлы я стараюсь не использовать.
Мне нужны были от него заголовочники. А без дефайна они не подключались в тот момент. А может дефайн остался случайно. Но вот их *.c файлы я стараюсь не использовать.
Re: Компиляция под STM32 с помощью gcc
А можете пояснить, что должно лежать по путям DEVICE, CORE и CMSIS? Структура каталогов STM32F10x_StdPeriph_Lib отличается от cubemx. Я так полагаю, CORE - core_cm3.h, CMSIS - stm32f10x.h и system_stm32f10x.h?
И ещё, как быть с файлами *.c лежащими по данным каталогам? Я так полагаю, они в принципе не обязательны, но нужны, если потребуются функции из заголовочных файлов, и, в принципе, их можно скомпилировать раз, оформить из них библиотеку и подсовывать компилятору уже её каждый раз, для простоты?
И ещё, как быть с файлами *.c лежащими по данным каталогам? Я так полагаю, они в принципе не обязательны, но нужны, если потребуются функции из заголовочных файлов, и, в принципе, их можно скомпилировать раз, оформить из них библиотеку и подсовывать компилятору уже её каждый раз, для простоты?
Мне надо понять, как это работает. Дальше уже можно и IDE настроить соответствующим образом.Мурик писал(а):Почему бы не использовать IDE с компилятором GCC?
Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
Re: Компиляция под STM32 с помощью gcc
Все это не нужно знать при использовании IDE.BOND12 писал(а):Мне надо понять, как это работает. Дальше уже можно и IDE настроить соответствующим образом.Мурик писал(а):Почему бы не использовать IDE с компилятором GCC?
Посмотрите например этот материал. http://purebasic.mybb.ru/viewtopic.php?id=575
Рассматривается использование различных библиотек (SPL, HAL, LL и вовсе без библиотек) и ни разу не потребовалось знание того как производится компиляция.
Если нужна сборка без IDE выше написали как ее производить.
Re: Компиляция под STM32 с помощью gcc
Мурик писал(а):Все это не нужно знать при использовании IDE.
Проблема этих IDE в том, что они созданы под windows. Собственно, я и затеял разбор GCC с тем, чтобы слезть с кейла, который под виртуальной машиной гонял, т.к. на линукс его никто не портировал, а под wine он работал настолько криво, что использовать его по назначению возможным не представлялось.
Да и интересно мне, как это всё работает без IDE.
Кстати, мой вопрос про пути всё ещё в силе.
Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Компиляция под STM32 с помощью gcc
тут для начала простейший пример "STM32F103RB a minimal example" для GCC
http://pandafruits.com/stm32_primer/stm ... inimal.php
без CMSIS, стартапа и прочих инклудов.
Затем можно сделать минимальный проект в кубе от ST - а он делает проект и для GCC, правда там хал получается прицеплен. Но хал легко из такого проекта выкашивается, зато остаются все цмисы и пр. самые свежие. В этом проекте несложный мейкфайл - для разбора и понимания и правки сгодится.
з.ы. Кейл под вайном нормально работает, настроить отладку даже вроде можно (не пробовал - мне не надо было). Надо Кейл установить на ПК с виндовс, потом просто скопировать папку себе в линукс и запускать экзешник - вайн запускает. Кейл вполне портабелен - запускал и v4 и v5, пользуюсь в основном v4 для поддержки старых проектов.
http://pandafruits.com/stm32_primer/stm ... inimal.php
без CMSIS, стартапа и прочих инклудов.
Затем можно сделать минимальный проект в кубе от ST - а он делает проект и для GCC, правда там хал получается прицеплен. Но хал легко из такого проекта выкашивается, зато остаются все цмисы и пр. самые свежие. В этом проекте несложный мейкфайл - для разбора и понимания и правки сгодится.
з.ы. Кейл под вайном нормально работает, настроить отладку даже вроде можно (не пробовал - мне не надо было). Надо Кейл установить на ПК с виндовс, потом просто скопировать папку себе в линукс и запускать экзешник - вайн запускает. Кейл вполне портабелен - запускал и v4 и v5, пользуюсь в основном v4 для поддержки старых проектов.
Re: Компиляция под STM32 с помощью gcc
oleg110592 писал(а):тут для начала простейший пример "STM32F103RB a minimal example" для GCC
http://pandafruits.com/stm32_primer/stm ... inimal.php
За это - спасибо.
oleg110592 писал(а):з.ы. Кейл под вайном нормально работает, настроить отладку даже вроде можно (не пробовал - мне не надо было). Надо Кейл установить на ПК с виндовс, потом просто скопировать папку себе в линукс и запускать экзешник - вайн запускает. Кейл вполне портабелен - запускал и v4 и v5, пользуюсь в основном v4 для поддержки старых проектов.
Ну, не знаю, как у других, а у меня в кейле при попытке создать проект - абсолютно пустое меню выбора устройства. Причём - что у установленного через wine, что у скопированного из windows.
Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Компиляция под STM32 с помощью gcc
[uquote="BOND12",url="/forum/viewtopic.php?p=3767818#p3767818"]Проблема этих IDE в том, что они созданы под windows.[/uquote]
Тогда вообще непонятно, в чем проблема!
Я пользуюсь qt-creator, никаких косяков нет. В отличие от мазохистов-геймеров, в линуксе четкая иерархия файловой системы и нет проблем написать раз и навсегда Makefile и пользоваться им! По клавосочетанию можно запустить make, можно даже прошивать по клавосочетанию. А для любителей внутрисхемной отладки есть интеграция с gdb.
Тогда вообще непонятно, в чем проблема!
Я пользуюсь qt-creator, никаких косяков нет. В отличие от мазохистов-геймеров, в линуксе четкая иерархия файловой системы и нет проблем написать раз и навсегда Makefile и пользоваться им! По клавосочетанию можно запустить make, можно даже прошивать по клавосочетанию. А для любителей внутрисхемной отладки есть интеграция с gdb.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Компиляция под STM32 с помощью gcc
[uquote="BOND12",url="/forum/viewtopic.php?p=3767956#p3767956"]абсолютно пустое меню выбора устройства[/uquote]
wine 5.0-rc2 из репозитория сам обновился, и на 4 версиях работало:

з.ы. геймеры на линукс перебираются - "Proton - уже 4000 подобных Windows-игр, идеально доступных для игр под Linux". Vulkan API linux выдает больше FPS, чем на Windows 10
wine 5.0-rc2 из репозитория сам обновился, и на 4 версиях работало:
з.ы. геймеры на линукс перебираются - "Proton - уже 4000 подобных Windows-игр, идеально доступных для игр под Linux". Vulkan API linux выдает больше FPS, чем на Windows 10
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: Компиляция под STM32 с помощью gcc
[uquote="BOND12",url="/forum/viewtopic.php?p=3767405#p3767405"]А можете пояснить, что должно лежать по путям DEVICE, CORE и CMSIS? Структура каталогов STM32F10x_StdPeriph_Lib отличается от cubemx. Я так полагаю, CORE - core_cm3.h, CMSIS - stm32f10x.h и system_stm32f10x.h?[/uquote]
Не совсем. Всё это названия... грубо говоря, наборов файлов.
Изначально - какие-то заголовочные файлы Куба. А переименовывать было лень.
Чаще всего там находятся *.h файлы, которые требуются для сборки проекта.
Если хочется - можно свалить все эти файлы прямо в проект (копипастом, ага). Но после десятого-двадцатого каталога, занимающего по паре десятков мегабайт, становится стыдно перед собой же, и наконец в файле оказываются ссылки.
В общих чертах, gcc будет искать указания на файлы
#include <something.h>
в тех каталогах, которые будут указаны.
[uquote="BOND12",url="/forum/viewtopic.php?p=3767405#p3767405"]И ещё, как быть с файлами *.c лежащими по данным каталогам?[/uquote]
*.c, лично я, складываю в папку. Изредка требуется один-два хитрых .c и это тот случай, когда проще их скопировать. Тем более, что часто они платформо-зависимы (зависят от ядра и иногда даже конкретной модели контроллера).
[uquote="BOND12",url="/forum/viewtopic.php?p=3767405#p3767405"]Я так полагаю, они в принципе не обязательны, но нужны, если потребуются функции из заголовочных файлов, и, в принципе, их можно скомпилировать раз, оформить из них библиотеку и подсовывать компилятору уже её каждый раз, для простоты?[/uquote]
*.c файлы указываются в makefile'е явно. Смотрите директиву SRC = ...
Это все те файлы, которые в итоге будут участвовать в сборке и ТОЛЬКО те, которые в итоге будут переданы линковщику для окончательной сборки исполняемого файла.
Кстати, может посмотреть вот эту статью:
https://server.179.ru/tasks/cpp/total/105.html
[uquote="BOND12",url="/forum/viewtopic.php?p=3767818#p3767818"]Проблема этих IDE в том, что они созданы под windows. Собственно, я и затеял разбор GCC с тем, чтобы слезть с кейла, который под виртуальной машиной гонял, т.к. на линукс его никто не портировал, а под wine он работал настолько криво, что использовать его по назначению возможным не представлялось.
Да и интересно мне, как это всё работает без IDE.
Кстати, мой вопрос про пути всё ещё в силе.[/uquote]
И Вы хотите потоптаться по тем же граблям? Ну... могу только посочувствовать.
И... порекомендовать таки поставить Eclipse + OpenOCD + плагины + *.vxd файлы описания периферии... в общем, в итоге ЭТО будет работать лучше чем Keil. Повертье моим шишкам.
Даже почти удобно получится. Хотя имеет свою специфику.
Не совсем. Всё это названия... грубо говоря, наборов файлов.
Изначально - какие-то заголовочные файлы Куба. А переименовывать было лень.
Чаще всего там находятся *.h файлы, которые требуются для сборки проекта.
Если хочется - можно свалить все эти файлы прямо в проект (копипастом, ага). Но после десятого-двадцатого каталога, занимающего по паре десятков мегабайт, становится стыдно перед собой же, и наконец в файле оказываются ссылки.
В общих чертах, gcc будет искать указания на файлы
#include <something.h>
в тех каталогах, которые будут указаны.
[uquote="BOND12",url="/forum/viewtopic.php?p=3767405#p3767405"]И ещё, как быть с файлами *.c лежащими по данным каталогам?[/uquote]
*.c, лично я, складываю в папку. Изредка требуется один-два хитрых .c и это тот случай, когда проще их скопировать. Тем более, что часто они платформо-зависимы (зависят от ядра и иногда даже конкретной модели контроллера).
[uquote="BOND12",url="/forum/viewtopic.php?p=3767405#p3767405"]Я так полагаю, они в принципе не обязательны, но нужны, если потребуются функции из заголовочных файлов, и, в принципе, их можно скомпилировать раз, оформить из них библиотеку и подсовывать компилятору уже её каждый раз, для простоты?[/uquote]
*.c файлы указываются в makefile'е явно. Смотрите директиву SRC = ...
Это все те файлы, которые в итоге будут участвовать в сборке и ТОЛЬКО те, которые в итоге будут переданы линковщику для окончательной сборки исполняемого файла.
Кстати, может посмотреть вот эту статью:
https://server.179.ru/tasks/cpp/total/105.html
[uquote="BOND12",url="/forum/viewtopic.php?p=3767818#p3767818"]Проблема этих IDE в том, что они созданы под windows. Собственно, я и затеял разбор GCC с тем, чтобы слезть с кейла, который под виртуальной машиной гонял, т.к. на линукс его никто не портировал, а под wine он работал настолько криво, что использовать его по назначению возможным не представлялось.
Да и интересно мне, как это всё работает без IDE.
Кстати, мой вопрос про пути всё ещё в силе.[/uquote]
И Вы хотите потоптаться по тем же граблям? Ну... могу только посочувствовать.
И... порекомендовать таки поставить Eclipse + OpenOCD + плагины + *.vxd файлы описания периферии... в общем, в итоге ЭТО будет работать лучше чем Keil. Повертье моим шишкам.
Даже почти удобно получится. Хотя имеет свою специфику.
Re: Компиляция под STM32 с помощью gcc
Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Компиляция под STM32 с помощью gcc
по зеленой иконке это 5 Кейл. Установщик ставит только uVision и тулчейн. Библиотеки и примеры устанавливаются через Pack Installer - только то, что нужно. Если какого-то устройства в данный момент нет, можно установить Legacy Support для нужной серии. Когда то делал уже забыл. Все есть мануале
http://www.keil.com/support/man/docs/uv ... taller.htm
http://www.keil.com/support/man/docs/uv ... taller.htm
Re: Компиляция под STM32 с помощью gcc
oleg110592 писал(а):по зеленой иконке это 5 Кейл. Установщик ставит только uVision и тулчейн. Библиотеки и примеры устанавливаются через Pack Installer - только то, что нужно. Если какого-то устройства в данный момент нет, можно установить Legacy Support для нужной серии. Когда то делал уже забыл. Все есть мануале
http://www.keil.com/support/man/docs/uv ... taller.htm
Дело всё в том, что изначально он содержит как минимум просто arm архитектуры. Конкретно в этой версии уже были установлены пакеты для stm (взял с вирт. машины). Как видите - к использованию не пригоден.
Добавлено after 4 minutes 5 seconds:
Ладно, всем, кто отвечал - спасибо. Буду разбираться.
Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
Re: Компиляция под STM32 с помощью gcc
[uquote="BOND12",url="/forum/viewtopic.php?p=3767818#p3767818"]Кстати, мой вопрос про пути всё ещё в силе.[/uquote]
Если еще актуальный вопрос, вот тут https://bevice.ru/posts/1590.html начал примерно его и разбирать. Пока фиг знает, как быстро и понятно про CMake написать, но компиляция и линковка разобраны.
Добавлено after 3 minutes 2 seconds:
[uquote="Мурик",url="/forum/viewtopic.php?p=3766789#p3766789"]Почему бы не использовать IDE с компилятором GCC?[/uquote]
А на билд-сервера тоже предлагаете IDE натягивать?
Если еще актуальный вопрос, вот тут https://bevice.ru/posts/1590.html начал примерно его и разбирать. Пока фиг знает, как быстро и понятно про CMake написать, но компиляция и линковка разобраны.
Добавлено after 3 minutes 2 seconds:
[uquote="Мурик",url="/forum/viewtopic.php?p=3766789#p3766789"]Почему бы не использовать IDE с компилятором GCC?[/uquote]
А на билд-сервера тоже предлагаете IDE натягивать?
После нас - хоть потоп (с) Лойсо
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Компиляция под STM32 с помощью gcc
Прошивку для stm32f103 на билдсерверах собирать. 

Re: Компиляция под STM32 с помощью gcc
Какой билд сервер если нет опыта работы с STM32 и GCC?bevice писал(а):А на билд-сервера тоже предлагаете IDE натягивать?
Re: Компиляция под STM32 с помощью gcc
[uquote="Мурик",url="/forum/viewtopic.php?p=3768808#p3768808"]
кладем в проект .gitlab-ci.yml:
коммитим на gitlab с подключенным gitlab-runner с докером. Всё. Ну скрипт сборки разве что подправить, у меня на CMake
Добавлено after 4 minutes 32 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3768804#p3768804"]Прошивку для stm32f103 на билдсерверах собирать.
[/uquote]
Ну вот есть у меня проект, в котором требуется собрать несколько десятков почти одинаковых прошивок. Незначительно отличаются параметрами сборки и шифруются по серийному номеру. После сборки нужно отправить обновления в другой офис и зарегистрировать на сервере обновлений.
У меня это решает CI, и после коммита в соответствующую ветку все происходит само-собой.
А как вы эту задачку решите? Да, некоторые параметры сборки задаются в другом офисе, а серийные номера вообще на сборке.
Какой билд сервер если нет опыта работы с STM32 и GCC?[/uquote]bevice писал(а):А на билд-сервера тоже предлагаете IDE натягивать?
кладем в проект .gitlab-ci.yml:
Код: Выделить всё
binaries-debug:
image: bevice/gcc-arm-none-eabi
tags:
- arm-none-eabi-gcc
script:
- BUILD_DIR=${CI_PROJECT_NAME}-$(git log -1 --format=%h)-dbg
- rm -rf ${BUILD_DIR}
- mkdir ${BUILD_DIR}
- cd ${BUILD_DIR}
- cmake -DCMAKE_BUILD_TYPE=Debug ..
- cmake --build . -- -j 8
- git log -3 > changes.txt
artifacts:
name: "${CI_PROJECT_NAME}-$(git log -1 --format=%h)-dbg"
paths:
- ${CI_PROJECT_NAME}-$(git log -1 --format=%h)-dbg/*.bin
- ${CI_PROJECT_NAME}-$(git log -1 --format=%h)-dbg/*.elf
- ${CI_PROJECT_NAME}-$(git log -1 --format=%h)-dbg/changes.txtкоммитим на gitlab с подключенным gitlab-runner с докером. Всё. Ну скрипт сборки разве что подправить, у меня на CMake
Добавлено after 4 minutes 32 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3768804#p3768804"]Прошивку для stm32f103 на билдсерверах собирать.
[/uquote]Ну вот есть у меня проект, в котором требуется собрать несколько десятков почти одинаковых прошивок. Незначительно отличаются параметрами сборки и шифруются по серийному номеру. После сборки нужно отправить обновления в другой офис и зарегистрировать на сервере обновлений.
У меня это решает CI, и после коммита в соответствующую ветку все происходит само-собой.
А как вы эту задачку решите? Да, некоторые параметры сборки задаются в другом офисе, а серийные номера вообще на сборке.
После нас - хоть потоп (с) Лойсо