LINUX.ORG.RU

«Ржавая» IP-камера: прошивка на Rust

 , , ,


2

9

Всем привет.

Мы в Эрливидео решили сделать эксперимент и написать прошивку камеры на Rust. В принципе проект своей прошивки у меня в полудохлом состоянии уже года три как, но его не развивали.

Тут я восхитился идеями раста и решил сделать эксперимент, написав стример на расте.

Детали есть в посте на хабре: https://habrahabr.ru/company/erlyvideo/blog/334912/ тут продублирую суть.

Вокруг сишного SDK с помощью bindgen нагенерен код на Rust, который в unsafe настраивает железо, потом получает оттуда видео кадры. Дальше начинается нормальный Rust, который полученное видео упаковывает в транспортный контейнер и рассылает клиентам через tokio.

Результаты пока радуют: ни единого сегфолта и софт не виснет на 3 подключенных клиентах.

Если интересно, могу дальше рассказывать, как у нас происходит ржавый эксперимент.

Ответ на: комментарий от RazrFalcon

Как альфа?

это можете пояснит, я немного не понял.

Его в расте и быть не может. Разве что паника.

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

Вам сюда: https://www.rust-lang.org/en-US/friends.html

спасибо

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

это можете пояснит

Либа всё ещё в состоянии альфы.

на очень неподдерживаемой архитектуре

Доу. Я подумал у вас x86.

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

Это же ip камера, там старый soft float arm

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

Надо сначала организовать недевелоперский демо стенд, это скорее к концу августа

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

Либа всё ещё в состоянии альфы.

Это не мешает ей нормально работать. Я недавно делал штуку, которая работает с NFQUEUE через tokio, всё понравилось.

Deleted
()

Это arm v6 или v5? Слышал что у LLVM были какие-то проблемы с кодогенерацией под v5, может уже исправили.

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

Сегфолта в расте и быть не может.

Вранье, во первых, ты, наверное, хотел сказать, в Safe Rust, а на контроллере там явно есть ансейф и много.

Во вторых, Stack Overflow — разновидность сегфолта, а он еще как может быть.

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

У меня на мипсе тоже свои приколы были. Например сишная прилага к которой линкую либу на расте собирается с флагом `-funwind-tables` для бэктрейсов. А раст тоже тянет свои таблицы для паников. Но беда в том что gcc и llvm пишут их по-разному в обьектные файлы. Линкер когда видит это безобразие, сразу выпадает с невнятной ошибкой. Каким-то чудом нашел флаг `-mno-compact-eh`, пересобрал с ним С код, и все заработало.

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

Его в расте и быть не может. Разве что паника.

ЛПП. Всё там может быть, другое дело, что для этого надо очень постараться и unsafe явно использовать.

Dark_SavanT ★★★★★
()

И да, я тут в рамках эксперимента в свободное время экспериментирую с bare-metal на расте. Получается интересно.

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

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

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

stm32 разные.

rtos - да, там умрёшь прежде чем реализуешь.

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

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

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

да и в самом железе изрядно нафакапили и никому не сказали

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

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

Писать серверного демона на С++ — это означает выгребать корки по утрам. Писать на камере – значит не иметь корок вообще

max_lapshin ★★★★★
() автор топика
Ответ на: комментарий от quantum-troll

говорите за себя, а по ссылке какой то неумейка который каким то образом продержался 25 лет в индустрии

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

Можно взглянуть с другой стороны: зачем писать демона на C/C++? Понятно, что когда нет выбора, пишут хоть в машинных кодах. Понятно, что можно набрать лучших специалистов, дать им побольше времени, ограничить функционал минимально необходимым, грамотно спроектировать архитектуру, описать инварианты в документации, обмазаться тестами на все случаи, провести многократный кодревью, натравить линтеры и получить вполне качественный программный продукт. Только какой во всём этом смысл, если можно за меньшие деньги набрать средненьких растоманов и получить такой же по качеству продукт быстрее? Откуда эта идея, будто инструмент, позволяющий создать того же качества продукт за большие деньги и большими усилиями вдруг является лучшим?

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

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

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


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

anonymous
()
Ответ на: комментарий от max_lapshin

Писать серверного демона на С++ — это означает выгребать корки по утрам

Попробуй в следующий раз думать перед написанием кода.

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

за меньшие деньги набрать средненьких растоманов

Где? Разве что на лоре всех фанбоев собрать. Но у них домашка, егэ, занятой народ.

bread
()
Ответ на: комментарий от khrundel

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

anonymous
()
Ответ на: комментарий от zudwa

полагаю реализация rtsp протокола на одной из либе раста

anonymous
()
Ответ на: комментарий от zudwa

Похоже на грубое оскорбление на програмистком жаргоне

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

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

переписывать

с таким же успехом можешь азбуку декламировать.

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

Вы не поверите, некоторые люди способны научиться. Любой крестовик переучится на раст за неделю-две, ну ещё за пару месяцев к библиотекам привыкнет.

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

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

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

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

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

Любой крестовик переучится на раст за неделю-две

Но зачем? Ведь современный цепепе божественен, так они сами говорят. Сишники тоже обожают свою сишку, и ниче им больше не надо. Работы для тех и других хватает в отличие от. И получается, что раст - очередное моднявое ненужно для расчесывания ЧСВ бездельников любителей.

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