Notice: Memcache::get(): Server localhost (tcp 11211) failed with: Connection refused (111) in /home/a146/www/we.easyelectronics.ru/engine/lib/external/DklabCache/Zend/Cache/Backend/Memcached.php on line 134
STM32CubeMX start code -> Eclipse быстрый старт -> отладка в Eclipse через ST-Link Discovery / STM32 / Сообщество EasyElectronics.ru

STM32CubeMX start code -> Eclipse быстрый старт -> отладка в Eclipse через ST-Link Discovery

Наверное в инете есть сотни статей с подобной темой. Но, так как тема относится к опенсорсу, — никто не гарантирует результат. Результат-то как правило бывает, но обычно, вначале, лишь частичный. Что-то, как правило, не работает нормально. Глючит. Пугает кучей ошибок и варнингов. Основная тема, лейтмотив опенсорса, — поиск ответа на вопрос «почему не так работает?». В этот момент начинаешь понимать, почему за готовую к работе, из коробки, IDE — просят денюшку, и немаленькую.
Когда начинал знакомится с микроконтроллерами, ограничение кода в 32 кБ казались такими недосягаемыми, а в современное время одно подключение какой-либо библиотеки может съесть значительную часть лимита кода, а ещё хочется и ВЭБ интерфейс к соей домашней поделке приделать, а недавно решил «пощупать» библиотеку libMAD, так код вообще сразу выскочил за 120 кБ…

Основная задача — допилить Eclipse до такого состояния, когда внутри будет весь цикл, от написания кода до отладки. Для генерации начального кода очень хотелось использовать STM32CubeMX, так как кроме свежих библиотек HAL имеется поддержка современной версии CMSIS, уже интегрированная FreeRTOS (в составе куба идет порт FreeRTOS, сделанный по правилам нового CMSIS v3.20), и много других «вкусняшек», а используемая среда Eclipse, не накладывает ограничения на размер кода, да и просто имхо удобней.
У меня получилось. Конечно есть в отладчике Keil'a фишки, которые больше нигде не повторяются. Да и в используемом отладчике OpenOCD реализованы не все функции, которыми может похвастаться Eclipse, но это плата за простоту установки и настройки. Полученным результатом оказался доволен. Во время поиска приемлемого варианта установки, подбора плагинов и других компонентов возникла необходимость сохранить результаты проделанной работы. В основном — что бы не забыть.

Условно всю работу можно разбить на 3 части:
  • Установка и настройка Eclipse.
  • Генерация начального кода проекта в STM32CubeMX и адаптация проекта для использования в Eclipse.
  • Настройка отладки и отладка созданного проекта в Eclipse.

Если Вам интересно — читаем дальше.

Хочется сказать особое спасибо автору следующего блога: klaus4.blogspot.ru/2014/05/stm32f4-discovery-mit-opensource.html, это послужило толчком, «лед тронулся». Логика и последовательность действий взяты именно там. Однако прочтенное не совсем совпадало с моими взглядами, поэтому написанное мной, отчасти, может считаться вольным переводом первоисточника.

Теперь по поводу самой инструкции. Eclipse — плод коллективного труда. Сама программа написана на Java и имеет внутри много-много других компонентов, чаще всего оформленных как плагины. Система чувствительна к версиям устанавливаемых Вами плагинов. Самое правильное — перед установкой какого — либо плагина найти в интернете страничку автора(ов) плагина и внимательно прочитать. Как правило там будет и инструкция по использованию, установке и указания на проверенные совместимые версии Eclipse. Стараемся не ставить лишних плагинов — особенно тех, что ругаются на непроверенную совместимость — можно получить эффект глюка и неправильной работы того, что без проблем раньше хорошо работало, причем без явного проявления причинно-следственной связи.

Тут небольшое лирическое отступление. Часть используемых программ будет «с возрастом», и написанны довольно давно. Поэтому для стабильной работы рекомендуется устанавливать весь софт с соблюдением правила — имя папки и файла длинной не более 8-ми символов. Рекомендуемые мною пути установки не являются парадигмой и служат лишь для удобства написания данной статьи.
  • Java JDK

Скачиваем последнюю доступную версию Java JDK, причем если у Вас система 64 бита — то ставим именно х64. Далее подразумевается, что если есть доступная версия x64, то используем именно её:
www.oracle.com/technetwork/java/javase/downloads/index.html

у меня: «jdk-8u25-windows-x64.exe»
Удаляем все другие версии Java(возможно и не надо), установленные ранее и устанавливаем в пути по умолчанию.

  • Eclipse

Скачиваем последнюю стабильную версию Eclipse IDE for C/C++ Developers:
www.eclipse.org/downloads/

у меня: «eclipse-cpp-luna-SR1-win32-x86_64.zip»

Eclipse поставляется в виде архива и устанавливается распаковкой в рабочий каталог.
Распаковываем в папку «C:\eclipse», причем исполняемый файл должен быть в этой папке. Отправляем ярлык для «eclipse.exe» на рабочий стол, не запускаем!
Проверяем настройку языковых параметров, у Вас должен стоять английский по умолчанию. Т.е. при запуске программ язык ввода должен быть обязательно английский. Если стоит язык, отличный от английского и вы В ПЕРВЫЙ раз запускаете Eclipse, то в дальнейшем будете в консоли любоваться на кракозябрики и искать вариант борьбы с кодировками…
Идем в панель управления Windows и устанавливаем первым языком английский, перезагружаем компьютер. Если Вы уже запускали Eclipse с языком ввода по умолчанию, отличным от английского — удаляем всё из папок «C:\eclipse» и папки рабочего каталога «C:\stm32prg» и продолжаем.

