Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Исследуйте яркий мир с бесконечными головоломками и разнообразными средами в каждой главе. Расширьте свои возможности с помощью захватывающих испытаний на время со специальными типами шариков, которые помогут вам в пути.

Квест Зумба

Казуальные, Три в ряд, Головоломки

Играть

Топ прошлой недели

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
3
erinaceto
erinaceto
7 месяцев назад
Серия Технические заметки

Stm32 без IDE — памятка 1: собираем проект⁠⁠

За вопрос спасибо студентам группы 031/EE-01.

Буквой в скобках обозначаю (например, так: "(Щ)" ) моменты , на которые позже хочу сослаться.

Исходные данные: есть проект STM32CubeIDE (скажем, пустой, только что сгенерированный), теперь хочется его его скомпилировать и запустить на микроконтроллере.
Материалы: МК на базе stm32F401 (впрочем, конкретная модель не важна *), многострадальный ноутбук с Rosa Fresh 12.5.1, кубик версии 1.12 (люблю я именно эту версию…). Программатор — китайский свисток, которому повезло, что кубик его принимает за своего.
Если у вас windows, я предполагаю, что вы сами установили и настроили make, драйвер st-link и т. п. Также все консольные команды я даю в расчёте на bash, это стоит иметь в виду.

Итак, мы запустили кубоид, создали в нём проект, а теперь хотим закрыть кубоид и далее работать с этим проектом. На самом деле для того, чтобы всё получилось без лишней головной боли, сперва соберите проект в кубе. У вас создастся каталог Debug (ну, я пока предполагаю, что вы ничего не трогали), а в нём — исполняемый файл, и куча промежуточных файлов. Теперь вы можете сделать Project →Clean, при этом удалится большинство промежуточнх файлов, но останутся иструкции для утилиты make, которой мы и воспользуемся.

Для этого нам понадобятся

  • текстовый редактор. Любой;

  • утилита make;

  • компилятор, способный создать исполняемый файл для МК;

  • сервер gdb, способный работать по интерфейсу SWD с МК;

    • при использовании ST-LINK_gdbserver (см. ниже) понадобится консольный stm32programmer;

  • клиент gdb, умеющий в инструкции процессора МК.

С редактором, думаю, более-менее ясно.

