Microsoft IoT стек и не только... Часть 2. Windows 10 IoT Core

В прошлой статье я рассказывал о платах прототипирования без ОС, в этой статье хотел бы вкратце рассказать о платах прототипирования с операционной системой.

Совсем недавно Microsoft анонсировал выход специальной редакции операционной системы для встраиваемых систем под названием Windows IoT. Эта линейка является продолжением линейки Windows Embedded, с возможностью разворачивания ее на x86 и ARM процессорах.

На сейчас имеем следующие редакции этой ОС:

Windows 10 IoT for mobile devices еще не вышла, потому рассказать о ней пока нечего. Windows 10 IoT for industry devices — это фактически обычная Windows 10 с возможностью дебрендинга, запуска приложений в режиме «киоск». Тут особо тоже рассказать нечего, пилим Win32 службы, драйвера и прочее используя обычный .Net Framework или нативный код.

Особый интерес представляет Windows 10 IoT Core. Это новая редакция Windows, которой ранее не было. В ней нету привычного пользовательского интерфейса Windows, но есть вся необходимая инфраструктура для запуска UWP приложений.

UWP (Universal Windows Platform) — это новый подход для создания устройство независимых приложений, работающих под операционной системой Windows 10. Это логическое продолжение Modern UI или WinRT подхода с полным абстрагированием от типа устройства, на котором запускается приложение. Иными словами, создавая UWP приложение в Visual Studio, мы теперь не указываем платформу, под которую ведем разработку.

Справедливости ради стоит сказать, что несмотря на то, что Windows 10 имеет одинаковое ядро на всех платформах, каждая из них содержит набор уникальных API. Их не так много, и в случае необходимости, с помощью директив компилятору, можно изолировать код для разных платформ.

Возвращаясь к Windows 10 IoT Core, ее удобно использовать в следующих случаях:
• Вы создаете решение под ОС Windows 10 с унифицированным пользовательским интерфейсом для разных устройств (при этом в списке этих устройств — встраиваемые устройства)
• Вы создаете встраиваемую систему, со своим пользовательским интерфейсом с выводом на монитор. При этом обладаете знаниями XAML\C#.
• Вам необходимо агрегировать данные со множества датчиков, выполнять предварительный анализ и по защищенному каналу отправлять куда-то в облако. И опять-таки, вы обладаете знаниями C#\.Net. Желательно при этом уметь писать драйвера под Windows. В этом сценарии так же можно использовать Intel IoT Gateway.

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

Стоит так же учитывать, что Windows IoT Core не RealTime OS, что накладывает ряд ограничений на ее использование.

Что касается поддержки популярных протоколов (SPI, UART, I2C) — тут все в порядке.

Среди популярных плат прототипирования, которые поддерживают Windows IoT Core, на первое место я бы поставил Raspberry PI 2 и Raspberry PI 3

Список поддерживаемых плат можно посмотреть тут.

А вообще, минимальные требования к оборудованию для Windows 10 IoT Core следующие:
• 400 MHz or faster x86, x64 processor or ARM SoC
• 256 MB available to the OS for devices without display support
• 512 MB available to the OS for devices with display support, depending on resolution
• 2 GB Storage

Исходя из этого, я искренне надеюсь на портирование этой ОС на устройства типа Raspberry PI Zero

Таким образом ценовой сегмент плат для Windows IoT Core упадет до $5. Пока же RPI Zero можно использовать под Linux.

Есть проблема плат прототипирования Raspberry, Galilleo, Edisson, DragonBoard и подобных, которая заключается в сложности приобретения чипов на открытых рынках. Производители заинтересованы в продаже таких чипов большими сериями и нужно с ними отдельно договариваться о приобретении. Т.е. создание собственной платы на базе чипов из вышеперечисленных плат прототипирования является не только технической задачей, но и бизнесово-логистической.

Ну и резюмируя историю про Windows IoT Core хочу в кратце описать, чем является и не является Windows IoT Core

• Windows IoT Core это не та операционная система, которая запускается на ПК или телефоне
• Windows IoT Core не может запускать любые приложения, написанные под Windows PC (имею ввиду Win32\WinRT)
• Windows IoT Core требует гораздо меньше ресурсов для запуска нежели Windows Для ПК
• Windows IoT Core содержит набор драйверов для работы с GPIO\SPI\UART\I2C
• Windows IoT Core позволяет разрабатывать приложения с пользовательским интерфейсом и без него (службы) на языках программирования C#\C++\Python\VB.NET\JS\Node.js\Arduino Wiring

Примеры проектов под Windows IoT Core можно посмотреть тут.

В дальнейшем мы поговорим об облачном бэкенде для IoT и примерах использования его совместно с платами прототипирования.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Исходя из этого, я искренне надеюсь на портирование этой ОС на устройства типа Raspberry PI Zero. Таким образом ценовой сегмент плат для Windows IoT Core упадет до $5.
Где их по 5$ продают? Все что я видел — перепродажа плат, которые шли с журналом. Ну и производственный вопрос — сколько их надо произвести чтобы себестоимость (хотя бы себестоимость) была 5$? И кто этим производством в таких количествах будет заниматься?
Как по мне, выпуск этих плат — пиар-ход для привлечения внимания.
Проблема заключается в том, что эта ОС еще достаточно молодая и под нее нету множества драйверов под разную периферию, посему драйвера приходится писать самому. Список поддерживаемых модулей можно посмотреть тут
Это печально. А как планируете решать проблему с драйверами? Или их написание полностью ложится на плечи пользователей?

Где дешевле брать Arduino или Raspberry?

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

Подписаться на комментарии