Запускаем Eclipse. Вначале программа спросит расположение рабочего каталога — вводим «C:\stm32prg», ставим галочку запомнить и подтверждаем свой выбор:



видим запущенный Eclipse:



и пока закрываем — необходимо установить остальные компоненты.

  • GNU Tools for ARM Embedded Processor


Далее посещаем страничку launchpad.net/gcc-arm-embedded и скачиваем установщик (.exe) gcc-arm-none-eabi последней версии. Этот комплект программ будет из текста на Си делать исполняемый файл для микроконтроллера.

Мой выбор именно этого пакета: — он поддерживается сотрудниками ARM. Остальные доступные компиляторы в большинстве случаев сделаны на основе исходников этого. Почитайте на страничке.
у меня: «gcc-arm-none-eabi-4_8-2014q3-20140805-win32.exe»
Создаем на диске«C:» папку с именем «ToolsARM», в ней подпапку «gcc_arm» и устанавливаем в папку «C:\ToolsARM\gcc_arm», папка «bin» должна оказаться тут. Важное замечание: на последней странице установщика снимаем все галочки, чтоб путь нигде в системе не прописывался.
Данный пакет не содержит утилит типа «Make.exe», их придется поставить отдельно, устанавливать их будем в папку «C:\ToolsARM\».

Такой выбор, в отличие от первоисточника в начале статьи, основан на опыте первоначального использования Eclipse. Мне пришлось несколько раз его переустанавливать. При создании подпапок в папке Eclipse их можно случайно удалить, что не есть гуд.

  • Make и CoreUtils for Windows

На странице gnuwin32.sourceforge.net/packages/make.htm скачиваем Make for Windows, по ссылке, рядом с которой указано "• Complete package, except sources".
На странице gnuwin32.sourceforge.net/packages/coreutils.htm скачиваем CoreUtils for Windows по ссылке, рядом с которой указано "• Complete package, except sources".
В моем случае «make-3.81.exe» и «coreutils-5.3.0.exe».

В папке «C:\ToolsARM» создаем подпапку «GnuWin32» и устанавливаем оба комплекта программ в папку «C:\ToolsARM\GnuWin32» (можно при установке утилит просто указать папку «C:\ToolsARM», а «GnuWin32» — родная папка утилит — создастся при установке).

  • STM32 ST-LINK utility


www.st.com/web/en/catalog/tools/PF258168 скачиваем внизу страницы через кнопку «Download», распаковываем скачанный архив и устанавливаем в пути установки, предложенные программой по умолчанию. В случае нерабочей ссылки ищем в инете «STM32 ST-LINK utility» на сайте «www.st.com/», ссылка может измениться при изменении версии выложенной версии утилиты.
В моем случае «STM32 ST-LINK Utility_v3.5.exe».

При помощи этой утилиты можно читать-записывать STM-овские микроконтроллеры и много чего ещё. Эта утилита, кроме всего прочего, устанавливает драйвер для ST-link на плате Discovery. Понадобится при отладке.

  • STM32CubeMX

www.st.com/web/en/catalog/tools/PF259242 скачиваем внизу страницы через кнопку «Download», распаковываем скачанный архив и устанавливаем в пути установки, предложенные программой по умолчанию. Выше кнопки «Download» есть ссылка на плагин для Eclipse, но этот плагин у меня почему-то не заработал…
В моем случае «SetupSTM32CubeMX-4.5.0.exe».

Для меня Куб — самая прикольная программа в пакете…

Запускаем STM32CubeMX.exe(в дальнейшем — просто Куб) и через меню «Help->Install New Libraries» запускаем обновление библиотек. Выбираем необходимые библиотеки и жмем «Install Now». У меня сейчас имеется только Discovery c STM32F051R8, поэтому я выбрал библиотеки для STM32F0 и STM32F4, опишу оба варианта. (судя по тому, что в Кубе нет библиотек HAL для семейства STM32F1 думается, что ST сворачивает поддержку данной линейки,… логичная замена, по-моему, — это линейка STM32F2… а где Discovery с STM32F2 на борту?). Пока библиотеки обновляются продолжаем. После обновления — Куб пока закрываем.

  • OpenOCD

OpenOCD — программное обеспечение для отладки и прошивки микроконтроллеров с ядром ARM, в том числе и STM32.

На сайте «openocd.sourceforge.net/» ищем ссылку на последнюю версию OpenOCD, скомпилированную под Windows. В моем случае — на странице «www.freddiechopin.info/en/download/category/4-openocd» ссылка на «OpenOCD 0.8.0», скачался архив «openocd-0.8.0.7z».

Скачанный 7z архив распаковываем и копируем папу «openocd-0.8.0»(в которой папка «bin») в «C:\ToolsARM». После копирования — переименовываем папку «openocd-0.8.0» в «openocd», сам исполняемый файл в папке «bin» — тоже переименовываем в «openocd.exe».

