Прийшов час осідлати справжнього Буцефала🏇🏻Приборкай норовливого коня разом з Newxel🏇🏻Умови на сайті
×Закрыть

St-link linux

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

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

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 писали. в общем после этого и после добавления пути в переменую окружения все заработало. пока не понял как, но буду разбиратся.

Кроме

libusb-1.0

это стандартный набор в юнихах и линухах с незапамятных времен.

добавления пути в переменую окружения

Почитай про ldd и все с ним связанное — этому тоже уже больше лет, чем мне.

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

странно что бареметальщик задает такой вопрос, ведь линукс это как 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 потому что вам это врядли понадобится. Мне не лень, у меня опыта и навыков мало, я пробовал разобраться самостоятельно у меня возникли трудности не буду скрывать в частности из-за недостаточных знаний английского, я решил спросить совета/помощи у более опытных, по моему форумы для этого и существуют.

Т.е. ты пишешь на С и не понимаешь как работает сборка, компиляция и линковка???
И до сих пор не понадобилось тебе это изучить? Аднака...
Прочитать на сайте cmake, что это и для чего тоже лень?
Но я надеюсь, ты сходу пишешь скрипты для автотулов?

Что такое компиляция и линковка в общих чертах знаю, влазить туда не приходилось. Разве что пару раз когда задействовал внешнею озу. И иногда *.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; }

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

У тебя вывод обычного make или nmake (если мелкомягкий компилятор предпочитаешь).

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

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

могу поспорить, что там у тебя в инструкции было:
mkdir build
cd build
cmake ..
make
make install
выше же все прозрачно. Или думаешь, что это некие заклинания, чтобы дождь призвать?

У смаке большой плюс, что он сильно проще автотулов и подобного. По сути он и есть замена им для громадной кучи платформ. Попробуй юзать автотулы в винде и слови много «удовольствия».

З.Ы. А вообще сишнику не уметь читать вывод make и компиляторов и линкеров — это днище.

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

А в этом случае нужно писать пост не так, как ты написал.
А так:
Я учусь и пытаюсь сделать такое (кратко описать, что).
Дальше написать шаги, что и где ты делал.
Дальше написать, что у тебя не получилось.
Дальше уже спросить, что ты не правильно сделал.

В таком случае отношение к тебя будет другое, мягкое, а не то, которые ты сейчас получил.

Ну и включая телепалку. Похоже ты юзаешь кросскомпиляцию. У смаке в этом больное место.
Возможно у тебя в интсрукции по сборке на гитхабе написано сделать CXX=<твой супер пупер компилятор> cmake .. . Но телепалка любит ошибаться, ты же ничего не написал, кроме того, что у тебя в углу барабашка.

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

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

Что тут непонятного для тебя?

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

cmake их прописал для компилятора. У него есть багофича. Он основывается на дефолтном компиляторе в линухе.
Но я не верю, что на гитхабе в интрукции для сборки этого не описано. Т.е. или ты не прочитал внимательно, как собирать или какую-то кривую поделку такого же как ты студня пытаешься юзать.
Пока же просто не понятно, как тебе помочь, если ты не описываешь проблемы, как положено. Не нравиться мой совет, почитай, на SO требования к описанию проблем и как задавать вопросы.
На SO твой вопрос просто удалили бы и отправили бы читать инструкцию: «Как правильно задавать вопросы».

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 под программатор никак

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

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

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

С этим спорить не буду. Но я с эклипсом свяжусь, если уж совсем никак по другому.

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