Как стать автором
Обновить

Комментарии 39

Можно сильно сократить размер бинарника, если отказаться от использования .unwrap(). Он использует стандартные средства форматирования, которые не оптимизированы для генерации короткого кода.


Подробнее можно посмотреть здесь: https://jamesmunns.com/blog/fmt-unreasonably-expensive/

Как-то сложно вы прошиваете, можно же прописать runner = "arm-none-eabi-gdb -q -x openocd.gdb" в .cargo/config и прошивать с помощью gdb командой cargo run --release, без всякой конвертации в bin. Пример этого есть в https://github.com/rust-embedded/cortex-m-quickstart


И ещё: почему в features указан stm32f100, а не stm32f103?

Makefile руками написать — не так-то и сложно. Зато удобно. И стандарт какой-никакой…

А он-то тут зачем?

НЛО прилетело и опубликовало эту надпись здесь
чтобы не плодить сущности, я бы называл это «черной blue pill». Просто с black pill я связываю почти такую же черную платку, но уже на STM32F411. Не сильно дороже, но сильно мощнее. (хотя конкретно сейчас использую именно blue pill)

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


UPD. извините, соврал. Картинки "black pill STM32F411" и "black pill STM32F103" заметно различаются.

а есть еще Black Pill STM32F401CCU6. Тоже с Type-C на борту
Было бы хорошо обновить статью рекомендациями из комментариев и выложить обновленную версию в гитхаб, которую можно было бы использовать как Quick Start.

Я правильно понимаю что функционал xargo теперь доступен для ARM прямо из дефолтного cargo?

Да. Xargo теперь нужен в очень редких случаях.

Строго говоря, небольшое подмножество, но если для большинства случаев его за глаза. IIRC, Jorge Aparicio (автор xargo и большого количества крейтов для embedded) хотел втащить ещё больше функций, связанных с пересборкой libcore, liballoc, libcollections etc, в cargo.

Я встроенщины только чуток касался, поэтому детали бы почитал по теме. Видел что джсонками хитро настраивали таргеты по старые платформы, типа доса времен 16 бит, и какие-то штуки в кодогенерацию для llvm выносили, а вот что конкретно и какая разница — темный лес.

Для себя вижу 3 проблемы в эмбеддед расте:


  1. Отвратительная документация и оформление репозиториев пакетов. Для запуска проекта используется несколько пакетов, у которых есть зависимости. У всех этих пакетов абсолютно одинаковый ридми на гитхабе (под копирку) и совсем непонятно что и как использовать.


  2. Нет поддержки CAN-шины. Было уже 3 попытки написать поддержку CAN в embedded hal, но пока безуспешно. Было большое обсуждение, почему rust embedded еще нельзя использовать в боевых системах и отсутствие CAN — это один из пунктов.


  3. Группа разработчиков из embedded rust — это как закрытый тайный орден, который общается в matrix. Хочешь что-то обсудить — разбирайся с matrix и кривыми клиентами.


  4. Нет приличной RTOS, tockOS и RTFM не в счет.



НО, все 4 недостатка говорят только о текущем состоянии. Зато уже изначально есть terminal workflow (привет CI, автоматизация релизов и прочие вещи, полезные в IoT), который прекрасно работает на windows, mac и linux. И работать с такой инфраструктурой гораздо приятнее, чем с родными инструментами STM.


Вообще, остается добавить дефолтных файлов конфигурации для дебага в VS Code в cortex-m-quickstart + документацию и будет вообще отлично!

Так сколько проблем вы видите?)
Было большое обсуждение, почему...

Где об этом почитать?
в моём понимании, развращённом windows-инструментарии, всех вот этих 9-ти шагов быть не должно

Должно быть — написал код, нажал кнопочку, сбилдилось, залилось в кристалл, далее отлаживаешься через тот же ST Link

А тут только на подготовку надо потратить полдня…

Я пользуюсь средой разработки Mikroe Pascal for ARM (можно и MiroE C++ for ARM), там как раз всё так и есть, как я описал — пишешь код, F9, отладка.

ПыСы. Начинайте минусить

Что, и даже Mikroe Pascal for ARM отдельным шагом устанавливать не пришлось?

его — пришлось, но одной кнопкой. Далее просто работаешь
Но можно не устанавливать, а просто распаковать ZIP-дистрибутив в папку

Линуксоиды помешаны на миллионах зависимостях, и не знают, как это — работать с комфортом

в зависимостях нет ничего ужасного, есть есть надежный и удобный менеджер зависимостей. В расте он есть, в линусе/мак ос х он есть, а вот в винде — нет.

а в винде он не нужен, потому что обычно всё, что нужно, уже входит в дистрибутив
а что вы минусуете-то, парни? Тот же IAR, например, из коробки имеет всё и сразу, и не требует для своей работы доставить ещё стотыщ пакетов и прочего мусора

Это работает только до тех пор, пока вам не понадобится сторонняя библиотека, которую "забыли" включить в дистрибутив.

Что именно входит в дистрибутив? В дистрибутив чего?


Помимо libc и самого языка Си в проекте могут использоваться библиотеки. Например, RTOS, FS и пр. Каким образом они подключаются и компилируются в C? Да как придётся. Хорошо, если есть CMake или Make в репозитории. Иначе бери, копируй файлы, компилируй всё сам. Так что непонятно что вас смутило в системе, которая значительно упрощает управление зависимостями проекта.

Например, RTOS, FS и пр. Каким образом они подключаются и компилируются в C?

Они как правило в SDK идут, у stm32 в stm32cubeide, у esp32 в esp idf.

Ну, нельзя же запихать все зависимость внутрь IDE. Что-то да останется снаружи. Плюс, если они "идут", это значит что внутри IDE сделан такой же, только неявный, package manager, который всё это скачивает и встраивает в структуру.

нельзя, но основное можно.
Я не фанат настраивать окружение по пол дня для каждого маленького проекта.

А что из перечисленного тут следует настраивать полдня?

Всё то что перечислено выше, от
Версия компилятора Rust

И, как минимум, до
Пример


Плюс к этому ещё какую то IDE бы желательно, с отладкой, ведь уже 2020 год.

П.С. И после всего оказывается что ещё и CAN не доступен)
И после всего оказывается что ещё и CAN не доступен
Что значит недоступен? То, что готового драйвера нет, и придётся самому с регистрами работать?
Ну так это статья "пишем хелловорлд". Для нормальных боевых проектов всё равно придётся писать свой код со своими азартными играми и продажными женщинами.

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

Маленький проект проще скопипастить с другого маленького проекта со всеми его настройками.
Ну и в кейлах-иарах в package'ах, мягко говоря, далеко не все возможные библиотеки представлены.

Хорошо конечно так, если просто скопировать. У меня как не проект, так новый микроконтроллер. Из последних за 2019год esp8266, esp32, stm32, stm8, n76e003, kendryte k210

очень сложно описано, думаю, можно проще все сделать
не читал, но осуждаю.
на самом деле, прочитал всё, но не понял — зачем? я знаю, что еще и форт есть и фортран для STM32. но зачем???

А можно добавить ссылки на aliexpress на конкретную плату и программатор? Было бы офигенно, а то я, как полный чайник в stm, боюсь чего-нить не то купить :)

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.