В результате в папке «C:\ToolsARM» должна сформироваться следующая структура папок:



  • Установка плагинов и настройка Eclipse

Запускаем Eclipse и устанавливаем несколько плагинов, необходимых для работы с микроконтроллерами.

  • GNU ARM Eclipse Plug-ins

Это «центровой» плагин, позволяющий среде Eclipse работать с микроконтроллерами ARM.

Страничка плагина gnuarmeclipse.livius.net/blog/ — там можно почитать про использование данного плагина, и последние новости разработчиков. Например там написано, что на Eclipse luna первых релизов данный плагин может работать нестабильно…
Адрес для установки плагина: «gnuarmeclipse.sourceforge.net/updates»

Плагины устанавливаются через меню «Help ->Install new software». В открывшемся окне в верхнюю строчку или вводим (копипастим) адрес сервера обновлений, или через кнопку «Add» указываем на папку с распакованным плагином, или указываем на архив с плагином.
В нашем случае — в верхнюю строчку вводим адрес плагина и жмем клавишу «Enter» на клавиатуре компьютера для обновления информации из источника. Видим информацию о списке устанавливаемых компонентов:



Далее кнопка «Next» и видим список тех компонентов, что были подобраны к установке по взаимным зависимостям, то есть когда один компонент требует наличия другого из пакета:



Опять «Next», видим окно с лицензионным соглашением, выбираем принять и жмем «Finish»
(без картинки) и наблюдаем за полоской установки плагина. В случае, если данный плагин может вызвать нестабильную работу системы — выскакивает окно:



Соглашаемся, что мы в курсе возможных предстоящих проблем — «OK», после этого выскакивает окно с предложением перезапустить Eclipse — жмем «OK», Eclipse перезапускается. Всё, плагин установлен.

  • EmbSysRegView Plug-ins

Страничка плагина embsysregview.sourceforge.net/
Адрес для установки плагина: «embsysregview.sourceforge.net/update»

Данный плагин позволяет добавить в отладчик просмотр регистров периферии микроконтроллера. Очень полезная штука, приближающая отладчик Eclipse к профессиональным IDE.

Устанавливаем аналогично предыдущему плагину.

Процедура установки на этом может считаться законченной. Дальше предстоит настроить Eclipse для использования GNU_ARMEclipse плагина. Мы не будем использовать возможность данного плагина генерировать начальный код, а вот возможность отладки через OpenOCD — пригодится полностью.

  • Настройка Eclipse

В меню выбираем Windows ->Preferences, в открывшемся окне настроек C/C++ ->Build ->Environment. При помощи кнопки «Add» добавляем переменную «PATH», имеющую значение «C:\ToolsARM\GnuWin32\bin» — в этой папке лежат утилиты «make.exe», «rm.exe» и «echoexe», мы указываем где их искать. В дальнейшем придется указать пути и до остальных утилит в папке «C:\ToolsARM», это будет ниже.

Начальная настройка закончена, Eclipse готов к работе. Только если сейчас открыть проект, созданный ранее, как сделал я на этом шаге — он не соберется с ошибкой, что не может найти компилятор C++. Если открываете проект, созданный в другой системе (у меня проект был сделан на другом компьютере), то следует в настройках проекта «C/C++_Build ->Setting» вкладка «Toolchains» в переменную «Global path» записать «C:\ToolsARM\gcc-arm\bin».

  • Начальный код в STM32CubeMX для Eclipse
К этому времени у Вас уже должны обновиться библиотеки под используемый контроллер (в Кубе). В главном окне Куба выбираем «New Project», щелкаем по вкладке «Board Selector», в левом списке выбираем «Discovery», в правой таблице выбираем ту плату, для которой будем генерировать начальный код. У меня сейчас под рукой — STM32F0DISCOVERY, поэтому картинки под неё, Вы выбираете свою плату, принцип будет один и тот же:



Нажимаем «OK» и видим окно конфигурации ввода-вывода по «ножкам» микроконтроллера:



В этом окне ничего не трогаем, щелкаем по вкладке «Clock Configuration» и проверяем настройку — у меня по умолчанию она не была дефолтной, ставим как должно быть:



В меню выбираем «Project -> Settings ...», из списка «Toolchain / IDE» выбираем «TrueSTUDIO», в верхнее окно вводим название проекта (у меня — «DiscoF0»), через кнопку «Browse» указываем на папку рабочего каталога Eclipse — «C:\stm32prg»:



Проверяем, чтоб на второй закладке всё было настроено по умолчанию:



Подтверждаем, что всё верно — «OK».
В меню выбираем «Project ->Generate Code», ждем окончания генерации кода и в окне:



Выбираем «Close», закрываем сам Куб — он своё дело сделал.

