×

St-link linux

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Хочу перейти с винды на линух и один из камней преткновения разработка под stm32 в линухе.

Если прикрутить к эклипсу gcc arm none eabi получилось, то пнуть исходник stlinka под программатор никак. Есть какие то решения без пляски с бубном либо с минимальной пляской?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

мучал я мучал его пока чисто случайно не наткнулся на статейку как его прикручивали дополнительно устанавливая пакет программ
libusb-1.0
pkg-config
libtool
autoconf
libusb был установлен бо про него на github писали. в общем после этого и после добавления пути в переменую окружения все заработало. пока не понял как, но буду разбиратся.

Спасибо почитаю. Я ж новичок в линуксе поэтому многие вещи для других элементарные мне не знакомы.

странно что бареметальщик задает такой вопрос, ведь линукс это как stm, одна сплошная траханина :D

stm разный бывает, ацп в stm32f103 быстро пнул, а в stm32f303 пришлось покопатся в мануале, stm32f030 и stm32f051 вобще песня, я в них не заметил особого усложнения по сравнению с avr по крайней мере для чего то не сложного. ну то больше для работы, для любительских задач мне ардуины или другой avr-ки хватает как правило с головой

А є взагалі якісь безкоштовні IDE для SMT32, які базуються не на eclipse? Я помучався з тим eclipse, а потім налаштував Qt Creator + QBS + openocd. Вроді працює, но з дебагом бувають проблеми, і тих самих регістрів периферії немає.

А є взагалі якісь безкоштовні IDE для SMT32, які базуються не на eclipse?

Code::Blocks например. Но история везде одна и та же. Кто-то написал плагинов — отлично. Не написал — страдаем.

Segger Embedded Studio — не на екліпсі, але безкоштовно тільки для некомерційних проектів. www.segger.com/...​nt-tools/embedded-studio. Дебаг працює добре, але тільки з j-link.

Зачем вообще нужно IDE? Лет 10 назад вполне норм заводил OpenOCD и вводил команды в gdb никаких проблем не было, можно ещё emacs добавить

Зачем вообще нужно IDE?

Туда обычно куча полезного инструментария встроено. Карты регистров при отладке можно смотреть, тулзы всякие для трассировки. Да вот как пример (правда я хз, может openOCD уже и дорос до этого): попробуй настроить и вывести все каналы дебаговой печати через SWD на комп (вместо UARTа). Да та же поддержка мониторинга состояний RTOS через плагины IDE.

правда я хз, может openOCD уже и дорос до этого

в том то и дело что не знаеш что эклипс на самом деле запускает gdb и openocd

Да та же поддержка мониторинга состояний RTOS

sourceware.org/...​ocs/gdb/Auto-Display.html

В том то и дело что ты не знаешь что эклипс запускает тот gdb сервер и утилиту для коммуникации с JTAG, которые ты сам устанавливаешь в настройках.

Но история не об этом. Сравни автодисплей

sourceware.org/...​ocs/gdb/Auto-Display.html

и хотя бы вот этот сетап с плагинами для отладки Как думаешь, где более удобно отладочная информация предоставлена?

P.S.: Я этот этап тоже проходил лет 10 назад. Написать свой мейкфайл, свой скрипт линкера для своей раскладки в памяти в проце, свои скрипты для запуска OpenOCD и программирования/отладки. Но это больше для понимания как оно устроено. А для бизнес-проектов потом берешь нормальную IDE c нормальным сетом иструментов/плагинов и херячишь. Потому что время дорого и некогда мазохизмом заниматься.

звучит так, вроде они чем то хуже

у каждого языка свое предназначение, свои сильные и слабые стороны. Вы же не станете к примеру динамический веб интерфейс сайта пилить на си, для этого есть яваскрипт, на котором про линковку врядли что-то знать надо, но там есть своя специфика с которой работают и которую надо знать. я например с линуксом раньше особо дела не имел. Я пишу под микроконтроллеры, по долгу службы мне не приходилось использовать CMake, юзал обычный мейк причем он был написан другими программистами еще до меня и мне туда особо влазить не приходилось, мне приходилось влазить в другие сферы. Вы ж если пишите скажем под windows прикладное ПО на С++ не будете изучать как работают апаратные прерывания или DMA или GPIO потому что вам это врядли понадобится. Мне не лень, у меня опыта и навыков мало, я пробовал разобраться самостоятельно у меня возникли трудности не буду скрывать в частности из-за недостаточных знаний английского, я решил спросить совета/помощи у более опытных, по моему форумы для этого и существуют.