Компилятор и клиент GDB можно достать из уже установленного кубоида (если у вас его в принципе нет, можно ограничиться пакетом STM32CubeCLT (CLT означает command-line tools). Там нам понадобится найти расположение файлов arm-none-eabi-gcc и arm-none-eabi-gdb.

Собственно, arm — это архитектура процессора, для которого мы собираем программу, none-eabi означает отсутствие какой бы то ни было ОС, взяимодействующей с исполняемым файлом (всяческие RTOS в данном случае не в счёт).

Вот по серверу есть варианты. Можно использовать openOCD, st-util либо stlink-gdbserver. Я буду использовать stlink-gdbserver просто потому, что он идёт в поставке с кубиком (на самом деле у него есть ещё два преимущества: он умеет более чем в одно подключение одновременно, а главное — в отладку двухъядерных МК).

Поищем (я предполагаю, что кубик установлен в /opt/st/stm32cubeide_1.12.0, в зависимости от ОС, кончено, нужно использовать подходящие инструменты для поиска):

aleksei@RNWS-008 ~ $ find /opt/st/stm32cubeide_1.12.0  -name 'arm-none-eabi-gdb'  
/opt/st/stm32cubeide_1.12.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.linux64_1.0.200.202301161003/tools/bin/arm-none-eabi-gdb
aleksei@RNWS-008 ~ $ find /opt/st/stm32cubeide_1.12.0  -name 'arm-none-eabi-gcc'  
/opt/st/stm32cubeide_1.12.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.linux64_1.0.200.202301161003/tools/bin/arm-none-eabi-gcc
aleksei@RNWS-008 ~ $ find /opt/st/stm32cubeide_1.12.0  -name 'ST-LINK_gdbserver'  
/opt/st/stm32cubeide_1.12.0/plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.0.500.202301161003/tools/bin/ST-LINK_gdbserver

(Б) На самом деле, конечно, это всё можно найти и глазами, но в любом случае с непривычки будет сильное желание выкинуть эти длинные буквы подальше.Пути до (не включительно) arm-none-eabi-gdb и ST-LINK_gdbserver следует добавить к системной переменной PATH (нет, как это делается, я здесь пояснять не буду, это относится не к нашей теме, а к общей компьютерной грамотности).
(Ъ) А вот путь до arm-none-eabi-gcc нужно добавить в PATH обязательно.

(В) Для использования ST-LINK_gdbserver нам отдельно понадобится путь к программе STM32_Programmer_CLI. Примерно так:

aleksei@RNWS-008 ~ $ find /opt/st/stm32cubeide_1.12.0  -name 'STM32_Programmer_CLI'
/opt/st/stm32cubeide_1.12.0/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.0.600.202301161003/tools/bin/STM32_Programmer_CLI

aleksei@RNWS-008 ~ $ export PATH_TO_PROGRAMMER='/opt/st/stm32cubeide_1.14.0/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.1.100.202311100844/tools/bin'

(А) Далее, make можно использовать как системный, так и из поставки кубоида (так же, поищите make). В принципе, нет причин не использовать штатный make — если только у вас не windows. Но тут подскажу мало: вживую видел make в составе платформы msys2, по идее, должно быть достаточно make из кубика. Точно так же, добавьте её в PATH, и будет работать.


Отлично. если вы проделали это — треть работы позади.

Теперь перейдём к сборке проекта. Для этого необходимо зайти в терминале в каталог с проектом, далее в каталог Debug (посмотреть, где он лежит, можно из Cube IDE: щелчок правой кнопкой мыши → Show In → System Explorer

Stm32 без IDE — памятка 1: собираем проект Микроконтроллеры, Stm32, Программирование, Консольщики, Разработка, IT, Длиннопост

ПКМ на каталоге → Show In → System Explorer

Теперь, узнав, где мы сидим (в моём случае это ~/STM32CubeIDE/other/test/Debug), открываем там терминал:
cd ~/STM32CubeIDE/other/test/Debug
и собираем проект (во всяком случае, те, кто не прогуливал лекцию про make):
make all

Для этого у нас должны быть установлены make (см (А) ) и переменная PATH должна указывать на каталог с arm-none-eabi-gcc (см. (Ъ)). Если make пишет что-то вроде /bin/bash: команда не найдена: arm-none-eabi-gcc), то возвращаемся к пункту (Ъ).

Если же эти два требования выполнены, то внезапно собирается. Почему?

Потому что в каталоге Debug кубик создаёт makefile, а также воссоздаёт примерную структуру каталогов проекта. В каждом из подкаталогов лежит фай subdir.mk, описывающий, как собирать данный подкаталог (в самом Debug эти инструкции вынесены в файлы с названиями objects.list, objects.mk, sources.mk). В принципе, мне по нраву такой подход. В сами файлы мы залезем чуть позже. А пока посмотрим, что получилось на выходе:

aleksei@RNWS-008 ~/STM32CubeIDE/other/test/Debug $ make  all  | grep -v arm-none-eabi-gcc
Finished building target: test.elf

arm-none-eabi-size  test.elf  
text  data  bss  dec  hex filename
5788  20  1580  7388  1cdc test.elf
Finished building: default.size.stdout

arm-none-eabi-objdump -h -S test.elf  > "test.list"
Finished building: test.list

(grep -v использовал просто чтобы не выводить полотно текста).

У нас собрался файл Debug/lesson1.elf. Ура. Он модержит в себе инструкции и данные для работы программы; адреса, по которым эти инструкции и данные должны располагаться; отладочную информацию в соответствии с тем профилем сборки, который настроили в кубике — для Debug это практически весь исходный текст программы. Он нам и понадобится далее.

Теперь треть работы позади.

Подключаемся к МК.

Как уже упоминал, работать будем с ST-LINK_gdbserver; при желании можете использовать st-util, она чуть проще в запуске, а результат для нас будет тем же. Или openOCD, если он у вас уже есть.

Предполагаю, что (Б) и (В) мы уже прошли. Тогда запускаем:
ST-LINK_gdbserver -p 4242 -d -t -cp $PATH_TO_PROGRAMMER
Здесь -p 4242 — это указание порта для работы с клиентом gdb; по умолчанию ST-LINK_gdbserver использует 61234, делайте как вам удобно, я обычно пишу его явно, чтобы не забыть.
-d — использовать SWD (подозреваю, что ключ необязателен).
-t — тоже необязательный для нас, разрешает множественные подключения.
-cp $PATH_TO_PROGRAMMER — обязательно нужно указать путь к STM32_Programmer_CLI (см. (В))

Если контроллер подключён, то увидим сообщение типа Waiting for debugger connection
Это означает, что мы смогли подключиться по USB к программатору и через него к целевому контроллеру. Если не смогли — проверяем контакты (в том числе разрешение на доступ к USB, мало ли…)

Далее в отдельном терминале заходим в каталог с файлом elf и запускаем клиент отладчика. Примечание для пользователей windows: здесь следует использовать именно стандартный терминал windows, штуковины типа git bash или терминала msys2 в данном конкретном случае не дадут работать автодополнению клиента gdb.

aleksei@RNWS-008 ~/STM32CubeIDE/other/test/Debug $ arm-none-eabi-gdb

(gdb) target extended-remote :4242
Remote debugging using :4242
warning: No executable has been specified and target does not support
determining executable automatically.  Try using the "file" command.
0x08015760 in ?? ()
(gdb) file test.elf
Reading symbols from test.elf...
(gdb) load

Loading section .isr_vector, size 0x298 lma 0x8000000
Loading section .text, size 0x1bc5a lma 0x8000298
Loading section .init, size 0xc lma 0x801bef4
Loading section .fini, size 0xc lma 0x801bf00
Loading section .rodata, size 0x10444 lma 0x801bf0c
Loading section .eh_frame, size 0x4 lma 0x802c350
Loading section .ARM.exidx, size 0x8 lma 0x802c354
Loading section .data, size 0x9ec lma 0x802c35c
Loading section .init_array, size 0xc lma 0x802cd48
Loading section .fini_array, size 0x4 lma 0x802cd54
Loading section .init_array.00000, size 0x4 lma 0x802cd58
Start address 0x08007a24, load size 183642
Transfer rate: 41 KB/sec, 8347 bytes/write.
(gdb) continue
Continuing.

Собственно, программа запущена. Далее изучайте команды gdb (начните с: breakpoint, info breakpoint, delete, next, step, continue, run, disconnect, target, quit, print, x, frame; несколько особняком — dump, потому что на тему неё я позже ещё напишу пару слов). Имейте в виду, что здесь работает автодополнение команд (клавишей Tab), история (клавиши «Вверх» и «Вниз»), поиск по истории (Ctrl + r), сокращения команд (например, 'c' эквивалентно continue). Также если нажать ВВОД при пустой строке ввода, будет повторена последняя команда (это не очень удобно, но увы, без пересборки gdb этого не исправить; для отдельных команд можно отменить повтор последней команды при помощи «dont-repeat».

В следущей серии помигаем светодиодиком.

Показать полностью 1
[моё] Микроконтроллеры Stm32 Программирование Консольщики Разработка IT Длиннопост
1
14
Вопрос из ленты «Эксперты»
Benafflek
Benafflek
10 месяцев назад
Лига Геймеров

Актуальность Xbox в России⁠⁠

Консольщикам салют! Встал вопрос о покупке Xbox series s в качестве подарка. Один из факторов покупки именно хбокс это подписка с массой игр. Но сам я не консольщик совсем. Хбоксеры как сейчас себя ведёт подписка? Все ли игры доступны? Как дела обстоят с локализацией? И в целом много нужно танцевать с бубном что бы сервисы Майкрософт работали в России?

[моё] Xbox Series S Консольщики Microsoft Xbox Вопрос Спроси Пикабу Текст
43
Axebattler
Axebattler
10 месяцев назад
Холивары

Ответ на пост «Консольщики vs. PCшники»⁠⁠2

Это старый холивар, сейчас уже, наверное, не актуальный. Однако самый лютый и ебейший проёб пкашников, что при смене магазина им надо докупать игры заново. При том, что я меня консоль просто скачиваю всё со своего аккаунта и не ебу мозги кучей лончеров и двойной авторизацией при запуске игр (привет юби блядями). Всё что мне надо, купить подписку и получать каждый месяц новые игры, для расширения игрового кругозора.

ПК постоянно ломается, так как владелец распиздяй (что бывает часто) и собирает пк из авито говна или того хуже на зеоне. Плюс кривые обновы шиндоус убивающие камни.

Консоль продул, заменил термопасту и всё. А если сломалась, так она стоит, как один проц для пк или средняя видяха, копейки. Купи себе монитор с HDMI, и используй оставшийся от сгоревшего ПК. Хочешь комфорта, бери телек, вообще насрать какой, с двух метров 4к не отличишь от Фул Хд.

Купив консоль забудь про ебанину с апгрейдами до следующего поколения, весь сранный геймдев подстраивается под мощности консоли. Игры, дешевле стима раза в полтора, особенно новинки (да здравствуют региональные цены бедных регионов). Пиратки нет, но хэй, через год другой консоли ломают и если ты одноглазый, можешь накатить грогру.

Summary: надо быть конченным долбоёбом, чтоб купить себе ПК. (не для работы)

[моё] Консольщики Компьютер Игровой ПК Компьютерное железо Мат Текст Ответ на пост
29
7
3dfx.VooDoo
3dfx.VooDoo
10 месяцев назад
Холивары

Ответ на пост «Консольщики vs. PCшники»⁠⁠2

Однако самый лютый и ебейший проёб консольщиков заключается в том ,

что они отказались от эксклюзивов в угоду мультиплатформы.

игры на разные консоли нужно приобретать заново

Зачем? Логичнее брать те игры, которых нет на других платформах.

Консоли умирают стабильно раз в 2-3 года

Компы тоже. Увы, но не все пользователи следят за своими компами.

Консоли греются, шумят,

Это да, но и ПК тоже греется и шумит.

к ним нужен хороший телек,

это где написано? по такой логике, к пк нужен хороший моник. Но не обязательно.

часто у них горят порты,

у компа тоже

нет возможности апгрейда,

он есть, но только одной вещи - хард.

к тому же комп легко превращается в консоль покупкой джойстика.

это известно.

Резюмирую. Консольные войны закончились на противостоянии ps3 и xbox360(ИМХО). Дальше же производители стали отказываться от экслюзивов(исключаем японский рынок, там эксклюзивов для ps навалом.) и переходить на модель временных эксклюзивов.

На пс5про даже привода нету, а стоит дороже пс3! Смысл покупать консоль, у которой отсутствует базовый мультимедийный функционал и экслюзивов толком нету, одни переиздания будут, не вижу.

Нинтендо, вот кто еще выпускает приставки в классическом их понимании.

п.с. сам владею элегантной красоткой ps3 fat(к сожалению не первой ревизии, а 2-й ) и для ностальгии panasonic 3do, dendy.

п.с.2 ПК навсегда, Вин 7 вечна, расправим веселого роджера, и вперёд на поиск старых и новых сокровищ! ))