В проводнике Windows открываем папку рабочего каталога Eclipse и, среди прочих, видим папку с тем именем проекта, что задавали в настройках Куба (у меня — «DiscoF0»). Открываем её, и в этой папке (в «DiscoF0») создаем папку «System». Далее — из папки «DiscoF0\Projects\TrueSTUDIO\DiscoF0 Configuration» копируем в папку «System» файлы: линкера «STM32F051R8_FLASH.ld» и ".cproject". На других платах — будет файл с наименованием Вашего контроллера и расширением ".ld". Из второго файла — возьмем настройки путей и define. После этого папку «Projects» можно удалить.
Аналогично удалил в папке «DiscoF0» созданные Кубом файлы ".mxproject", «DiscoF0.ioc». Будете Вы их удалять или нет — решать Вам.
В папке «DiscoF0\Drivers\CMSIS\Device\ST\STM32F0xx\Include» удаляем все ".h" файлы, не имеющие отношение к микроконтроллеру на Вашей плате:



В папке «DiscoF0\Drivers\CMSIS\Device\ST\STM32F0xx\Source\Templates\gcc» меняем расширение у файла для Вашего микроконтроллера с ".s" на ".asm", так как используемый нами пакет утилит не понимает расширение ".s":



Подготовка закончена, теперь создаем проект в Eclipse.

  • Создание проекта в Eclipse

В основном окне Eclipse в меню выбираем «File ->New ->C Project» в открывшемся окне в вернее окно вводим имя созданного в Кубе проекта, остальное должно быть по умолчанию. Обращаем внимание на желтый треугольник, так и должно быть, если его нет — неправильно указан рабочий каталог или имя проекта:



Жмем «Next», на странице «Select Configurations» — ничего не трогаем, жмем опять «Next».
На странице «Gross GNU ARM Toolchain» в окне «Toolchain path» указываем на «C:\ToolsARM\gcc-arm\bin» и жмем «Finish»:



Между этими окнами при первом запуске создания проекта будет ещё одно окно с опциями (ключами) — его не трогаем, тоже жмем «Next»(а может это будет «Finish»), при создании проекта второй раз — это окно не появляется.

  • Настройка проекта в Eclipse

Теперь предстоит настроить пути к файлам и define, специфичные для нашего проекта, используемых библиотек и микроконтроллера. Можно подсмотреть эти настройки в аналогичном проекте, только созданном для IDE, в котором Вы можете их увидеть. Я смотрел их бесплатной версией Keil.
А можно — поискать поиском в файле ".cproject", что сохранили в «system». Ключевые слова «definedSymbols» и «includePath». Рядом будут необходимые данные, только из путей убираем точки и косые черточки — у нас настройки идут от корня папки.
Для моей STM32F0DISCOVERY пути и define будут следующие:

Name=«USE_HAL_DRIVER» без параметров
Name= «STM32F051x8» без параметров

${ProjDirPath}/Drivers/CMSIS/Device/ST/STM32F0xx/Include
${ProjDirPath}/Drivers/STM32F0xx_HAL_Driver/Inc
${ProjDirPath}/Drivers/CMSIS/Include
${ProjDirPath}/Inc

Для STM32F4DISCOVERY:

Name=«USE_HAL_DRIVER» без параметров
Name= «STM32F407xx» без параметров

${ProjDirPath}/Drivers/CMSIS/Device/ST/STM32F4xx/Include
${ProjDirPath}/Drivers/STM32F4xx_HAL_Driver/Inc
${ProjDirPath}/Drivers/CMSIS/Include
${ProjDirPath}/Inc

Запускаем Eclipse, выбираем перспективу «C/C++»:



Заходим в свойства созданного проекта — щелчок правой кнопкой мыши на папке проекта и пункт выпадающего меню «Properties». В левом списке выбираем«C/C++ General -> Path and Symbols», на вкладке «Includes» нажимаем кнопку «Add» и добавляем последовательно все пути, необходимые для сборки проекта. При добавлении обязательно отмечаем галочки «Добавить во все конфигурации» и «Добавить для всех языков»:



Должно получиться так:



Переходим на вкладку «Symbols» и аналогичным образом добавляем define:



После этого идем в «C/C++ Build ->Settings» в верхнем меню выбираем «для всех конфигураций», и настраиваем параметры для целевого микроконтроллера:



а для STM32F4DISCOVERY:



Щелкаем по вкладке «General» линкера и нажимаем на кнопку папки с плюсом, в открывшемся окне — кнопку «Workspace» и добавляем ссылку на файл линкера в папке «system»:





Нажимаем на кнопки «Apply» и «OK».

В дереве проекта открываем файл «main.c» и нажимаем на иконку с молоточком. Проект должен без ошибок собраться как в режиме «Debug» так и в режиме «Release». У меня, например, выдало ошибку на двойное объявление функций в файлах «stm32f0xx_hal_msp_template.c» и «stm32f0xx_hal_msp.c». Я открыл свойства файла «stm32f0xx_hal_msp_template.c» и поставил галочку вот тут:



тем самым исключив файл из сборки проекта, и пришлось удалить папку «DSP_Lib» — ругалось на что-то внутри, не успел разобраться, а использовать DSP библиотеку пока не собирался.
Касперский почему-то иногда начал блокировать нормальную работу «make.exe» и в окне консоли было непонятно что со ссылкой, что ждет ответа от make ...
В этом месте у Вас должен получиться проект — заготовка. Именно то, что выдал Куб. Ни ошибок ни варнингов быть не должно, а в консоль должна выдать параметры распределения памяти в микроконтроллере:



Через меню проекта закрываем его, идем проводником Windows в рабочий каталог Eclipse и архивируем результат своей работы. У нас получился проект — заготовка и дальше с ним можно делать что угодно — например — поморгать светодиодом и посмотреть на это в отладчике.

  • Добавляем свой код

Теперь надо по традиции сделать микроконтроллерный «Hello World», поморгать светодиодом. Делать это будем через библиотеку HAL таким образом, что бы написанный код подошел к любому из двух описываемых в статье микроконтроллеров.

В файле «main.c» в начале файла, добавляем код, что бы получилось как ниже:

/* USER CODE BEGIN PV */

#ifdef STM32F051x8 // LED define
#define LED (GPIOC, GPIO_PIN_8)        //led for STM32F0DISCOVERY
#elif  STM32F40xx
#define LED (GPIOD, GPIO_PIN_13)       //led for STM32F4DISCOVERY
#endif // LED

/* USER CODE END PV */ 


Бесконечный цикл в функции main изменяем следующим образом:

 /* Infinite loop */
  while (1)
  {
	  HAL_GPIO_TogglePin LED; // LED inverse
	  HAL_Delay(200);
  }
  /* USER CODE END 3 */


Нажимаем на кнопку с молоточком, и если нет ошибок — смотрим как работает в отладчике.

  • Настройка отладки
Первым делом настроим плагин EmbSys Register Vievev.
Открываем меню «Window ->Preferencec» далее «C/C ++ ->Debug -> EmbSys Register Vievev» и согласно рисунка настраиваем под свою плату, у меня:



Вы — настраиваете под свой микроконтроллер и плату, потом — «OK».

Открываем меню «Window -> Show View -> Debug» — открываем перспективу отладки. Щелкаем по нижней части окна, перебираем вкладки рядом с «Console», можно и её щелкнуть — так указывается место, куда вставим окно плагина. Открываем меню «Window -> Show View ->Other» и далее «Debug ->EmbSys Register» жмем кнопку «OK» — и окно с регистрами периферии вставляется куда указали. У Вас может быть другое место — кому как нравится.

Теперь предстоит настроить плагин OpenOCD для корректной работы отладки. Для представления, как это правильно делается в «оригинале», заглядываем к разработчикам:
gnuarmeclipse.livius.net/blog/openocd-debugging/, откуда узнаем что первым делом надо переименовать файл в папке установки «C:\ToolsARM\openocd\bin» так, чтоб исполняемый файл имел имя «openocd.exe» — переименовываем.

Открываем меню «Window ->Preferencec» далее «Run/Dedug ->String Substitution» и изменяем настройку переменных согласно рисунку:



Переключаемся на перспективу «C/C++» и открываем файл «main.c» того проекта, для которого будем настраивать отладку — обязательно надо иметь фокус на необходимом проекте.
Открываем меню «Run ->Debug Configurations», выбираем «GDB OpenOCD Debugging» и через правую кнопку мыши выбираем «New»:



Проверяем соответствие рисунку и щелкаем следующую вкладку:



Если надо — корректируем путь к исполняемому файлу «openocd» и в нижнем окне прописываем имя скрипта к своей плате, имя скрипта находим в папке «C:\ToolsARM\openocd\scripts\board».
Проверяем последнюю вкладку:



Тут необходимо переключить, где отмечено и выбрать папку проекта. После этого нажимаем кнопку «Apply».
Подключаем плату к компьютеру и нажимаем кнопку «Debug». Если проблем нет — то увидим моргание светодиода отладчика на плате и кнопки для шагов по программе в верхней части окна перспективы Debug:



В настройках отладчика по умолчанию задано несколько точек остановки, поэтому несколько раз нажимаем на кнопку «плей» и видим моргающий светодиод на плате.

Жмем красный стоп. Пока всё в порядке, если кнопок не увидели — то следуем по цепочке — обновляем драйвера -> проверяем настройки OpenOCD. Именно по этой инструкции без проблем запустилась отладка в Win 7 x86, Win 7 x64, и Win 8.1 x64.
  • +9
  • 27 ноября 2014, 23:13
  • avtoneru

Комментарии (63)

RSS свернуть / развернуть
хорошая статья, но название статьи можно изменить
0
Спасибо!, предложите другое название
0
Зачем столько текста на гланге. Почему бы не сделать «кат».
+1
редактировал текст, вставил из черновика, а там тега не было. вовремя не заметил… буду внимательней
0
Спасибо большое за статью! Скажите на линуксе получится такая свзяка или утилитка отладчика только под виндоус есть?
0
на линуксе всё должно заработать, только не знаю как там с драйверами под st-link, тут отладка завязана на них.
0
As it can be seen, the executable is build with support for ST-LINK, J-Link and FTDI based probes (using the open source libftdi library). If you need support for other probes, or want to use the proprietary FTDI drivers, just follow the explanations in the README and INSTALL files.

Это со страницы gnuarmeclipse.livius.net/blog/openocd-install/

