Microsoft — мировой лидер в области ПО и ИТ-услуг
498,36
рейтинг
6 июля 2015 в 09:26

Разработка → Windows 10 IoT — небольшой обзор новой редакции ОС для маленьких устройств

Привет!

На прошлой неделе мы рассказали про то, как видим Интернет Вещей. Про то, как в Microsoft Technology Center уже функционирует концепт умного офиса. Про то, как подключить Arduino к Raspberry Pi 2, а также про то, как с одноплатной системы можно собирать данные, отправлять и визуализировать в облаке Microsoft Azure. Прошлая неделя получилась именно такой – под знаком облака. Эта пройдёт под знаком Windows 10 – сегодня про общие моменты, в среду про AllJoyn, в пятницу – про все те интереснейшие партнёрства, которые мы заключили (Canonical, Arduino и др.) и про то, что они несут в этот мир.



Как мы уже писали, флагман нашего операционносистемостроения Windows 10, выходящий 29 июля, будет работать на достаточно компактных одноплатных системах, типа Raspberry Pi 2 или Intel Minnowboard MAX, которые могут стать основой домашних интеллектуальных систем, подключаемых к Интернету вещей. К ситуации, в которой мы можем написать приложение в Visual Studio и, собрав его под ARM либо x86, развернуть не только на десктопе, но и на плате, Microsoft шёл примерно с 2011 года (обязательно посмотрите про эту историю в очень интересном докладе Дона Бокса на WinHEC 2015), когда были предприняты первые шаги к объединению платформ. Теперь будет единая система, которая будет называться Windows 10, и иметь редакцию, по которой и будет определяться ее принадлежность. По редакциям окончательное понимание придёт позже, но уже сейчас известно, что их будет около 7. К устройствам прямое отношение имеют три:

  • IoT Industrial (Intel-only, похожа на Windows 10 Enterprise, с учётом подстройки под конкретный сценарий, например, банкомат или торговый автомат);
  • Mobile Enterprise (ARM, с поддержкой Universal Apps, оптимизированная под мобильные устройства и имеющая поддержку различных функций безопасности);
  • IoT Core (версия, оптимизированная под устройства с ограниченными ресурсами, с поддержкой Universal Apps, но в режиме Single, и royalty-free).


Пока Mobile Enterprise и Industrial находятся в недоступном нашем рукам режиме, расскажем про IoT Core. IoT Core – это версия, оптимизированная под устройства, у которых на борту есть достаточно ограниченные ресурсы. Минимальные системные требования для Core – 256 мегабайт ОЗУ и 2 гигабайта хранилища. Плюс архитектура x86/ARM. На июль 2015 года доступна в гарантированно-рабочем виде для двух плат – Raspberry Pi 2 (ARM) и Intel Minnowboard MAX (x86). Процесс установки практически идентичен, за исключением подготовительных действий, которые на Minnowboard заключаются в манипуляциях в UEFI.



Разрабатывать на Windows 10 IoT Core можно уже сейчас, при этом разработчику доступны все приложения платформы Windows, а разработка таких приложений ведется тем же, как и любых других приложений и инструментов из Visual Studio, с использованием технологий C#/XAML, HTML/JS и др, что означает возможность разработки универсального приложения, которое будет с равным успехом (конечно, учитывая наличие или отсутствие привязки к какой-то специфичной функциональности) работать на PC, телефонах, Xbox или платах.
Резюмируя по разработке:
  • IoT Core поддерживает Universal Platform API, включая Universal Drivers, и это является на данный момент основным методом разработки (C#/C++/JavaScript/HTML/XAML/DirectX). При этом поддерживаются консольные приложения (C/C++);
  • Тем не менее, писать Native Win32 можно, но никакого вывода увидеть не получится, кроме как разве что в удалённой сессии;
  • Windows desktop нет, командной строки нет. Зато есть Powershell Remoting и SSH;
  • IoT Core содержит расширения API:
    1. GPIO, I2C, SPI, ADC, PWM, UART, AllJoyn
    2. Управление системными настройками (язык и др.)
    3. API Set
  • Есть веб-сервер Node.js с используемым внутри Microsoft Chakra.


Однако необходимо учитывать отсутствие драйверов и поддержки для некоторых модулей (например, Wi-Fi), что блокирует часть сценариев. Но это всё будет – проект молодой, и разработчики всё сделают.

Что уже делают на Windows 10 IoT Core? Например, хабы для домашних устройств. При условии того, что правильным образом будет использована встроенная функциональность AllJoyn, можно управлять окружающими устройствами. То есть быть управляющей панелью, собирая данные с сенсоров и других устройств.
Таким образом, теперь у разработчиков есть выбор – можно продолжать использовать всё то, что уже разработано на OSS, и подключать при необходимости облако для обработки данных, либо взять знакомые инструменты (Visual Studio, .NET) и создать универсальное приложение. Или, как уже пробуют, запустить Cocos2D :)

Как начать использовать? (краткий совет)

Достаточно просто. Зайдите на официальный сайт, выберите страницу с вашим устройством и идите по инструкции. С момента запуска программы инструкция претерпела не одну редакцию, и теперь всевозможные проблемы и нюансы уже описаны. Единственный момент – количество оборудования, которое нужно для запуска и тестирования. Еще из опыта использования – не все мыши корректно определяются. Самым надёжным способом является использование проводной мыши.

Я рекомендую хотя бы попробовать — для меня опыт подключения в виде удалённого отладчика платы в Visual Studio был достаточно интересен. Конечно, есть всяческие инструменты (один из моих любимых, VisualMicro, в их числе), которые расширяют функциональность VS, однако всегда приятно, когда что-то нужное идёт сразу в комплекте. Мы ещё будем писать про Windows 10 IoT, и показывать то, что можно сделать с ней, как связать с облаком и прочее. Спасибо за внимание :)
Автор: @ahriman
Microsoft
рейтинг 498,36
Microsoft — мировой лидер в области ПО и ИТ-услуг

Комментарии (62)

  • +5
    Если я правильно понимаю из всех обзоров, полноценной ОС не будет, и многозадачности то же не будет, домашний маленький медиа сервер на нем не развернешь?
    • –2
      Шел 2015 год, время расцвета интернета вещей и нового витка развития мультимедиа технологий. Microsoft выпускает ОС для встраиваемых систем без поддержки многозадачности…
      Ребята просто опоздали лет на 20, ничего страшного. Они недавно для себя репозитории открыли. Пройдет время и подтянутся.
    • +2
      Что помешает развернуть медиа-сервер? Спрашиваю из любопытства, не холивара ради.
      • 0
        Да собственно ничего… Только его придётся написать или портировать (скорее первое) под эту платформу.
      • +1
        Нет готового решения, обычный какой-то старый не запустишь, они все запускаются через Desktop. Значит что бы его развернуть нужно как-то извратиться(если вообще получится) или самому его написать.
  • 0
    Однако необходимо учитывать отсутствие драйверов и поддержки для некоторых модулей (например, Wi-Fi), что блокирует часть сценариев. Но это всё будет – проект молодой, и разработчики всё сделают.

    Wi-Fi не проблема
    • –5
      Использовать миниатюрный WiFi роутер с Linux на борту, ограничивая пропускную способность UARTом, для того чтобы подключить «малинку» с виндой, не поддерживающей штатный WiFi модуль? О да, вы знаете толк =)
      • +2
        Во-первых, не с Linux, а с FreeRTOS или аналогом.
        Во-вторых, не знаю как у малины, но у STM32F103, к примеру, USART на максимальной частоте 12 МБит. У девайса по ссылке максимальная частота пропускания до 3Мбит, если не ошибаюсь. Частота U(S)ART определяется частотой системной шины. Думаю у малины и, например, Beagle Bone UART будет не менее производительным.
        Видео HD, быть может и не передать, но для передачи данных сенсоров и запросов в облако и обратно вполне достаточно.
        Передергивать и эмоциями брызгать в данном случае считаю неуместным. Нужно говорить о конкретных кейсах применения.
        • 0
          Я был не знаком с этим — спасибо вам большое за информацию.
          • 0
            Пожалуйста!
        • 0
          У BBB до 4 мегабит на обычных UART, 12 мегабит в режиме промышленного интерфейса (PRU-ICSS).
          RPi может и быстрее.
          • 0
            Это ограничение со стороны операционки получается?
            • 0
              Физические. Достаточно даташит посмотреть.
        • 0
          Ну, про UART я с вами спорить не буду, теоретически так все и обстоит.
          Но так как я эти модули разбирал и реверсил — на тему операционной системы внутри готов поспорить. Там Linux.
          • 0
            Вы конкретно про USR'овские UART <> WiFi?

            Я сейчас пользуюсь USR-wifi232-S. Помню в прошлом мне для этого или похожего устройства предлагали SDK с какой-то RTOS. Возможно перепутал. В любом случае, не понимаю показавшегося пренебрежительного тона в отношении описанного подхода.

            Если речь о избыточности или дороговизне, то есть модули и почти вдвое дешевле, но с меньшими скоростями и функционалом.
            • 0
              Нет, этот конкретно не разбирал. Тот что разбирал был подешевле и с более производительным железом.
              • 0
                Ниже исследования результат.

                Скорее всего RTOS там.
                • 0
                  Вполне возможно.
          • 0
            linux влезает в 160 килобайт?
            • 0
              Вы удивитесь, но его в свое время даже в процессоры умудрялись вшивать.
              А это конкретный модуль не знаю на чем. Не факт что там линукс.
              • 0
                Вы выше утверждали
                Но так как я эти модули разбирал и реверсил — на тему операционной системы внутри готов поспорить. Там Linux.

                Пруфы есть?
                • 0
                  Конечно, бро, специально для интернетных споров все собираю и логирую.
                  • 0
                    Просто у этого чипа всего 256KiB памяти для хранения и исполнения образа прошивки. Для полноценной сетевой работы Linux места не хватает. Так что там грузится что то еще.
          • 0
            Я не берусь утверждать какое конкретно устройство Вы реверсили и на чем конкретно сделана прошивка для упомянутой мной модели…
            Но вот есть описание SDK, которое, возможно, имеется в виду на странице описания к модулю.

            Если погуглить по «pdf SimpleLink Wi-Fi CC3200 Software Development Kit (SDK)», то можно получить СС3200 SimpleLink Programmer Guide

            В этом документе можно встретить диаграмму Figure 2. CC3200 Software Components
            На ней указаны FreeRTOS и TI RTOS.

            Мне кажется, что для таких низкопотребляющих решений Linux плохо подходит. Поправьте, если ошибаюсь.

            PS: заметьте, TCP/UDP и DNS реализованы на FreeRTOS. Не вижу надобности в Linux.
            • 0
              Микроконтроллеры с вайфаем — это отдельная песня. То что я ковырял — обычный роутер с урезанной openwrt на борту, залоченный под низкие битрейты. Ну и оформленный в аналогичном форм-факторе.
              Если брать микроконтроллеры с вайфаем — есть меньше и дешевле. Но это уже другая тема.
              Я лишь говорил о том что ради того чтобы погонять винду для IoT придется распрощаться с поддержкой железа, смириться с урезанной осью без многозадачности, да еще и потратиться на модули вроде этого. И я считаю это глупостью.
              • 0
                Если не будет возможности через как можно более тонкую прослойку пользоваться аппаратной частью и писать свои драйвера для интерфейсов, то это будет печально. Однако, и под Embedded Linux я, в свое время, не смог наладить нормальную вычитку ADIS16060, т.к. там необычный протокол SPI. Так что в плане доступности железа ситуация несильно отличается, судя по всему.

                Напишут BSP для конкретной платформы — будут где-нибудь лежать файл-устройства — читай/пиши байтами. Сойдет для сельской местности.

                Если аппаратных интерфейсов не будет, то, согласен, бессмысленный продукт.

                А вот насчет многозадачности я видимо пропустил по тексту. Откуда информация что не будет многозадачности?
        • 0
          Windows 10 IoT core для STM32F103? Вы уверены?
          • 0
            А я и не писал про stm32f103 как о платформе для W10. Привел пример принципиально возможных скоростей на UART, сомнения в которой были высказаны. Пример приведен для F103, т.к. нету данных по малине лично у меня. Предположение, что и там пропускная способность значительно выше, возможно, предполагавшихся 115200 подтверждаются вроде бы.
          • 0
            Имелось в виду, что на модуле wifi стоит проц с такой же архитектурой (Cortex-M4), что и у стмки.
            • 0
              А упомянутой стмки даже слабее ЦП — Cortex-M3, если не путаю.
              А у RPi 2 — Cortex A7

              Однако утверждать что-то касаемо максимальной скорости UART только судя по семейству ЦП не буду. Ограничения могут быть как со стороны железа, так и со стороны загрузчика / ОС.
              • 0
                Ну в CC3200 проц всего до 80Мгц гонится, поэтому сравнимо с трешкой.
                • 0
                  Тьфу… я Вас неправильно прочитал.
                  Судя по описанию SDK, на указанном модуле именно Cortex-M4
                  • 0
                    Ничего страшного)
        • 0
          Говоря о конкретных задачах, использование IOT Core становится совсем нецелесообразным. Особенно при наличии мегадешевых ESP8266.
          А гонять малину в качестве примитивного контроллера — это глупо.
          • 0
            Так как раз маргинальное устройство… шлюз вполне укладывается. Устройство, умеющее общаться с локальной сетью сенсоров, на котором крутится веб-приложение, способное общаться с облаком и играюшее роль файрволла.
            • 0
              Файрволом обычно выступает устройство для подключения к интернету. С этим мимо.
              Для сбора данных с сенсоров есть более простые и дешевые альтернативы.
              • 0
                А почему мимо?!
                Разьве нельзя плату с W10 использовать в качестве Router + Smart Home Gateway?
                Организовать на этом модуле веб-интерфейс, dynDNS-клиент, например. Лишняя розетка в сетевом фильтре освободится.

                Думаете RPi 2 будет слабоват, чтоб сразу обе функции выполнять?
                • 0
                  Эм… Вы вобще примерно прикидываете какая будет пакетная производительность? Не позорьтесь…
                  • 0
                    Я не позорюсь, а спрашиваю. Можно просто ответить без лишних междометий…
                    • 0
                      Вы не спрашивали, вы утверждали. Я парировал и предложил думать прежде чем писать.
                      Пакетная производительность микроконтроллера… выше 1000 pps я пока не видел. Это без шифрования.
                      С шифрованием смело делите на три. Вы готовы вернуться во времена диалапа? =)
                      • 0
                        Разьве нельзя плату с W10 использовать в качестве Router + Smart Home Gateway?

                        Думаете RPi 2 будет слабоват, чтоб сразу обе функции выполнять?


                        Это вопросы.

                        Организовать на этом модуле веб-интерфейс, dynDNS-клиент, например. Лишняя розетка в сетевом фильтре освободится.

                        Это предполагавшиеся выгоды такого подхода.

                        Так-то и Ваш вопрос можно квалифицировать как утверждение, причем необоснованное.
                        Вы готовы вернуться во времена диалапа? =)
                        • 0
                          Не, если вы и правда настроены бодаться, то я могу обосновать.

                          Cмело делим на три, итого 300 ррs. 300 * 1500 = 450 Kbps.
                          Это как раз примерно старый добрый диалап со сжатием =)
                          • 0
                            Странный Вы человек. Вас просто спросили «а что если сделать так-то и так-то». Вместо простого ответа Вы то заявляете, что он позорится задавая вопросы специалисту (Вы же специалист), то чуть ли не ретроградом обзываетесь, то теперь и до намеков на барана дошло. :)
                            Этот тред мог закончится уже первым вашим коментарием в духе последнего, мол, у МК класса RPi производительность будет примерно столько-то pps, потому-то и потому-то, мол, для таких-то применений этого слишком мало.
                            Спасибо за очень содержательные ответы. Любопытства больше не имею. :)
                            • 0
                              Рад был помочь =)
    • +1
      После появления на рынке esp8266 смысла покупать дорогостоящие WiFi UART мосты по-моему нет никакого.
      • 0
        Более того, смысл многих ардуиноподелок и единичных устройств «типа для умного дома» потерялся.
  • 0
    Как собирать под другие платформы? Например, BeagleBone Black или Cubie Board.
    С WinCE, кажется, была возможность создать сборку под выбранное железо, написав некоторые низкоуровневые части.
    • 0
      Пока мне неизвестно. Я очень надеюсь, что это будет, и сразу же напишу счастливую новость. :)
  • 0
    Ну, то есть, по-прежнему никаких плюсов относительно привычных малиновых пингвинов, кроме того, что кому-то привычнее C# и прочая MS-инфраструктура. Зато минусов много.
    • 0
      Смотря какие минусы — если отсутствие той или иной поддержки, то, как я писал в первой статье, они будут постепенно закрываться. Если что-то иное — напишите, я передам группе разработки (хотя и вы это можете сделать :)) Уверяю вас — внутри происходит большое количество общения, в том числе о развитии продукта, и о вашей обратной связи.
      • 0
        Я бы помечтал о следующем:
        1) Нормальный вывод на экран, с поддержкой тачскрина из коробки. Чтобы можно было сделать именно что управляющую панель, работающую с простенькой SCADA.
        2) Клиент MS RDP, чтобы приложения по RemoteAPP пускать. Получился бы крутой тонкий клиент.
        3) Обратная совместимость с приложениями WinCE.
      • 0
        А если генеральная линия партии — сделать ардуину с вебмордой, то тогда уж портировать туда ардуинские библиотеки и сделать какую-то блочную систему построения этой самой вебморды, т.е., чтобы можно было расставлять контролы по страничке и связывать их с кодом.
  • 0
    А SCM на месте?
    • 0
      Чтобы не ответить не про то, расшифруйте, пожалуйста?
      • 0
        Service Control Manager. Не Source Control Management, конечно же:)
        NT-сервисы в сабжевой ОС есть?
        Прошу прощения за неоднозначность вопроса.
  • 0
    Расшифруйте пожалуйста вот это — «с поддержкой Universal Apps, но в режиме Single, и royalty-free»
    Что такое «Universal Apps»?
    Что такое «режим Single»?
    И в каком смысле royalty-free?

    И почему для серьезных устройств навязывают Raspberry Pi 2.

    • +1
      >Universal Apps
      Современная модель приложений для Windows 10, которая предполагает работу с новым API, а не Win32 API

      >режим Single
      Только одно приложение может быть запущено для отображения на дисплее(или вообще, тут не знаю). Ни рабочих столов, ничего от десктопной винды там не будет.

      > в каком смысле royalty-free
      Скорее всего, MS не будет брать мзду за этот огрызок винды, если вы ее запихнете в коммерческое устройство

      Собственно на raspberry pi 2, на мой взгляд, Windows 10 IoT Core выглядит совершенно провально. Но я надеюсь, что ситуация с производительностью улучшится и оно будет работать лучше и функциональнее, чем обычная убунта.
  • 0
    Минимальные системные требования для Core – 256 мегабайт ОЗУ и 2 гигабайта хранилища. Плюс архитектура x86/ARM.

    А на 386 пойдет?)
    • 0
      На 386 нормой было 8-16 мегабайт оперативной памяти, а не 256.
      И если мне не изменяет память, то сейчас все компилируется с поддержкой SSE под х86, то есть ни о какой «тройке» речи быть не может.
  • 0
    Кстати, интересно, на таком странном устройстве взлетит? А то валяется никому не нужная штука.
    www.compactpc.com.tw/ebox-3300.htm
    • 0
      Запуститься-то может и запустится, но еще с восьмерки были проблемы с видеокартами, не реализующими WDDM 2.0.
      Так что приобретение, на мой взгляд, сомнительное

      upd: 2.0 это в десятке
      • 0
        Так в текущем состоянии все равно нормального вывода на экран нет.
        А так, просто ищу, куда применить коробочку. Она свое уже десять раз отработала (использовалась как RDP клиент на Thinstation).

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка