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

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

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

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

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

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

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

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

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

5 комментариев

  1. squeezedorange пишет:

    Что в общем за эту ОС можешь сказать? Есть смысл щупать?

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

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

  2. squeezedorange пишет:

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

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