Судя по цитате — драйвера для линукса под st-link есть, они описывают как поставить и настроить
0
вот-вот вроде из-за этого и не стал изучать stm32 на линуксе. Вроде как дров отладчика нет. Помнится что меня это остановило… Эклипс у меня под линуксом стоит а изучаю в кейле
0
вот-вот вроде из-за этого и не стал изучать stm32 на линуксе. Вроде как дров отладчика нет. Помнится что меня это остановило… Эклипс у меня под линуксом стоит а изучаю в кейле
в подобный момент посмотрел в сторону китайцев — на волшебный и универсальный j-link
0
Да у меня платка дисковери в ней встроенный отладчик. Китаец тоже есть у меня но дома. попробую дискавери запустить по эклипсом. Отпишусь
0
Драйвер для st-link-а есть, причем давно (https://github.com/texane/stlink). Ну а j-link и еще куча других — в openocd «искаропки».
0
А мне не удалось с ходу запустить отладку и прошивку stm32-discovery под линукс. Как потом оказалось — реализация USB протокола была некорректной, дескриптор крив. Из-за чего Linux выкидывал дискавери как неработоспособный.

Поэтому остановился на бутлодыре с сериального порта.
0
Эта проблема есть только с ST-Link/1 (stm32vldiscovery) и решается ковырянием в настройках линуха.
0
Или перешивкой в V2.
0
Помнится, долго мучался с самим эклипсом и с IDE, сделанными на его базе. А потом попробовал бесплатную emIDE и понял, что больше ничего не нужно. Всё работает из коробки, с полпинка, да ещё и с J-Link сразу умеет без шаманства. И проект/воркспейс можно в репозиторий добавлять, будучи уверенным, что тот, кто его захочет собрать, скачает исходники, поставит с нуля emIDE (в комплекте сразу gcc/g++, и Newlib-nano, и билдтулзы), ничего не настраивая откроет проект, нажмёт F7 и сбилдит. И тут же, воткнув J-Link, зальёт в девайс. С эклипсом такое без бубна не проделаешь (не знаю, может, уже починили это? Пару лет назад это было огромной проблемой).
0
С эклипсом такое без бубна не проделаешь (не знаю, может, уже починили это? Пару лет назад это было огромной проблемой).
Не было такой проблемы. Если JLink использовать. Если STLink — то да проблема. Но сейчас и этой проблемы нет.
поставит с нуля emIDE
Но Эклипс-то по-лучше будет. К чему эти емблохсы?
0
emIDE — готовая сборка для ARM MCU, сделанная на базе другой популярной open source IDE Code:Blocks, а не Eclipse.
-1
сделанная на базе другой популярной open source IDE Code:Blocks
Я знаю, что она не на Эклипсе.
Я о том что сейчас настройка Эклипсы сводится к установке 2-3 плагинов и всё. А качество при этом выше.
0
настройка Эклипсы сводится к установке 2-3 плагинов и всё.
тоже так думал и даже на радостях перевел статью… оказалось не всё так просто.
Правильно — обратиться к документации GNU ARM Eclipse плагина и подстроить Eclipse…
оказалось есть несколько интересных нюансов, связанных с совместимостью и стабильностью.
пока перевариваю прочитанное, буду часть написанного переписывать, чтоб было по «фен-шую»
0
оказалось не всё так просто.
Ну это нормально — чем дальше в лес тем толще партизаны.

оказалось есть несколько интересных нюансов, связанных с совместимостью и стабильностью.
Что за нюансы?

Правильно — обратиться к документации GNU ARM Eclipse плагина и подстроить Eclipse…
Имхо (и думаю многие со мной согласятся) ARM Eclipse плагина — лишний и ненужная сущность в работе с Cortex-Mx МК.
Лучше использовать Makefile project.
Тогда остаётся другой важный вопрос — отладка. Он решается с помощью OpenOCD debug plugin.
0
Проблема была в невозможности полноценно расшарить настроенный проект через контроль версий. Там абсолютные пути где-то, и часть важных настроек разбросаны по неведомым файлам, и постоянно файлы проекта изменяются от каждого чиха. А мержить их удовольствие ещё то.
0
Класть еклипсовский проект в систему контроля версий — дурной тон. Потому как геморрой. Вы, я так понимаю, убедились в этом на собственной шкуре.
0
Класть еклипсовский проект в систему контроля версий — дурной тон.
И что в этом дурного? Файл проекта тоже нужен обязательно. Или нет?
0
Обычно кладут исходный код, без привязки к IDE.
0
Обычно кладут исходный код, без привязки к IDE.
И как его (код) собирать? Без привязки к окружению? Без опций оптимизации и прочего?
Получается код сферический в вакууме. Или нет?
0
Почти. Я почему-то редко встречал файлы, характерные для IDE. Вместо этого есть файлик типа HowToBuild.
0
Тем не менее, с emIDE это всё прекрасно получается. Особенно полезно, когда у проекта множество таргетов.
0
Тем не менее, с emIDE это всё прекрасно получается.
Проект от эклипсы соберёт или от кейла-иара?
Особенно полезно, когда у проекта множество таргетов.
Какие таргеты вы имеете в виду?
0
Таргеты сборки.
Например, одни и тот же проект должен собираться для плат с разными типами микроконтроллеров, или вообще для разных платформ. У каждого таргета свои линкер скрипты, свои наборы дефайнов, свои комплекты файлов. А для тестирования всё то же должно билдится под винду с программной моделью периферии вместо реального железа. Что ни таргет — везде свои нюансы. Если вручную пожддерживать мейкфайл со всеми этими «bells and whistles» — прямая дорога в дурдом.
0
В Java для этого есть maven/gradle/ant/etc. В C/C++ для этого есть make/qmake/cmake/etc. Аналогично с другими языками и платформами.
Получается код сферический в вакууме. Или нет?
Код, который невозможно собрать из командной строки (без IDE) это и есть сферический в вакууме код. Такое считалось плохой практикой уже лет 15-20 назад и с тех пор отношение к такой практике только ухудшилось, поскольку если раньше код, чаще всего, собирался у самого разработчика (или разработчиков), то теперь к этому списку почти всегда добавляются автоматические сборщики (т.н. Continuous Integration), автоматические тестировщики и так далее. У этим инструментам для сборки гуй и IDE нафиг не нужны.
0
Код, который невозможно собрать из командной строки (без IDE) это и есть сферический в вакууме код. Такое считалось плохой практикой уже лет 15-20 назад и с тех пор отношение к такой практике только ухудшилось,
Согласен с вами на 100%. Код должен собираться из командной строки как минимум.
У этим инструментам для сборки гуй и IDE нафиг не нужны.
GUI нужен, но не для сборки, а прежде всего для редактирования, а потом для отладки кода.
Не отлаживать же программу в командной строке?
0
Я не о людях, а об этих тулзах.
0
Любая нормальная IDE умеет генерировать мейкфайл, который можно пользовать для сборки из командной строки. И лучше так, чем вручную его поддерживать.
0
Одна из проблем описана выше. Вторая проблема — все разработчики вынуждены пользоваться одной IDE, что, как минимум, не удобно, а как максимум чревато конфликтами в команде вплоть до ухода разработчиков.
0
Лично я пользуюсь Makefile-ами, у меня как-то с ними проблем нету. В своё время пришлось плотно разбираться. В качестве IDE — NetBeans для C/C++ — он отлично дружит с проектами на основе мэйкфалов.
Разрабатываю исключительно под Линуксом. Всё работает прекрасно. В том числе и openocd.
Кстати, эту утилиту — STM32CubeMX можно под линуксом запустить. Если интересно — обращайтесь.
0
Да, интересно. И желательно подробнее о связке в целом (нетбинс и все остальное, под линух).
0
Думал думал. В общем придется статью написать. Здесь в комментах не то. Постараюсь в ближайшее время.
0
Пользуюсь eclipse+OpenOCD для stm32. Во-первых, почему-то очень долго происходит компиляция. Минут 3-5 на проект. Если запускать вручную, то гораздо быстрее.
Во-вторых, есть ощутимые глюки при отладке. Например, не работает рестарт, эклипс не хочет показывать глобальные переменные и т.д. Так что либо надо долго и упорно дорабатывать напильником, либо мириться с недостатками.
0
очень долго происходит компиляция. Минут 3-5 на проект.
Какая связь между компиляцией и отладкой (openocd)? Это не связанные друг с другом процессы.
Если запускать вручную
Это как, Из команндной строки?
эклипс не хочет показывать глобальные переменные
Может у него отладочной информации нет — без параметров компиляции не скажешь.
0
Какая связь между компиляцией и отладкой (openocd)? Это не связанные друг с другом процессы.
Никакой связи. Я говорю о работе всей связки, как в статье. В сравнении c IAR, например, эта связка работает медленней.
Это как, Из команндной строки?
Да, из ком строки запускать компилятор, он за 2 минуты отрабатывает где-то.
0
В сравнении c IAR, например, эта связка работает медленней.
Ну может GCC компилирует медленее. Хотя я такого не замечал — примерно тоже самое.
Но ведь удобств больше у Eclipse…
за 2 минуты отрабатывает где-то.
Один файл поменялся и 2 минуты компилирует? Что-то долго.
А какой у вас размер прошивки? Может проект огромный?
0
Да, он наверное каждый раз весь проект компилирует. Прошивка 60кб где-то.
И да, прошивается контроллер тоже на порядок дольше, чем через ST-Link'овскую программу.
0
Да, он наверное каждый раз весь проект компилирует.
Ну так а при чём тут эклипс? У меня к примеру 2 минуты не компилирует.
Без makefile (или проекта) вам врядли кто-тот помочь сможет.
0
Непонятно зачем нужен этот «Open Source»
Если ведется работа на результат и фирма стремится зарабатывать деньги, то каких-то 1,5тыс $ просто смешные деньги (по сравнению со стоимостью Windows, различных CAD и стоимости самих инженеров).
Если это хобби и лицензионная чистота не имеет значения, то собирать костыли… дело попахивает мазохизмом )
Ибо скачать кряк секундное дело…
-3
Непонятно зачем нужен этот «Open Source»
Чтобы лишние деньги не тратить.
каких-то 1,5тыс $ просто смешные деньги
Что вы за полторы тысячи купите? Кейл с Иаром гораздо больше стоят. При этом их качество местами хуже гораздо (особенно редактор)
Ибо скачать кряк секундное дело…
Воровать как-то нехорошо. Или нет?
+1
Чтобы лишние деньги не тратить.
Иногда чтобы заработать — нужно что-то вложить.
Нет ну конечно можно разрабатывать схемы в Paint-е вмето Altium, моделировать 3Д в любом OpenSource недоредакторе (коих развелось достаточно)…
А можно фирме один раз потратится и эти траты многократно окупятся…
При этом их качество местами хуже гораздо (особенно редактор)
Для них есть плагины под Eclipse, но в силу его тормознутости — они не популярны
0
Иногда чтобы заработать — нужно что-то вложить.
Конечно, вкладывать нужно.
А можно фирме один раз потратится и эти траты многократно окупятся…
Не окупятся — Keil и IAR практически ничем не лучше Eclipse+GCC. Местами они хуже: редакторы у них отстали лет на 10.
но в силу его тормознутости
Нормально Eclipse работает — ни разу не тормозит, даже на старых компах.
0
Так в том-то и дело, если бы требовалось купить только среду разработки. Она действительно не 1,5килобаксов стОит, а намного больше. Нужно очень много разного и производители периодически выпускают новые версии. Увеличение стоимости софта — это увеличенные первоначальные вложения, увеличение сроков окупаемости. Если для крупной фирмы миллион туда, миллион сюда — копейки, то для малого бизнеса это ощутимые деньги. Если деньги из фирмы потрачены на софт, значит их нехватит в другом месте.
0
Если деньги из фирмы потрачены на софт, значит их нехватит в другом месте.
Правильно — можно сэкономить на софте за счёт того что он бесплатный.
0
Настраивать лень, по этому пользую CooCox, который как раз сборка эклипса и gnu сомпилятора под ARM.
Ну да, графического генератора заготовок нет, но есть свои плюсы вроде выбора камня/борды и подключения соответствующих библиотек. И никакого шаманства.
0
  • avatar
  • igorp
  • 08 декабря 2014, 18:43
Статья помогла. Дякую.
Была проблема
eclipse make all Cannot run program "make" (in directory "...\f4disco\Debug"): CreateProcess error=2
PATH прописан правильно. Использовал make, что в статье, потом MinGW — одинаково.
В общем проблема крылась в недостатке какого-то плагина из серии CDT/GDB. Ссылки 1.luxmentis 2.CDT
Win8.1x64 + Eclipse Luna + LaunchPad GCC 4.9 2014.q4 + OpenOCD-x64-0.8.0.
Откомпилировалось нормально. Отладка заработала. Светодиод заморгал.

Но вот беда. Кнопки reset, run и т.д не доступны.
eclipse-debug-toolbar
0
  • avatar
  • kyb
  • 13 декабря 2014, 14:29
В общем проблема крылась в недостатке какого-то плагина из серии CDT/GDB
C/C++ GCC Cross Compiler Support
Но вот беда. Кнопки reset, run и т.д не доступны.
Удалил C/C++ GDB Hardware Debugging. Помогло.
0
Народ, подскажите, Eclips или CooCox работают нормально через прокси с авторизацией? Сколько не долбал эти программы на работе — эффекта ноль. Админ отмораживается, мол «пусть учит своё ide парольному доступу к прокси». Может кто может что подсказать, а то не охота отказываться от STM из-за этого, а keil не вариант — ограничение дает о себе знать, а в последствии привыкнешь к нему, еще больше дискомфорта думаю будет от перехода на gnu, чем сразу с него начать. Заранее благодарен за любую инфу и наводку.
0
В эклипсе в настройках есть возможность настроить работу через прокси с авторизацией. Копать в сторону Window->Preferences->General->Network Connection.