Что такое компиляция и линковка в общих чертах знаю, влазить туда не приходилось. Разве что пару раз когда задействовал внешнею озу. И иногда *.map файл шерстить на предмет возможного выхода за границы массива данных, бо программаторы которыми приходится пользоваться умеют только шить. Почитать не лень, читаю, на момент написания поста я понятия не имел что искать и что читать. Скрипты для автотулов, боюсь разочаровать, но с таким вообще дела не приходилось иметь.

А тебе именно эклипс и определенный компилятор нужен? Почему бы не заюзать тот же Атолик для STM? Он эклипс-based, но там все из коробки работает.

закачал system workbench установился нормально, раньше к эклипсу пытался крутить, бо систем воркбенч не хотел ставится на убунту, почему не вспомню, давно было.
Но все равно осталось прикрутить stlink, качал с github исходник и он не хочет собиратся, хотя устанавливал libusb и cmake как рекомендовалось в инструкции.
Eclipse юзаю бо привык к нему и на работе использую для 8 битных avr, кушает не сильно много(по крайней мере старые версии), удобный. Раньше atolic на винде юзал но что то не получалось у меня проект пнуть и тогда я систем воркбенч юзать начал. В общем среда, то не главное, компилер есть на чем кодить есть, нету с помощью чего шить.

Если чисто шить — openOCD в помощь
Ну или этот
github.com/texane/stlink

ставил дополнительно
libsub 1.0
cmake 3.5.1

вот такая ерунда в конце при попытки сделать make release
LIBUSB_LIBRARY (ADVANCED)
linked by target „stlink-static” in directory /home/oleg/Документы/stlink/stlink
linked by target „stlink” in directory /home/oleg/Документы/stlink/stlink
linked by target „stlink” in directory /home/oleg/Документы/stlink/stlink

— Configuring incomplete, errors occurred!
See also „/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeOutput.log”.
See also „/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeError.log”.

содержимое CMakeError.log

Performing C SOURCE FILE Test C_SUPPORTS_WMISSING_VARIABLE_DECLARATIONS failed with the following output:
Change Dir: /home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" „cmTC_b8b11/fast”
make[1]: Entering directory ’/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp’
/usr/bin/make -f CMakeFiles/cmTC_b8b11.dir/build.make CMakeFiles/cmTC_b8b11.dir/build
make[2]: Entering directory ’/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp’
Building C object CMakeFiles/cmTC_b8b11.dir/src.c.o
/usr/bin/cc -std=gnu99 -Wall -Wextra -Wshadow -D_FORTIFY_SOURCE=2 -fstrict-aliasing -Wundef -Wformat -Wformat-security -Wmaybe-uninitialized -DC_SUPPORTS_WMISSING_VARIABLE_DECLARATIONS -Wmissing-variable-declarations -o CMakeFiles/cmTC_b8b11.dir/src.c.o -c /home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp/src.c
cc: error: unrecognized command line option ’-Wmissing-variable-declarations’
CMakeFiles/cmTC_b8b11.dir/build.make:65: recipe for target ’CMakeFiles/cmTC_b8b11.dir/src.c.o’ failed
make[2]: *** [CMakeFiles/cmTC_b8b11.dir/src.c.o] Error 1
make[2]: Leaving directory ’/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp’
Makefile:126: recipe for target ’cmTC_b8b11/fast’ failed
make[1]: *** [cmTC_b8b11/fast] Error 2
make[1]: Leaving directory ’/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp’

Source file was:
int main(void) { return 0; }
Performing C SOURCE FILE Test C_SUPPORTS_WSHORTEN_64_TO_32 failed with the following output:
Change Dir: /home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" „cmTC_a182b/fast”
make[1]: Entering directory ’/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp’
/usr/bin/make -f CMakeFiles/cmTC_a182b.dir/build.make CMakeFiles/cmTC_a182b.dir/build
make[2]: Entering directory ’/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp’
Building C object CMakeFiles/cmTC_a182b.dir/src.c.o
/usr/bin/cc -std=gnu99 -Wall -Wextra -Wshadow -D_FORTIFY_SOURCE=2 -fstrict-aliasing -Wundef -Wformat -Wformat-security -Wmaybe-uninitialized -DC_SUPPORTS_WSHORTEN_64_TO_32 -Wshorten-64-to-32 -o CMakeFiles/cmTC_a182b.dir/src.c.o -c /home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp/src.c
cc: error: unrecognized command line option ’-Wshorten-64-to-32′
CMakeFiles/cmTC_a182b.dir/build.make:65: recipe for target ’CMakeFiles/cmTC_a182b.dir/src.c.o’ failed
make[2]: *** [CMakeFiles/cmTC_a182b.dir/src.c.o] Error 1
make[2]: Leaving directory ’/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp’
Makefile:126: recipe for target ’cmTC_a182b/fast’ failed
make[1]: *** [cmTC_a182b/fast] Error 2
make[1]: Leaving directory ’/home/oleg/Документы/stlink/stlink/build/Release/CMakeFiles/CMakeTmp’

Source file was:
int main(void) { return 0; }

стоп, это получается не cmake ипользовался для сборки? у меня gcc компилер

А вы сразу все знали и умели? Ну может кто то все знает и умеет, я пока учусь.

у меня было
$ make release
$ make debug
$ cd build/Release; sudo make install
у меня заглохло на первом мейке.
я не думаю что это заклинания что бы дождь вызвать, эти команды мне известны и понятны

неопознанная опция командной строки, а как узнать какая она там должна быть? это ж в мейкфайле она прописана насколько я понимаю

cmake их прописал для компилятора. У него есть багофича. Он основывается на дефолтном компиляторе в линухе.

эти опции не главное,
эти опции супортятся только в clang(но это не точно, такой вывод по первой странице в гугла)
cmake проверяет суппортит их компилятор или нет просто пробуя собрать hello world с этой опцией, и пишет аутпут компилятора CMakeError.log, это можно понять хоть чуть чуть читнув документации,

фейл этих двух проверок на сборку stlink не влияет
— Performing Test C_SUPPORTS_WMISSING_VARIABLE_DECLARATIONS
— Performing Test C_SUPPORTS_WMISSING_VARIABLE_DECLARATIONS — Failed
— Performing Test C_SUPPORTS_WSHORTEN_64_TO_32
— Performing Test C_SUPPORTS_WSHORTEN_64_TO_32 — Failed

dou.ua/...​rums/topic/28679/#1702523
там всего одна строчка
find_package(LibUSB REQUIRED)
где конфигурация сборки может упасть

нужно просто понимать процесс сборки на более лучшем уровне чем «нажал кнопку билд в эклипсе и оно собралось», чтобы понимание появилось нужно краем глаза почитать документации на cmake.org, для чего он вообще.

быть может потом станет понятно что строки

cc: error: unrecognized command line option ’-Wmissing-variable-declarations’
cc: error: unrecognized command line option ’-Wshorten-64-to-32′

не проблема на самом деле

cmake 3.5.1

эта версия вышла три с половиной года назад, тебе действительна она нужна?

содержимое CMakeError.log

этот файл смотреть не имеет смысла, нужно смотреть что там пишет cmake прямо в консоль

подозреваю что там сверху написано

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
LIBUSB_INCLUDE_DIR (ADVANCED)

эта версия вышла три с половиной года назад, тебе действительна она нужна?

Не к данному вопросу, но вот мне сейчас приходится использовать CMake 2.8.12 + GCC 4.8, ибо такой тулинг по умолчанию в Oracle Linux 7 :( а с притащить обновления — отдельная серия траблов.
У него тоже может быть привязка к чему-то столь же древнему, раз речь идёт про специфические платформы.

/home/oleg/Документы/stlink/stlink

чи то я старомодний, але

/Документы/

, Карл, Документы

если русская локаль стоит до да, именно такая папка создается при установке/запуске

если русская локаль стоит до да, именно такая папка создается при установке/запуске

так я би в неї нічорта все одно не запихав

Так и запишем: «С подозрением относится к кирилице в путях» )))

OpenOCD чудово працює з st-link. Також st-link можна перешити на j-link, а він теж на всіх ОС працює. Ще є зборка gnu-mcu-eclipse.github.io де все вже зліплено разом: eclipse, gcc і OpenOCD.

Всегда ставил их IDE все работало. Попробуй их IDE, stm32cubeide или как-то так.

Я что-то сделал и у меня что-то не получилось, что мне делать дальше?

Нет, ну серьезно, как вы хотите чтоб вам помогли если вы даже не рассказали что вы делали?

так SW4STM32 же www.st.com/...​pment-tools/sw4stm32.html
только он плохо работает с китайскими стлинк свистками... юзаю дискавери в качестве програматора

Если прикрутить к эклипсу gcc arm none eabi получилось

выкинь эклипс это путь вникуда

то пнуть исходник stlinka под программатор никак

в моем дистре есть собраный уже

Чем это эклипс путь в никуда?

Ну, из удобств, там зачастую есть плагины, которые показывают всю карту регистров периферии.
Что немаловажно.

Підписатись на коментарі