Показать полностью
Консольщики Компьютер Игровой ПК Компьютерное железо Текст Мат Ответ на пост
10
DELETED
10 месяцев назад
Холивары

Консольщики vs. PCшники⁠⁠2

Это старый холивар, сейчас уже наверное не актуальный. Однако самый лютый и ебейший проёб консольщиков заключается в том , что игры на разные консоли нужно приобретать заново, в то время как на ПК я просто докупаю их, обновляя железо.

Консоли умирают стабильно раз в 2-3 года, если владелец распиздяй (что бывает часто).

Консоли греются, шумят, к ним нужен хороший телек, часто у них горят порты, нет возможности апгрейда, к тому же комп легко превращается в консоль покупкой джойстика.

Summary: надо быть конченным долбоёбом, чтоб купить себе консоль.

[моё] Консольщики Компьютер Игровой ПК Компьютерное железо Мат Текст
187
61
MACKuPOBKA
MACKuPOBKA
10 месяцев назад
Комиксы

Улучшенная версия⁠⁠

1/6
Показать полностью 6
Комиксы Перевел сам Luck of the draw Консольщики Консолехолопы Длиннопост Геймеры
9
1947
Jimbosan
Jimbosan
1 год назад

Консольщики, ваше оправдание?⁠⁠

Консольщики Перевод Юмор Вертикальное видео Компьютер Видео Playstation 5 Дети Субтитры Подарки Рождество
685
ZarubaVoice
ZarubaVoice
1 год назад
Лига Геймеров

Консольные Войны. Flash Gitz⁠⁠

Часть 4. Где-то в недрах игрового магазина Xbox наверняка есть игры в которые захотят играть геймеры

Консольные Войны - Конец X BOX ONE? В оригинале

FlashGitz на русском в дубляжеZarubaVoice

Больше консольных войн

Xbox Xbox One Playstation Консольщики Анимация Юмор Flashgitz Видео Видео ВК ВКонтакте (ссылка) YouTube (ссылка)
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии