Привет!

На прошлой неделе мы рассказали про то, как видим Интернет Вещей. Про то, как в 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, и показывать то, что можно сделать с ней, как связать с облаком и прочее. Спасибо за внимание :)

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


  1. BOBS13
    06.07.2015 10:54
    +5

    Если я правильно понимаю из всех обзоров, полноценной ОС не будет, и многозадачности то же не будет, домашний маленький медиа сервер на нем не развернешь?


    1. Klukonin
      06.07.2015 13:19
      -2

      Шел 2015 год, время расцвета интернета вещей и нового витка развития мультимедиа технологий. Microsoft выпускает ОС для встраиваемых систем без поддержки многозадачности…
      Ребята просто опоздали лет на 20, ничего страшного. Они недавно для себя репозитории открыли. Пройдет время и подтянутся.


    1. SgtRiggs91
      06.07.2015 14:00
      +2

      Что помешает развернуть медиа-сервер? Спрашиваю из любопытства, не холивара ради.


      1. Slipeer
        06.07.2015 16:14

        Да собственно ничего… Только его придётся написать или портировать (скорее первое) под эту платформу.


      1. BOBS13
        06.07.2015 18:07
        +1

        Нет готового решения, обычный какой-то старый не запустишь, они все запускаются через Desktop. Значит что бы его развернуть нужно как-то извратиться(если вообще получится) или самому его написать.


  1. HomoLuden
    06.07.2015 10:56

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

    Wi-Fi не проблема


    1. Klukonin
      06.07.2015 13:34
      -5

      Использовать миниатюрный WiFi роутер с Linux на борту, ограничивая пропускную способность UARTом, для того чтобы подключить «малинку» с виндой, не поддерживающей штатный WiFi модуль? О да, вы знаете толк =)


      1. HomoLuden
        06.07.2015 14:04
        +2

        Во-первых, не с Linux, а с FreeRTOS или аналогом.
        Во-вторых, не знаю как у малины, но у STM32F103, к примеру, USART на максимальной частоте 12 МБит. У девайса по ссылке максимальная частота пропускания до 3Мбит, если не ошибаюсь. Частота U(S)ART определяется частотой системной шины. Думаю у малины и, например, Beagle Bone UART будет не менее производительным.
        Видео HD, быть может и не передать, но для передачи данных сенсоров и запросов в облако и обратно вполне достаточно.
        Передергивать и эмоциями брызгать в данном случае считаю неуместным. Нужно говорить о конкретных кейсах применения.


        1. ahriman Автор
          06.07.2015 14:22

          Я был не знаком с этим — спасибо вам большое за информацию.


          1. HomoLuden
            06.07.2015 14:24

            Пожалуйста!


        1. Wedmer
          06.07.2015 14:33

          У BBB до 4 мегабит на обычных UART, 12 мегабит в режиме промышленного интерфейса (PRU-ICSS).
          RPi может и быстрее.


          1. HomoLuden
            06.07.2015 14:56

            Это ограничение со стороны операционки получается?


            1. Wedmer
              06.07.2015 15:10

              Физические. Достаточно даташит посмотреть.


        1. Klukonin
          06.07.2015 14:40

          Ну, про UART я с вами спорить не буду, теоретически так все и обстоит.
          Но так как я эти модули разбирал и реверсил — на тему операционной системы внутри готов поспорить. Там Linux.


          1. HomoLuden
            06.07.2015 14:49

            Вы конкретно про USR'овские UART <> WiFi?

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

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


            1. Klukonin
              06.07.2015 15:24

              Нет, этот конкретно не разбирал. Тот что разбирал был подешевле и с более производительным железом.


              1. HomoLuden
                06.07.2015 16:06

                Ниже исследования результат.

                Скорее всего RTOS там.


                1. Klukonin
                  06.07.2015 16:14

                  Вполне возможно.


          1. Wedmer
            06.07.2015 15:04

            linux влезает в 160 килобайт?


            1. Klukonin
              06.07.2015 15:25

              Вы удивитесь, но его в свое время даже в процессоры умудрялись вшивать.
              А это конкретный модуль не знаю на чем. Не факт что там линукс.


              1. Wedmer
                06.07.2015 15:48

                Вы выше утверждали

                Но так как я эти модули разбирал и реверсил — на тему операционной системы внутри готов поспорить. Там Linux.

                Пруфы есть?


                1. Klukonin
                  06.07.2015 16:06

                  Конечно, бро, специально для интернетных споров все собираю и логирую.


                  1. Wedmer
                    06.07.2015 16:21

                    Просто у этого чипа всего 256KiB памяти для хранения и исполнения образа прошивки. Для полноценной сетевой работы Linux места не хватает. Так что там грузится что то еще.


          1. HomoLuden
            06.07.2015 15:59

            Я не берусь утверждать какое конкретно устройство Вы реверсили и на чем конкретно сделана прошивка для упомянутой мной модели…
            Но вот есть описание 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.


            1. Klukonin
              06.07.2015 16:10

              Микроконтроллеры с вайфаем — это отдельная песня. То что я ковырял — обычный роутер с урезанной openwrt на борту, залоченный под низкие битрейты. Ну и оформленный в аналогичном форм-факторе.
              Если брать микроконтроллеры с вайфаем — есть меньше и дешевле. Но это уже другая тема.
              Я лишь говорил о том что ради того чтобы погонять винду для IoT придется распрощаться с поддержкой железа, смириться с урезанной осью без многозадачности, да еще и потратиться на модули вроде этого. И я считаю это глупостью.


              1. HomoLuden
                06.07.2015 16:43

                Если не будет возможности через как можно более тонкую прослойку пользоваться аппаратной частью и писать свои драйвера для интерфейсов, то это будет печально. Однако, и под Embedded Linux я, в свое время, не смог наладить нормальную вычитку ADIS16060, т.к. там необычный протокол SPI. Так что в плане доступности железа ситуация несильно отличается, судя по всему.

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

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

                А вот насчет многозадачности я видимо пропустил по тексту. Откуда информация что не будет многозадачности?


        1. Klukonin
          06.07.2015 14:41

          Windows 10 IoT core для STM32F103? Вы уверены?


          1. HomoLuden
            06.07.2015 14:44

            А я и не писал про stm32f103 как о платформе для W10. Привел пример принципиально возможных скоростей на UART, сомнения в которой были высказаны. Пример приведен для F103, т.к. нету данных по малине лично у меня. Предположение, что и там пропускная способность значительно выше, возможно, предполагавшихся 115200 подтверждаются вроде бы.


          1. Wedmer
            06.07.2015 14:45

            Имелось в виду, что на модуле wifi стоит проц с такой же архитектурой (Cortex-M4), что и у стмки.


            1. HomoLuden
              06.07.2015 14:54

              А упомянутой стмки даже слабее ЦП — Cortex-M3, если не путаю.
              А у RPi 2 — Cortex A7

              Однако утверждать что-то касаемо максимальной скорости UART только судя по семейству ЦП не буду. Ограничения могут быть как со стороны железа, так и со стороны загрузчика / ОС.


              1. Wedmer
                06.07.2015 15:13

                Ну в CC3200 проц всего до 80Мгц гонится, поэтому сравнимо с трешкой.


                1. HomoLuden
                  06.07.2015 15:48

                  Тьфу… я Вас неправильно прочитал.
                  Судя по описанию SDK, на указанном модуле именно Cortex-M4


                  1. Wedmer
                    06.07.2015 15:52

                    Ничего страшного)


        1. Klukonin
          06.07.2015 15:41

          Говоря о конкретных задачах, использование IOT Core становится совсем нецелесообразным. Особенно при наличии мегадешевых ESP8266.
          А гонять малину в качестве примитивного контроллера — это глупо.


          1. HomoLuden
            06.07.2015 16:05

            Так как раз маргинальное устройство… шлюз вполне укладывается. Устройство, умеющее общаться с локальной сетью сенсоров, на котором крутится веб-приложение, способное общаться с облаком и играюшее роль файрволла.


            1. Klukonin
              06.07.2015 16:13

              Файрволом обычно выступает устройство для подключения к интернету. С этим мимо.
              Для сбора данных с сенсоров есть более простые и дешевые альтернативы.


              1. HomoLuden
                06.07.2015 16:47

                А почему мимо?!
                Разьве нельзя плату с W10 использовать в качестве Router + Smart Home Gateway?
                Организовать на этом модуле веб-интерфейс, dynDNS-клиент, например. Лишняя розетка в сетевом фильтре освободится.

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


                1. Klukonin
                  06.07.2015 20:13

                  Эм… Вы вобще примерно прикидываете какая будет пакетная производительность? Не позорьтесь…


                  1. HomoLuden
                    07.07.2015 02:44

                    Я не позорюсь, а спрашиваю. Можно просто ответить без лишних междометий…


                    1. Klukonin
                      07.07.2015 07:17

                      Вы не спрашивали, вы утверждали. Я парировал и предложил думать прежде чем писать.
                      Пакетная производительность микроконтроллера… выше 1000 pps я пока не видел. Это без шифрования.
                      С шифрованием смело делите на три. Вы готовы вернуться во времена диалапа? =)


                      1. HomoLuden
                        07.07.2015 12:57

                        Разьве нельзя плату с W10 использовать в качестве Router + Smart Home Gateway?

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


                        Это вопросы.

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

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

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


                        1. Klukonin
                          07.07.2015 14:00

                          Не, если вы и правда настроены бодаться, то я могу обосновать.

                          Cмело делим на три, итого 300 ррs. 300 * 1500 = 450 Kbps.
                          Это как раз примерно старый добрый диалап со сжатием =)


                          1. HomoLuden
                            07.07.2015 14:47

                            Странный Вы человек. Вас просто спросили «а что если сделать так-то и так-то». Вместо простого ответа Вы то заявляете, что он позорится задавая вопросы специалисту (Вы же специалист), то чуть ли не ретроградом обзываетесь, то теперь и до намеков на барана дошло. :)
                            Этот тред мог закончится уже первым вашим коментарием в духе последнего, мол, у МК класса RPi производительность будет примерно столько-то pps, потому-то и потому-то, мол, для таких-то применений этого слишком мало.
                            Спасибо за очень содержательные ответы. Любопытства больше не имею. :)


                            1. Klukonin
                              08.07.2015 07:17

                              Рад был помочь =)


    1. DarkByte
      06.07.2015 18:58
      +1

      После появления на рынке esp8266 смысла покупать дорогостоящие WiFi UART мосты по-моему нет никакого.


      1. Klukonin
        06.07.2015 20:14

        Более того, смысл многих ардуиноподелок и единичных устройств «типа для умного дома» потерялся.


  1. HomoLuden
    06.07.2015 11:01

    Как собирать под другие платформы? Например, BeagleBone Black или Cubie Board.
    С WinCE, кажется, была возможность создать сборку под выбранное железо, написав некоторые низкоуровневые части.


    1. ahriman Автор
      06.07.2015 14:26

      Пока мне неизвестно. Я очень надеюсь, что это будет, и сразу же напишу счастливую новость. :)


  1. eta4ever
    06.07.2015 12:51

    Ну, то есть, по-прежнему никаких плюсов относительно привычных малиновых пингвинов, кроме того, что кому-то привычнее C# и прочая MS-инфраструктура. Зато минусов много.


    1. ahriman Автор
      06.07.2015 14:29

      Смотря какие минусы — если отсутствие той или иной поддержки, то, как я писал в первой статье, они будут постепенно закрываться. Если что-то иное — напишите, я передам группе разработки (хотя и вы это можете сделать :)) Уверяю вас — внутри происходит большое количество общения, в том числе о развитии продукта, и о вашей обратной связи.


      1. eta4ever
        06.07.2015 15:27

        Я бы помечтал о следующем:
        1) Нормальный вывод на экран, с поддержкой тачскрина из коробки. Чтобы можно было сделать именно что управляющую панель, работающую с простенькой SCADA.
        2) Клиент MS RDP, чтобы приложения по RemoteAPP пускать. Получился бы крутой тонкий клиент.
        3) Обратная совместимость с приложениями WinCE.


      1. eta4ever
        06.07.2015 15:42

        А если генеральная линия партии — сделать ардуину с вебмордой, то тогда уж портировать туда ардуинские библиотеки и сделать какую-то блочную систему построения этой самой вебморды, т.е., чтобы можно было расставлять контролы по страничке и связывать их с кодом.


  1. GeckoPelt
    06.07.2015 13:21

    А SCM на месте?


    1. ahriman Автор
      06.07.2015 14:31

      Чтобы не ответить не про то, расшифруйте, пожалуйста?


      1. GeckoPelt
        06.07.2015 14:49

        Service Control Manager. Не Source Control Management, конечно же:)
        NT-сервисы в сабжевой ОС есть?
        Прошу прощения за неоднозначность вопроса.


  1. Indemsys
    06.07.2015 22:11

    Расшифруйте пожалуйста вот это — «с поддержкой Universal Apps, но в режиме Single, и royalty-free»
    Что такое «Universal Apps»?
    Что такое «режим Single»?
    И в каком смысле royalty-free?

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


    1. Dima_Sharihin
      07.07.2015 08:56
      +1

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

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

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

      Собственно на raspberry pi 2, на мой взгляд, Windows 10 IoT Core выглядит совершенно провально. Но я надеюсь, что ситуация с производительностью улучшится и оно будет работать лучше и функциональнее, чем обычная убунта.


  1. gtament
    07.07.2015 01:04

    Минимальные системные требования для Core – 256 мегабайт ОЗУ и 2 гигабайта хранилища. Плюс архитектура x86/ARM.

    А на 386 пойдет?)


    1. Dima_Sharihin
      07.07.2015 09:08

      На 386 нормой было 8-16 мегабайт оперативной памяти, а не 256.
      И если мне не изменяет память, то сейчас все компилируется с поддержкой SSE под х86, то есть ни о какой «тройке» речи быть не может.


  1. eta4ever
    07.07.2015 14:14

    Кстати, интересно, на таком странном устройстве взлетит? А то валяется никому не нужная штука.
    www.compactpc.com.tw/ebox-3300.htm


    1. Dima_Sharihin
      08.07.2015 11:10

      Запуститься-то может и запустится, но еще с восьмерки были проблемы с видеокартами, не реализующими WDDM 2.0.
      Так что приобретение, на мой взгляд, сомнительное

      upd: 2.0 это в десятке


      1. eta4ever
        08.07.2015 11:46

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