Надо бы тоже поворчать

Вот есть такая операционная система для микроконтроллеров всяких под названием RIOT, «дружелюбная операционная система для Интернета Вещей»:

https://www.riot-os.org/

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

Но вот попался мне в руки какой-то датчик температуры и влажности из серии DHT (популярной среди ардуинщиков) — и нет бы сказать человеку «брось каку»! Нет, я как дурак взялся помочь запустить этот датчик в RIOT-е. Как можно понять из истории этого всего, драйвер писали три немецких программиста:

https://github.com/RIOT-OS/RIOT/commits/master/drivers/dht

С момента, когда код драйвера попал в эту помойку каталог с драйверами внешних устройств RIOT-а, и вплоть до самого недавнего времени, драйвер был абсолютно непригоден для какого-либо нормального использования. Я не шучу — с 29 мая 2015 года вплоть до 19 июля 2019 в коде драйвера присутствовал бесконечный цикл, в который мы попадали, если датчик решал заглючить или отвалиться. Ну вы представляете себе «умную теплицу» в исполнении типичного ардуинщика? Китайские датчики с алиэкспресса, гнилые провода, повышенная температура и влажность, …

При всем при этом RIOT — система с кооперативной многозадачностью, бесконечные циклы в ней приводят к тому, что ваше устройство наглухо зависает — и все из-за отвала одного сраного проводочка! При этом нельзя сказать, что в код драйвера никто не заглядывал — заглядывали, исправляли, добавили пустые скобки в бесконечном цикле, поправили фамилию одного из авторов — работа кипела!

Ну и скажите теперь, можно ли пользоваться системой, в которой четыре года (!) живет вот такой драйвер, которым попросту нельзя пользоваться (вопрос о том, можно ли пользоваться купленными на алиэкспрессе датчиками, отложим на потом)?

Надо бы тоже поворчать: 4 комментария

    1. Ванильная версия требует допиливания для любых мало-мальски серьезных применений — то есть да, есть более-менее работающее ядро, какая-то поддержка популярных семейств микроконтроллеров, но уже тут начинаются «нюансы» — скажем, поддержка тех же STM32 слегка кривоватая (в плане энергосбережения и всего такого). Драйверы внешних устройств — очень разные, скажем, Semtech-овские чипы для LoRa поддерживаются нормально (плюс еще весь стек LoRaWAN, «родной» для RIOTа); в остальном — как бог на душу положит.

      Можно пользоваться unwired-овской версией, они там слегка допилили поддержку STM32L151, добавили таймеры на RTC (чтобы можно было спокойно уходить в сон) и вообще использовали эту хрень в реальных проектах, а не «университетском опенсорсе».

  1. «Поддержка тех же STM32 слегка кривоватая (в плане энергосбережения» звучит как «в общем парень неплохой только ссытся и глухой». И это учитывая, что подают под соусом IoT

    1. А такое положение примерно во всем опенсорсе. То есть если вдруг тому же ST приспичит ввалить десяток человеколет или пару мегабаксов в допиливание этого всего — то будет более-менее юзабельно, не приспичит — будет вот так (на Nucleo вроде работает и уже хорошо).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *