22
Сен

Язык для virt2real

Написал Максим Крентовский в Исследования

Виртурилке, как любой другой платформе для DIY-творчества, необходимо API и системный язык, позволяющий реализовывать 80% типовых задач, не выходящих за рамки базового применения устройства. Это не касается задач, в которых нужна поддержка специализированного оборудования или максимальное быстродействие с целью обеспечить минимальную задержку реакции системы.

Во всех остальных случаях можно обойтись достаточно простой моделью, позволяющей осуществлять базовые операции над одним устройством или их группой для создания систем управления с обратной связью через аудио/видео. Предполагается, что в основе этой модели будет лежать протокол поверх HTTP (REST, JSON RPC, и т.п.), который будет использован для управления конечным оборудованием.

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

17
Май

Virt2Real и Buildroot. Собираем систему.

Написал Максим Крентовский в Деятельность

virt2real

Про проект Virt2Real (разработка платформы для удаленного управления с обратной связью по видео) много написано на их сайте, повторяться не буду, а свою историю участия в этом начинании как-нибудь потом напишу. В данной статье. Сейчас бы хотелось затронуть вопросы подготовки программного обеспечения для этой платформы, а именно — дистрибутива Линукс, собранного при помощи buildroot.
Подробнее →

24
Июл

Эрланг-кластер на ARM

Написал Максим Крентовский в Идеи

Идея, изложенная в данной заметке, не нова и не оригинальна. Когда-то давным давно мне удалось прочитать ужасную книгу по распределенным системам (ужасную в плане русского языка, читать приходилось буквально догадываясь о смысле), там эти устройства носили гордое название транспьютеров. Ну и сегодня обнаруженная заметка A Raspberry Pi, hosting…Raspberry Pi тоже дала определенный толчок.

Беда современных ARM-чипов была в том, что они были весьма дороги (если не покупать многомиллионными партиями, как делает одна фруктовая компания) и то, что внутренней памяти зачастую не хватает на полноценную ОС типа Линукса. Первую неприятность устранили коллеги из Китая (чипы AllWinner, говорят, стоят каких-то совсем смешных денег), вторую приходится решать при помощи схемотехнических решений.

Соответственно, идея состоит в следующем. На плату чуть больше размера чипа MCU с одной стороны монтируется MCU, с другой — RAM, чип PoE и собственно гнездо RJ-45, которое заводится на Ethernet-интерфейс MCU через PoE-подсистему. Соответственно, получается такой ТЭЗ (типовой элемент замены), внутреннего flash которого достаточно, чтобы разместить там BOOTP/TFTP-загрузчик, а само устройство (в количестве большем чем одну штуку) — включить в коммутатор, поддерживающий PoE. Дополнительно можно вывести два светодиода — один для индикации питания, другой для индикации передачи по сети и micro-USB-разъем для начальной инициализации и отладки. Ну и, конечно, потребуется дополнительный полноценный компьютер (может даже на базе Raspberry Pi 🙂 ) для обеспечения загрузки системы по сети.

Далее, ядро под такой элемент будет иметь минимум периферийных драйверов (только USB и Ethernet) и подключать файловую систему под NFS, при этом запуская после загрузки удобную среду для управления распределенными приложениями — инфраструктуру Эрланга (можно сразу MPI-приложение, я не настаиваю 🙂 ). В итоге должен получится простой и аккуратный кластер, на котором можно будет уже творить всякие непотребности, начиная с поиска внеземного разума и заканчивая размещением домашней страницы.