Blech - язык программирования для сверх-надёжных приложений
Подразделение Bosch Research одноимённой компании разрабатывает с 2019 года новый язык программирования, ориентированный для приложений реального времени (читай embedded-систем). По мнению авторов другие языки, решающие своими методами проблемы безопасности языка Си, такие как Ada, C ++ или Rust являются языками общего назначения, которые улучшают только определенные аспекты программирования и не снижают сложность встроенных приложений. Краеугольными камнями Blech являются его модель вычислений (MoC) и простая интеграция с C.
Компилятор написан на функциональном языке F# и генерирует чистый код C.
#embedded #blech #bosch #programming
https://www.blech-lang.org/blog/2020/05/27/the-purpose-of-blech
Подразделение Bosch Research одноимённой компании разрабатывает с 2019 года новый язык программирования, ориентированный для приложений реального времени (читай embedded-систем). По мнению авторов другие языки, решающие своими методами проблемы безопасности языка Си, такие как Ada, C ++ или Rust являются языками общего назначения, которые улучшают только определенные аспекты программирования и не снижают сложность встроенных приложений. Краеугольными камнями Blech являются его модель вычислений (MoC) и простая интеграция с C.
Компилятор написан на функциональном языке F# и генерирует чистый код C.
#embedded #blech #bosch #programming
https://www.blech-lang.org/blog/2020/05/27/the-purpose-of-blech
Blech
The purpose of Blech
Blech is a new language that aims to substantially boost productivity and the quality of applications in the embedded, reactive, safety- and realtime-critical domain. Referred to in short as the *embedded domain*.
ROS Actions в rclc
Библиотека rclc теперь поддерживает интерфейс Actions и в полной мере соответствует всем возможностям ROS2, о чём на днях объявили разработчики. Релиз библиотеки уже включён в сборку ROS2 Rolling.
rclc является системообразующим элементом фреймворка microROS, предназначенного для интеграции в экосистему ROS2 устройств с ограниченными ресурсами (embedded). Теперь в микроконтроллерах можно будет запускать все типы нод, предусмотренных спецификацией ROS2 - pub/sub, services, actions.
Насколько реализация actions будет требовательна к ресурсам MCU в прикладных задачах - пока неизвестно. По моей информации, полученной от имевших опыт людей, запуск pub/sub ноды в microROS ещё пару лет назад стоил около 100 Kb RAM, что, конечно же, не очень демократично. Тем не менее, проект активно развивается и, вполне возможно, что уже ситуация изменилась. В ближайшее время мы обязательно проверим Действия в действии.
#micro-ROS #embedded #action
Библиотека rclc теперь поддерживает интерфейс Actions и в полной мере соответствует всем возможностям ROS2, о чём на днях объявили разработчики. Релиз библиотеки уже включён в сборку ROS2 Rolling.
rclc является системообразующим элементом фреймворка microROS, предназначенного для интеграции в экосистему ROS2 устройств с ограниченными ресурсами (embedded). Теперь в микроконтроллерах можно будет запускать все типы нод, предусмотренных спецификацией ROS2 - pub/sub, services, actions.
Насколько реализация actions будет требовательна к ресурсам MCU в прикладных задачах - пока неизвестно. По моей информации, полученной от имевших опыт людей, запуск pub/sub ноды в microROS ещё пару лет назад стоил около 100 Kb RAM, что, конечно же, не очень демократично. Тем не менее, проект активно развивается и, вполне возможно, что уже ситуация изменилась. В ближайшее время мы обязательно проверим Действия в действии.
#micro-ROS #embedded #action
Встроим в команду программиста встраиваемых систем ;)
Затея с поиском конструктора увенчалась неожиданным для меня успехом - к команде подключились три сверх-релевантных инженера, которые подхватили важные для нас направления. Все они мотивированы не просто "работу работать", а именно пользоваться результатами своего труда - собрать себе самим намотчик, двигатель или робота. Именно так open source и должен работать и это хороший признак того, что к проекту притягиваются соответствующие люди.
Сейчас мы также остро нуждаемся в embedded-программисте.
Какие задачи решаем?
Идея Robossembler прежняя - наш робот должен собрать самого себя, а потому ему нужен классный motor control даже в условиях несовершенной аппаратной платформы (как в нашем случае с печатным двигателем). Помимо управления двигателем также пригодятся ещё ряд стандартных любого прибора вещей: загрузчики, CAN шина, запись, сохранение и извлечение параметров и т.п. Сейчас у нас естьсамый-самый базовый MVP сервопривода - как-то он работает (периферия на ходу), но ему по-прежнему требуется тюнинг по части эффективности управления.
Исходники и текущие задачи (issues) тут в гитлабе
Что ждём от товарища?
1. Опыт программирования на Си с STM32 (или другом ARM) от 1 года
2. Знание теории управления и ros2-control
3. MicroPython или Rust как доп. плюс
3. Базовые познания в физике, схемотехнике, криптографии, протоколах USB, CAN
4. Разумеется, Makefile, Bash, Linux
Писать на @brylev
#vacancy #embedded
Затея с поиском конструктора увенчалась неожиданным для меня успехом - к команде подключились три сверх-релевантных инженера, которые подхватили важные для нас направления. Все они мотивированы не просто "работу работать", а именно пользоваться результатами своего труда - собрать себе самим намотчик, двигатель или робота. Именно так open source и должен работать и это хороший признак того, что к проекту притягиваются соответствующие люди.
Сейчас мы также остро нуждаемся в embedded-программисте.
Какие задачи решаем?
Идея Robossembler прежняя - наш робот должен собрать самого себя, а потому ему нужен классный motor control даже в условиях несовершенной аппаратной платформы (как в нашем случае с печатным двигателем). Помимо управления двигателем также пригодятся ещё ряд стандартных любого прибора вещей: загрузчики, CAN шина, запись, сохранение и извлечение параметров и т.п. Сейчас у нас естьсамый-самый базовый MVP сервопривода - как-то он работает (периферия на ходу), но ему по-прежнему требуется тюнинг по части эффективности управления.
Исходники и текущие задачи (issues) тут в гитлабе
Что ждём от товарища?
1. Опыт программирования на Си с STM32 (или другом ARM) от 1 года
2. Знание теории управления и ros2-control
3. MicroPython или Rust как доп. плюс
3. Базовые познания в физике, схемотехнике, криптографии, протоколах USB, CAN
4. Разумеется, Makefile, Bash, Linux
Писать на @brylev
#vacancy #embedded
👍7
Контейнеры в IoT (дождались)
С тех пор как embedded-устройствами стали называть ARMv7 штуки с Debian на борту, я уже ничему не удивляюсь. Вот, собственно, и ESP32-native контейнеры подвезли.
Опытные разработчики, за плечами которых стоит V8 (компилятор Javascript в машинный код, также известен как NodeJS) и Dart (язык для фреймворка мобильных приложений Flutter) - оба сделаны в Гугле - обособились в стартап под названием Toit, где пишут целый стек технологий, прицеленных на сегмент интернета вещей. Давайте кратко пробежимся по нему.
Итак, в основе всего стоит одноименный язык программирования для разработки микроконтроллерных приложений, дизайн которого предусматривает высокоуровневость, объектно-ориентированность, декларативность, статическую анализируемость, безопасность и сборку мусора. Типизация в языке опциональная. Для выразительности присутствуют лямбда-функции, которые, тем не менее, рекомендуется заменять на более эффективные оригинальные "блоки" (blocks). Также присутствуют встроенные управления многозадачностью и собственный пакетный менеджер (куда ж без него).
Вроде бы всё типично, но изюминкой тут являются виртуальная машина, на которой исполняется скомпилированный код, и дополнительные инструменты для прошивки устройств и массогого деплоймента. Виртуальная машина по сути и является этой системой контейнеризации, для запуска изолированных сервисов. Она оптимизирована под over-the-air прошивку устройств (привет из фронтенд-разработки), позволяет по мере добавления нового кода сразу же грузить его в микроконтроллер (например по вайфаю, без программатора и USB) и получать моментальную обратную связь. Штука, которая выполняет роль этакого микрозагрузчика, называется Jaguar и написана на Go с щепоткой Toit. Управление деплойментом реализуется с помощью проприетарной утилиты Artemis и является точкой коммерциализации проекта - доступна только демо-версия для 10 устройств.
Проекту уже более 3-ёх лет. Текущая документация оставляет приятные ощущения - изобилует большим количеством разнообразных обучающих материалов от Hello World и моргания светодиодом до HTTP файлового сервера. Строгая ориентация в позиционировании на ESP32 несколько смущает и смахивает на намеренное "обрезание крыльев" под влиянием маркетологов или спонсоров в виде производителей одноимённых чипов. Тем не менее, в подвале главной страницы сайта языка вскользь упоминается возможность запускать это дело на десктопах.
Также обращает на себя внимание тот факт, что современные языко-строители всегда строят по сути экосистему. Одного компилятора недостаточно в современном мире для жизнеспособности проекта - всегда нужны инструменты управления зависимостями, их дистрибьюции, встроенные по соседству возможности CI/CD, расширения популярных IDE. Авторы Toif явно это понимают и всё выше перечисленное у них имеется.
#embedded #iot #esp32
С тех пор как embedded-устройствами стали называть ARMv7 штуки с Debian на борту, я уже ничему не удивляюсь. Вот, собственно, и ESP32-native контейнеры подвезли.
Опытные разработчики, за плечами которых стоит V8 (компилятор Javascript в машинный код, также известен как NodeJS) и Dart (язык для фреймворка мобильных приложений Flutter) - оба сделаны в Гугле - обособились в стартап под названием Toit, где пишут целый стек технологий, прицеленных на сегмент интернета вещей. Давайте кратко пробежимся по нему.
Итак, в основе всего стоит одноименный язык программирования для разработки микроконтроллерных приложений, дизайн которого предусматривает высокоуровневость, объектно-ориентированность, декларативность, статическую анализируемость, безопасность и сборку мусора. Типизация в языке опциональная. Для выразительности присутствуют лямбда-функции, которые, тем не менее, рекомендуется заменять на более эффективные оригинальные "блоки" (blocks). Также присутствуют встроенные управления многозадачностью и собственный пакетный менеджер (куда ж без него).
Вроде бы всё типично, но изюминкой тут являются виртуальная машина, на которой исполняется скомпилированный код, и дополнительные инструменты для прошивки устройств и массогого деплоймента. Виртуальная машина по сути и является этой системой контейнеризации, для запуска изолированных сервисов. Она оптимизирована под over-the-air прошивку устройств (привет из фронтенд-разработки), позволяет по мере добавления нового кода сразу же грузить его в микроконтроллер (например по вайфаю, без программатора и USB) и получать моментальную обратную связь. Штука, которая выполняет роль этакого микрозагрузчика, называется Jaguar и написана на Go с щепоткой Toit. Управление деплойментом реализуется с помощью проприетарной утилиты Artemis и является точкой коммерциализации проекта - доступна только демо-версия для 10 устройств.
Проекту уже более 3-ёх лет. Текущая документация оставляет приятные ощущения - изобилует большим количеством разнообразных обучающих материалов от Hello World и моргания светодиодом до HTTP файлового сервера. Строгая ориентация в позиционировании на ESP32 несколько смущает и смахивает на намеренное "обрезание крыльев" под влиянием маркетологов или спонсоров в виде производителей одноимённых чипов. Тем не менее, в подвале главной страницы сайта языка вскользь упоминается возможность запускать это дело на десктопах.
Также обращает на себя внимание тот факт, что современные языко-строители всегда строят по сути экосистему. Одного компилятора недостаточно в современном мире для жизнеспособности проекта - всегда нужны инструменты управления зависимостями, их дистрибьюции, встроенные по соседству возможности CI/CD, расширения популярных IDE. Авторы Toif явно это понимают и всё выше перечисленное у них имеется.
#embedded #iot #esp32
👍10🤯2🙏1