LINUX.ORG.RU
ФорумTalks

rust для embedded - почти готов

 ,


0

11

https://github.com/rust-lang-nursery/embedded-wg/issues

Не так давно задавался вопросом, готов ли раст к программированию микроконтроллеров. Прошло всего 2 месяца, но изменилось очень много.

- Сделали embedded workgroup, и поставили четкую цель закрыть все косяки к выпуску rust 2018 edition.
- В трекере EW запротоколировали все хвосты
- Начали размечать книжку по embedded rust.
- В RTFM запланировали к лету добавить виртуальные таски, эвенты и прочий сахар, чтобы было не хуже классических RTOS. RTFM вообще интересная концепция, для простеньких систем подходящая идеально (когда добавят что запланировали)
- Из кучи хвостов, из-за которых эмбеды не компилировались на stable, закрыли все кроме одного (он в процессе).
- Я не понял, в каком состоянии генераторы, но макросы await! есть, и вроде все это должно нормально приземлиться в stable к edition 2018.

В общем, теперь есть конкретное место, где можно наблюдать прогресс, и сам прогресс очень радует.

Также стоит отметить, что нужен не только язык, но и библиотеки. Из того что пригорает у меня лично

- заметный пробел по гуям
- нема клавиатурной абстракции для фильтрации дребезга и приворачивания енкодеров вроде EC11 (по крайней мере мне так показалось)

★★★★★

Хм, потыкать чтоли сразу в продакшне? Кстати, как там экзотические случаи, когда требуется тонкая настройка линковщика, как использовать разную доступную память? Реально ли юзать в режиме, где можно использовать только стэк и rodata (без .bss и .data)?

Ну и какие архитектуры поддерживаются? PowerPC и ARM есть?

ncrmnt ★★★★★
()
Последнее исправление: ncrmnt (всего исправлений: 1)
Ответ на: комментарий от ncrmnt

Я типа провокатор, как муха - прилетел, нажужжал и улетел :).

Ну и какие архитектуры поддерживаются? PowerPC и ARM есть?

ARM очень бодро тянут, вроде для всех модных кортексов периферию расписали. А где не расписали - есть тулзы для автоматической генерации по SVD.

Хм, потыкать чтоли сразу в продакшне?

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

Собстна, на всем новье проблема стандартная - с библиотеками затык. Я вот агитирую заинтересованных котанов собраться и гуй слепить. Кстати, повод прославиться и застолбить место, т.к. не занято пока.

Vit ★★★★★
() автор топика
Ответ на: комментарий от ncrmnt

ARM точно поддерживается,а насчет PowerPC не знаю,если нет то можно глянуть в сторону xargo

playX ★★
()
Ответ на: комментарий от Harald

Посмотри примеры в блоге japaric, навесить хендлер проблем нет. Правда в HAL не завернули пул прерываний от пинов, чтобы было удобно работать и коллизии автоматически разруливались на этапе компиляции. Пока каждый ручками колотит.

Vit ★★★★★
() автор топика

Похоже раст таки выстрелит. Когда есть много людей на зарплате, работающих над прожектом — это сразу +100 к вероятности успеха.

Im_not_a_robot ★★★★★
()

Отличные новости!

CYB3R ★★★★★
()
Ответ на: комментарий от burato

Для стрельбы по ногам снимите Rust с предохранителя.

red75prim ★★★
()

О, мне тоже Rust кажется очень интересным языком.

dave ★★★★★
()

- заметный пробел по гуям

к программированию микроконтроллеров

GUI на светодиодах?

O02eg ★★★★★
()
Ответ на: комментарий от O02eg

То, что к микроконтроллеру может быть подключен графический дисплей, разуму гения, создавшему ПЯТИКРАТНЫЙ пост неподвластно??????

curufinwe ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

там выдают кевларовые ботфорты :)

Стальные, стальные ботфорты.

tailgunner ★★★★★
()
Ответ на: комментарий от WatchCat

Вообще есть сишные биндинги ко всяким либам, но они в эмбеды плохо заходят (IMHO). Надо как минимум фонты оптимизировать, делать драйверы девайсов, родную имплементацию и т.п.

Vit ★★★★★
() автор топика
Ответ на: комментарий от ncrmnt

стати, как там экзотические случаи, когда требуется тонкая настройка линковщика

Линкер скрипты, передача параметров сборки, вот это вот всё. после сишечки приходится продираться сквозь обёртки.

как использовать разную доступную память?

указатели в unsafe, оборачиваешь в типы с safe поведением, используешь.

Реально ли юзать в режиме, где можно использовать только стэк и rodata (без .bss и .data)?

Не уверен. по идее можно, минимально требуемый рантайм - это стек и обработчик паники.

Платформы - https://forge.rust-lang.org/platform-support.html, ppc в тир2 есть, так что вполне возможно что работает нормально.

Dark_SavanT ★★★★★
()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от ncrmnt

Ну и какие архитектуры поддерживаются? PowerPC и ARM есть?

Все, которые тянет llvm. У раста только в него есть бэкенд.

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

Потом можно будет написать другой бэкенд для особого микроконтроллера без поддержки в llvm.

O02eg ★★★★★
()
Ответ на: комментарий от vromanov

Фик знает, но там будет очень небольшой оверхед. Считай что как у сишечки и не парься на эту тему.

Там вроде еще болталось какое-то issue, что лишние строки ошибок валят в код, но его точно должны разрулить.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Я вот агитирую заинтересованных котанов собраться и гуй слепить.

Это интересно. Не думаю что буду участвовать, но на всякий случай: какую нужно литературу почитать по данной теме?

I60R ★★
()
Ответ на: комментарий от former_anonymous

Там какие-то требования по памяти космические. Это получается скорее не для микроконтроллеров, а для микропроцессоров.

vromanov ★★
()
Ответ на: комментарий от makoven

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

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от former_anonymous

Толсто получается, не надо для простых эмбедов столько (IMHO).

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от KivApple

Await вроде стек не экономит, он только по части синтаксиса. Треды заменяют на эвент луп, и получается более простое переключение контекста. Никак не связанные понятия.

Хотя возможно я чего-то не знаю про возможные имплементации await-ов.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

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

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

По-моему await просто синтаксический антимакаронный сахар, а магию-шмагию делают корутины (или генераторы) под ним. Или я не так понял как оно работает?

Как-то не встречал, чтобы await запиливали в чистом виде. Сначала делают генераторы, а потом уже await, т.к. в чистом виде генераторы только маньяки юзают.

Vit ★★★★★
() автор топика
Последнее исправление: Vit (всего исправлений: 1)
Ответ на: комментарий от Vit

Охренеть, столько рекламы и даже Hello World не сделан

vromanov ★★
()
Ответ на: комментарий от Vit

Да. Это антимакаронный сахар. Но асинхронщина сама по себе тоже экономит память из-за экономии на стеках потоков. Но без await получится лапша из callback.

KivApple ★★★★★
()

пока не запилят поддержку pic17 - не щитова!

yax123 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.