Uzix | микроблог

Настройка Eclipse для разработки под STM32

Инструкций сходной тематики в интернете немало, но как то вышло что информацию мне всё равно пришлось собирать по кусочкам. В этой статье я подытожу весь процесс от А до Я. Всё будет делаться на примере дистрибутива Debian Sid и отладочной платы STM32F4Discovery.

Шаг 1: устанавливаем компилятор, стандартную библиотеку языка Си, отладчик и т.д.:

aptitude install binutils-arm-none-eabi gcc-arm-none-eabi gdb-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib openocd

Шаг 2: устанавливаем Eclipse CDT. Последнюю версию найти можно по ссылке https://eclipse.org/downloads/ (Eclipse IDE for C/C++ Developers)

Шаг 3: запускаем, идём в меню Help -> Install New Software и добавляем следующие репозитории:

Шаг 4: создаём проект: File -> New -> C Project -> Empty Project -> Cross ARM GCC.

Шаг 5: теперь нужно добавить в проект специфичные для каждого микроконтроллера (МК) вещи: заголовочные файлы Cortex M, заголовочные файлы для МК, стартап-код, таблица векторов прерываний, скрипт компоновщика. Всё это можно найти в STM32CubeF4 на st.com. Нужны следующие файлы:

  • STM32F407VG_FLASH.ld - скрипт компоновщика

  • core_cm4.h, core_cmFunc.h, core_cmInstr.h, core_cmSimd.h - заголовки CMSIS - стандартные регистры и функции для Cortex M4

  • startup_stm32f407xx.S - запуск мк, инициализация глобальных переменных, таблица векторов прерываний

  • system_stm32f4xx.h, system_stm32f4xx.c - функции для инициализации МК

  • stm32f4xx.h, stm32f407xx.h - заголовки для нашего МК с описанием регистров всей периферии

Шаг 6: настраиваем проект:

  • На вкладке C/C++ Build -> Settings -> Tool Settings -> Target Processor указываем ARM Family = Cortex M4, Float ABI - softfp, FPU Type - fpv4-sp-d16

  • На вкладке Cross ARM C Compiler -> Preprocessor добавляем определение (defined symbols) “STM32F407xx”

  • На вкладке Cross ARM C Linker -> General добавляем Script file STM32F407VG_FLASH.ld и устанавливаем галку “Remove unused sections”

  • На вкладке Cross ARM C Linker -> Misc устанавливаем галку “Use newlib-nano”

Шаг 7: да будет свет! Создадим файл main.c и поморгаем в нём светодиодом:

#include <stm32f4xx.h>
void main( void )
{
    RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN;
    GPIOD->MODER |= GPIO_MODER_MODER15_0;
    while( 1 )
    {
        GPIOD->ODR ^= 1 Debug Configurations. Создаём новую конфигурацию типа "GDB OpenOCD Debugging", на вкладке "Debugger" указываем "Config options":
`-s /usr/share/openocd/scripts/ -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg`

Жмём Debug и, если всё сделано правильно, наслаждаемся результатом.

Комментарии