Настройка 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 и добавляем следующие репозитории:
http://andrei.gmxhome.de/eclipse/ - несколько полезных плагинов в т.ч. AnyEdit
http://ehep.sourceforge.net/update - hex-редактор, пригодится
http://download.eclipse.org/tools/tcf/terminals_lunasr2 - встроенный терминал с поддержкой COM-портов - очень удобен для отладки
http://rxtx.qbang.org/eclipse - библиотека для работы с последовательным портом, нужна для встроенного терминала
http://eclipse-color-theme.github.com/update - цветовые схемы
http://embsysregview.sourceforge.net/update - а вот это очень полезная штука - позволяет просматривать содержимое регистров периферии без шаманств с видом Expressions
http://www.highintegritysystems.com/StateViewer/ - плагин для отладки FreeRTOS
http://freescale.com/lgfiles/updates/Eclipse/KDS - ещё один плагин для FreeRTOS
http://gnuarmeclipse.sourceforge.net/updates - “гвоздь программы”, плагин для разработки под arm
Шаг 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 и, если всё сделано правильно, наслаждаемся результатом.
Комментарии