P.S. а вашему админу неплохо бы напомнить, что он просто обслуживающий персонал, типа уборщицы. особенно учитывая, что от парольного доступа к прокси, кроме геморроя для юзеров, никакой пользы.
0
Если там все настроено, то дальше только админ и настройки прокси?
P.S. А не подскажите часом в coocox есть возможность настройки прокси или там только системные подхватывает?
0
Да, если там все правильно настроено, то дальше только админ. Особое внимание надо обратить на переключалку режимов Direct/Manual/Native.
Насчет кокоса ничего не скажу, поскольку не пользовался и не знаю насколько там сохранились оригинальные эклипсовские настройки.
0
Спасибо, значит не судьба поработать с stm(
0
Вот что то подобное www.openstm32.org/Importing+a+STCubeMX+generated+project, сейчас буду пробовать.
0
До GNU ARM Eclipse plug-in им ещё далеко. Впечатление, что ST пытается, так неспеша, сделать свою бесплатную IDE…
там есть прикол — надо ручками прописать nano библиотеку, а то код выдаст недетских размеров…
0
Да уж, действительно, попробовал, а экспорта в sw4stm32 как такового нет. И зачем они добавили нерабочую опцию в Cube? а я был обрадовался. наверно реклама :)
0
Экспорт вроде как есть, но именно вроде. Да и сама IDE sw4stm32 вроде как работает. Всё приходится допиливать.
Хотя из этого проекта (созданного в CUBE для sw4stm32), за пару минут всё перегоняется в проект плагина «GNU ARM Eclipse plug-in» — просто импорт файловой системы + экспорт-импорт путей до заголовочных файлов и дефайнов + небольшая настройка — пару галочек…
0
ооо!!! спасибо за наводку, буду пробовать.
0
Слишком сложно, на мой взгляд. Вот тут описан способ как провести интеграцию при помощи скрипта (в самом конце), который делает конвертацию из sw4stm32 в eclipse. Там же даны ссылки на первоисточники.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.