TToolBox
💻
💻 dev
7 апреля 2026 г.7 мин чтения

Как собрать проект STM32 с GCC и CMake в Windows 10

Как собрать проект STM32 с GCC и CMake в Windows 10
В этой статье

Собрать прошивку для STM32 под Windows 10 с GCC и CMake можно за 10‑15 минут, установив инструменты и настроив CMake‑скрипт.

Собрать проект для микроконтроллера STM32 под Windows 10 с использованием GCC и CMake можно за 10‑15 минут, если установить нужные инструменты и правильно прописать CMake‑скрипт. Первые шаги занимают около 5 минут, а последующая сборка занимает 2‑3 секунды на типичном ПК с процессором i7‑12700K. Эта методика экономит до 30 % времени по сравнению с традиционным Make‑файлом.

Как установить GCC для ARM на Windows 10?

Установить кросс‑компилятор GCC для ARM на Windows 10 проще всего через готовый пакет GNU Arm Embedded Toolchain 10.3‑2022‑12‑15. Скачайте архив с официального сайта, распакуйте в C:\arm‑gcc и добавьте путь к bin в переменную среды PATH.

  • 1. Перейдите на https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm.
  • 2. Выберите версию 10.3‑2022‑12‑15 (размер 115 МБ) и скачайте файл arm‑gcc‑10.3‑20221215‑win32.zip.
  • 3. Распакуйте архив в каталог C:\arm‑gcc.
  • 4. Откройте «Система → Дополнительные параметры → Переменные среды» и в PATH добавьте C:\arm‑gcc\bin.
  • 5. Проверьте установку: откройте cmd и выполните arm-none-eabi-gcc --version. Должно отобразиться «gcc version 10.3.1 (Arm GNU Toolchain 10.3‑2022‑12‑15)».

Почему CMake упрощает кросс‑компиляцию STM32?

CMake автоматизирует генерацию Make‑файлов и проекта для IDE, позволяя менять целевую платформу одним параметром. Это избавляет от ручного редактирования скриптов при каждом переходе с одной платы на другую.

  • Кросс‑компилятор задаётся через переменную CMAKE_TOOLCHAIN_FILE, что делает проект переносимым.
  • Версия CMake 3.27, выпущенная в марте 2026 года, поддерживает новые свойства target_link_options для указания линковочных флагов STM32.
  • • Возможность генерировать проекты для Visual Studio 2022, CLion и Eclipse в одном запуске.
  • • Интеграция с CTest позволяет автоматически запускать юнит‑тесты на эмуляторе QEMU.

Что нужно добавить в CMakeLists.txt для STM32?

Для корректной сборки STM32 проекта в CMake достаточно добавить файл toolchain‑stm32.cmake и указать нужные флаги микроконтроллера. Пример базового CMakeLists.txt показан ниже.

cmake_minimum_required(VERSION 3.27)
project(MySTM32Project C CXX)

# Указываем путь к toolchain‑файлу
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/toolchain-stm32.cmake)

# Выбираем микроконтроллер STM32F401RE
set(MCU "STM32F401RE")

# Добавляем исходники
file(GLOB_RECURSE SOURCES "src/*.c" "src/*.cpp")
add_executable(${PROJECT_NAME} ${SOURCES})

# Флаги компиляции и линковки
target_compile_options(${PROJECT_NAME} PRIVATE
    -mcpu=cortex-m4
    -mthumb
    -O2
    -Wall
)

target_link_options(${PROJECT_NAME} PRIVATE
    -T${CMAKE_SOURCE_DIR}/STM32F401RE.ld
    -nostartfiles
)

Файл toolchain-stm32.cmake должен содержать:

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR ARM)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_OBJCOPY arm-none-eabi-objcopy)
set(CMAKE_SIZE arm-none-eabi-size)

Как отладить прошивку в Windows 10 с помощью OpenOCD?

Для отладки STM32 в Windows 10 достаточно установить OpenOCD 0.12.0 (релиз от 2026‑01‑20) и подключить отладчик ST‑Link V2, стоимость которого около 2 500 руб.

  • 1. Скачайте OpenOCD с https://github.com/openocd/openocd/releases/tag/0.12.0.
  • 2. Распакуйте в C:\OpenOCD и добавьте путь к bin в PATH.
  • 3. Подключите ST‑Link V2 к USB‑порту и к отладочным выводам платы.
  • 4. Создайте конфигурационный файл stm32f4.cfg со строкой source [find interface/stlink.cfg] и source [find target/stm32f4x.cfg].
  • 5. Запустите OpenOCD: openocd -f stm32f4.cfg. В консоли появится сообщение «Info : STLINK v2 JTAG v27».
  • 6. В Visual Studio Code подключитесь через расширение Cortex‑Debug, указав gdbPath: "C:/arm-gcc/bin/arm-none-eabi-gdb.exe" и svdFile: "STM32F401xE.svd".

Что делать, если сборка падает с ошибкой “cannot find -lc”?

Ошибка «cannot find -lc» возникает, когда линковщик не может найти стандартную библиотеку C для ARM. Чаще всего это связано с неправильным указанием пути к sysroot.

  • 1. Убедитесь, что в toolchain-stm32.cmake прописан параметр set(CMAKE_FIND_ROOT_PATH "C:/arm-gcc/arm-none-eabi").
  • 2. Добавьте флаг --specs=nosys.specs в target_link_options, чтобы отключить поиск libc, если она не нужна.
  • 3. Если требуется полная libc, установите пакет newlib‑nano‑arm (≈ 1 200 руб) и укажите путь set(CMAKE_SYSROOT "C:/arm-gcc/arm-none-eabi").
  • 4. Перезапустите CMake: cmake -B build -S . -DCMAKE_BUILD_TYPE=Release и выполните cmake --build build.
  • 5. Проверка: выполните arm-none-eabi-gcc -print-file-name=libc.a – путь должен указывать в каталог .../arm-none-eabi/lib.
Воспользуйтесь бесплатным инструментом CMake Generator на toolbox-online.ru — работает онлайн, без регистрации.
Поделиться:

Теги

#STM32#GCC#CMake#Windows10#Embedded