Статьи

JavaScript и встроенные системы: хорошо ли они подходят?

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

Возможности встроенной системы

Мощность обработки встроенного процессора обычно зависит от задач, которые они должны выполнять. Процессор может варьироваться от простых 8- или 16-разрядных процессоров (семейства, такие как PIC, AVR, MSP и H8) до более мощных 32-разрядных систем (например, ARM Cortex или SuperH). Ядра ARM становятся все более популярными из-за снижения цен, а простые процессоры в основном интересны для продуктов большого объема. Их тактовые частоты обычно не очень высоки — где-то между 8 и 25 МГц довольно часто, хотя 32-битные системы довольно часто работают на более высоких скоростях. Конечно, есть некоторые, использующие даже более мощные процессоры, такие как ARM7 / 9 или MIPS на частоте + 500 МГц.

Список встроенных операционных систем длинный, но довольно часто встроенные системы не используют ОС. Простого «планировщика задач» обычно достаточно, потому что их задачи относительно просты, и им не нужна настоящая ОС со всеми ее накладными расходами.

Сегодня возникает вопрос: что мы можем сделать с JavaScript на этих встроенных системах?

Несколько вариантов с поддержкой JavaScript

Есть несколько проектов, которые направлены на программирование встроенных систем с использованием JavaScript. Мы все любители JavaScript здесь, и мы можем видеть некоторые преимущества, конечно. Все эти системы реализуют интерпретатор JavaScript и предоставляют API для аппаратных функций.

Первая система, которую я хочу упомянуть, — это Tessel . Он состоит из базовой платы, которая может быть дополнена аппаратными модулями, которые можно купить через веб-сайт. Базовая доска хорошо оборудована; у него есть модуль WiFi и много доступной памяти. Также очень интересны модули расширения — камера, блютуз LE, GPRS, micro SD и довольно много датчиков. Единственное, к сожалению, является то, что большинство из них на складе или предварительный заказ. Не позволяйте этому испортить удовольствие для вас. Их документация выглядит очень хорошо, и есть много примеров кода на выбор. Еще одним плюсом является то, что управление пакетами осуществляется с помощью npm.

Тогда есть Совет Эспруино . Как и Tessel, он оснащен процессором CortexM3, который обеспечит вам отличную производительность. Основное отличие этого проекта в том, что нет доступных плат расширения. Тем не менее, вы можете подключить вещи к системе, подключив электронику. Это может звучать как отрицательный момент, но это не обязательно. Есть довольно много библиотек, доступных для конкретных микросхем. Они в основном для датчиков и дисплеев, хотя. Память может быть проблемой в этой системе, потому что вам придется использовать встроенную память процессора.

Является ли JavaScript правильным выбором?

Я чувствую необходимость задать этот вопрос — это хороший выбор для запуска JavaScript во встроенной системе? Если вы любитель, или хотите экспериментировать с технологиями, а JavaScript — ваша вещь, я бы сказал, пойти на это. Оба проекта имеют потенциал и возможности для создания интересных приложений. Однако, если вы ищете профессиональное решение, я бы сказал: НЕТ (действительно, заглавными буквами). Встроенная система должна быть надежной и предсказуемой. Невозможно гарантировать правильное время и время отклика с помощью кода, который выполняется на интерпретаторе. Управление памятью — это еще одна вещь, которая может быть весьма критичной в системе с небольшим объемом памяти.

JavaScript и веб-интерфейс

JavaScript — отличный способ предоставить встроенному устройству веб-интерфейс. JavaScript может использовать возможности веб-браузера для создания опыта, который само устройство никогда не сможет создать. Чтобы иметь возможность обслуживать что-либо, должны быть выполнены как минимум два условия:

  1. Система должна иметь какое-то сетевое соединение.
  2. Система должна иметь возможность принимать и отвечать на запросы HTTP через это сетевое соединение. Разумеется, HTTP-запрос может быть передан другой системой.

У большинства встроенных процессоров есть член семейства, в который встроен контроллер Ethernet или интерфейс к внешнему. В большинстве встроенных операционных систем TCP / IP доступен в виде библиотеки. В других случаях легкий стек TCP / IP является хорошим вариантом, который может быть легко интегрирован. Вклады включают пример HTTP-сервера. Также может быть интересно посмотреть, доступны ли WebSockets или могут быть реализованы на платформе.

Взаимодействие между системой и браузером лучше всего выполнять с помощью вызовов Ajax. Они относительно просты, и ответ от сервера также может быть простым. Это уменьшает объем работы, которую должно выполнять встроенное устройство. Все, что он должен сделать, — это проанализировать запрошенный URL-адрес с параметрами, установить значение в его конфигурации или вернуть запрошенные значения.

Мы можем реализовать это, используя одну из многих популярных библиотек JavaScript, таких как jQuery, AngularJS и т. Д. Просто создайте базовые страницы и дайте библиотеке выполнить обработку запроса, чтобы заполнить значение и обработать формы. Если есть еще что показать, то более структурированный подход, вероятно, будет создавать приложение, которое использует подход MVC. Angular будет моим выбором для этого.

Другие соображения

Безопасность — это проблема. Большинство встроенных систем не имеют большого количества библиотек и возможностей для запуска SSL / TLS, поэтому важный вопрос должен быть приемлемым. Далее вы, вероятно, захотите сделать аутентификацию. Рави Киран написал здесь на SitePoint отличную статью о внедрении аутентификации в AngularJS , которую я рекомендую, если она вам понадобится.

Если возможно, вы также захотите обслуживать приложение из встроенной системы. Если вы этого не сделаете, у вас возникнут проблемы с политикой того же происхождения . Если в системе доступно только ограниченное пространство или веб-приложение велико, вы можете использовать для него какую-то сеть доставки контента. Размещайте в системе только исходный HTML-файл и извлекайте JavaScript, CSS и изображения из CDN. Это также позволяет вам позже легче обновлять ваше веб-приложение.

Вывод

Вы определенно можете запустить свою встроенную систему на JavaScript. Аппаратное обеспечение проектов, о которых я говорил, выглядит очень многообещающе. Есть много возможностей с этим. Что вы думаете о встроенных системах и JavaScript?