Minnowboard max windows iot

Windows 10 IoT Core и ее установка на VirtualBox

29 июля 2015 года завершилась эпоха Windows Embedded — отдельного семейства операционных систем, используемых в программно-технических комплексах. На смену ей пришла Windows 10 IoT — встраиваемая операционная система, предназначенная для управления промышленными и домашними интеллектуальными системами, то есть всего того, что принято обозначать модной фразой «интернет вещей».

Предполагается выпустить несколько редакций этой ОС, вроде бы их должно быть семь, но пока что наиболее известными являются три — IoT Industrial , Mobile Enterprise и IoT Core .

Первая редакция, IoT Industrial, имеет много общего с Windows 10 Enterprise, отличаясь от последней оптимизацией под конкретный тип устройств и операций. Редакция Mobile Enterprise с архитектурой ARM и поддержкой универсальных приложений предназначается, как видно из названия, для мобильных устройств. Самая любопытная редакция, IoT Core, служит для управления устройствами с ограниченными ресурсами вроде Raspberry Pi 2 и Intel Minnowboard MAX . Системные требования Windows 10 IoT Core более чем скромны — для работы системе хватит всего 256 Мб ОЗУ и 2 Гб физического пространства.

Windows 10 IoT Core поддерживает универсальные и написанные на C и C++ консольные приложения, протокол SSH , управление базовыми системными настройками, есть PowerShell Remoting , веб-сервер Node.js , но ни рабочего стола в привычном понимании, ни меню Пуск, давно ставшего визитной карточной операционных систем Windows в ней нет. Интерфейс Windows 10 IoT Core практически не имеет ничего общего с интерфейсом десктопных и серверных систем, это скорее панель управления с подключенными к ней устройствами.

Да, всё это интересно, но можно ли скачать и установить это чудо на обычный компьютер? В принципе можно, сборка для платы MinnowBoard Max поддерживает архитектуру x86, но какая от всего этого будет практическая выгода? IoT Core не предназначается для установки на десктопные ПК, если же вы просто хотите получить о ней общее представление, можно поставить ее на бесплатный гипервизор VirtualBox . Предположим, VirtualBox у вас уже есть, теперь нужно скачать образ Windows 10 IoT Core с официального сайта Microsoft или поискать его в сети.

Скачанный ISO -образ не является загрузочным, на самом деле это запакованный MSI -инсталлятор. Извлеките его из образа и установите как обычную программу.

Затем проследуйте в папку C:\Program Files\Microsoft IoT\FFU\MinnowBoardMax .

В ней вы найдите файл flash.ffu , представляющий собой образ прошивки. Теперь его нужно преобразовать в поддерживаемый VirtualBox файл виртуального диска VHD . Скачайте со странички forum.xda-developers.com/showthread.php?t=2066903 архив с утилитой ImgMount распакуйте его, запустите от имени администратора командную строку и выполните такого вида команды:

Первая команда перемещает в расположение образа flash.ffu , вторая запускает процедуру его преобразования и монтирования утилитой ImgMount.exe, которая в отличие от показанного здесь пути, может располагаться в любой папке, равно как и сам файл образа flash.ffu .

Если в процессе выполнения второй команды вы получите ошибку «Не удается продолжить выполнение кода, поскольку система не обнаружила MSVCP110.dll» , скачайте с сайта Microsoft и установите пакеты Visual Studio 2012-1015.

В результате на компьютере будет создан и замонтирован виртуальный диск VHD . Откройте оснастку управления дисками, кликните по диску ПКМ и выберите в меню «Отсоединить виртуальный жесткий диск».

Читайте также:  Linux parted или fdisk

Скопируйте в открывшемся окошке путь к VHD -контейнеру.

Нажмите «OK», перейдите в его расположение и переместите файл в удобную вам папку.

Почти всё готово, осталось только создать виртуальную машину.

Запускаем VirtualBox, даем машине имя, выделяем немного оперативки (хватит и 512 Мб) , в блоке «Жесткий диск» выбираем «Использовать существующий виртуальный жесткий диск» и указываем путь к файлу VHD .

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

Если вы собираетесь подключить Windows 10 IoT Core к интернету, дополнительно на вкладке «Сеть» попробуйте заменить тип подключения «NAT» на «Виртуальный адаптер хоста».

Убедитесь, что используется контролер SATA .

Теперь можно запускать машину.

Если всё было сделано правильно, вскоре вы увидите приветственное окно Windows 10 IoT Core.

Можете ознакомиться с руководством по использованию системы на платах Raspberry Pi 2 и Intel Minnowboard MAX .

Больше, собственно, здесь делать нечего, если только вы не программист и знаете, как реализовать доступ к функциям системы, вроде бы с помощью Visual Studio в ней можно разворачивать приложения UWP .

Максимальное число сопоставлений ПИН-кода MinnowBoard MinnowBoard Max Pin Mappings

Чтобы сравнить это сопоставление ПИН-кода с более новыми версиями Minnowboard, обратитесь к документации здесь. To compare this pin mapping to newer versions of the Minnowboard, please visit documentation here.

Обзор Overview

Аппаратные интерфейсы для MinnowBoard Max предоставляются через 26-контактный коннектор JP1 на доске. Hardware interfaces for the MinnowBoard Max are exposed through the 26-pin header JP1 on the board. Он поддерживает следующие функции: Functionality includes:

  • 10 раз -контакты GPIO 10x — GPIO pins
  • два последовательных порта UART 2x — Serial UARTs
  • Шина 1x -SPI 1x — SPI bus
  • шина I2C ( 1x ) 1x — I2C bus
  • ПИН-код питания 1x 5 1x — 5V power pin
  • закрепление питания 1x -3,3 в 1x — 3.3V power pin
  • два заземленных контакта 2x — Ground pins

MinnowBoard Max использует логические уровни 3,3 в на всех ПИН-кодах ввода-вывода. The MinnowBoard Max uses 3.3V logic levels on all IO pins. Кроме того, все ПИН-коды помещаются в буфер с помощью TXS0104Eов уровней, за исключением питания и ПИН-кодов заземления. In addition all the pins are buffered by TXS0104E level shifters, with the exception of power and ground pins. Эти сдвиги уровней отображаются в виде открытых выходных данных сборщика с параллельным вытягиванием 10 000Ω, а также в том случае, если для ввода-вывода задано значение входных или выходных данных. These level shifters appear as open collector outputs with a 10KΩ resistive pull-up, and the pull-up is present regardless of whether the IO is set to input or output.

«Открытие сборщика» смены уровней означает, что ПИН-коды могут выводить «0» строго, но только слабо выводит «1». The open-collector nature of the level shifters means is that the pins can output a ‘0’ strongly, but only weakly output a ‘1’. Это важно помнить при присоединении устройств, которые рисуются от контактов (например, СВЕТОИНДИКАТОР). This is important to keep in mind when attaching devices which draw current from the pins (such as an LED). Чтобы получить правильный способ взаимодействия индикатора с MinnowBoard максимальным, см. Пример мерцающего примера . See the Blinky Sample for the correct way to interface an LED to the MinnowBoard Max.

Контакты GPIO GPIO Pins

Следующие контакты GPIO доступны через API-интерфейсы: The following GPIO pins are accessible through APIs:

GPIO # GPIO# Закрепление заголовка Header Pin
0 0 21 21
1 1 23 23
2 2 25 25
3 3 14 14
4 4 16 16
5 5 18 18
6 6 20 20
7 7 22 22
8 8 24 24
9 9 26 26

Примечание. GPIO 4 и GPIO 5 используются для MinnowBoard максимального количества ПИН-кодов конфигурации начальной загрузки BIOS. Note: GPIO 4 and GPIO 5 are used by the MinnowBoard Max as bootstrap configuration pins for the BIOS. Убедитесь, что подключенные устройства не загружают GPIO в нехватка во время загрузки, так как это может препятствовать загрузке МИКРОТЕСТОВ. Make sure that attached devices do not drive these GPIO low during boot, as this could prevent the MBM from booting. После загрузки МИКРОТЕСТОВ после BIOS эти GPIO можно использовать в обычном режиме. After the MBM has booted past the BIOS, these GPIO can be used normally.

Пример GPIO GPIO Sample

Например, следующий код открывает GPIO 5 в качестве выходных данных и записывает цифровой ответ «1» на PIN-код: As an example, the following code opens GPIO 5 as an output and writes a digital ‘1‘ out on the pin:

Последовательный UART Serial UART

На МИКРОТЕСТОВ: UART1 и UART2 доступно два последовательных UART. There are two Serial UARTS available on the MBM: UART1 and UART2

UART1 содержит стандартные строки UART1 TX и UART1 RX , а также сигналы управления потоком UART1 CTS и UART1 RTS. UART1 has the standard UART1 TX and UART1 RX lines, along with flow control signals UART1 CTS and UART1 RTS.

  • ПИН-код 6 — UART1 TX Pin 6 — UART1 TX
  • Закрепление 8- UART1 RX Pin 8 — UART1 RX
  • Закрепление 10- UART1 CTS Pin 10 — UART1 CTS
  • Закрепление 12- UART1 RTS Pin 12 — UART1 RTS

UART1 не работает в сборке 10240. UART1 is not working as of build 10240. Используйте UART2 или последовательный USB-преобразователь. Please use UART2 or a USB-Serial converter.

UART2 включает только строки UART2 TX и UART2 RX . UART2 includes just the UART2 TX and UART2 RX lines.

  • ПИН-код 17 — UART2 TX Pin 17 — UART2 TX
  • ПИН-код 19 — UART2 RX Pin 19 — UART2 RX

UART2 не поддерживает управление потоком, поэтому при доступе к следующим свойствам Сериалдевице может возникнуть исключение: UART2 does not support flow control, so accessing the following properties of SerialDevice can result in an exception being thrown:

  • бреаксигналстате BreakSignalState
  • исдататерминалреаденаблед IsDataTerminalReadyEnabled
  • исрекуесттосенденаблед IsRequestToSendEnabled
  • Сериалхандшаке. None поддерживается только для подтверждения Handshake — only SerialHandshake.None is supported

В приведенном ниже примере инициализируется UART2 и выполняется запись, за которой следует чтение: The example below initializes UART2 and performs a write followed by a read:

Обратите внимание, что в файл Package. appxmanifest в проекте UWP необходимо добавить следующую возможность для выполнения кода с серийным кодом UART: Note that you must add the following capability to the Package.appxmanifest file in your UWP project to run Serial UART code:

В Visual Studio 2017 есть известная ошибка в конструкторе манифестов (визуальный редактор для файлов appxmanifest), которая влияет на возможность сериалкоммуникатион. Visual Studio 2017 has a known bug in the Manifest Designer (the visual editor for appxmanifest files) that affects the serialcommunication capability. Если appxmanifest добавляет возможность сериалкоммуникатион, то изменение appxmanifest с помощью конструктора приведет к повреждению appxmanifest (дочерний элемент XML устройства будет потерян). If your appxmanifest adds the serialcommunication capability, modifying your appxmanifest with the designer will corrupt your appxmanifest (the Device xml child will be lost). Чтобы обойти эту проблему, можно вручную изменить appxmanifest, щелкнув appxmanifest правой кнопкой мыши и выбрав пункт Просмотреть код в контекстном меню. You can work around this problem by hand editing the appxmanifest by right-clicking your appxmanifest and selecting View Code from the context menu.

Шина I2C I2C Bus

Рассмотрим шину I2C, доступную на этом устройстве. Let’s look at the I2C bus available on this device.

Обзор I2C I2C Overview

В заголовке ПИН-кода имеется один I2C5 контроллер I2C с двумя линиями SDA и SCL. There is one I2C controller I2C5 exposed on the pin header with two lines SDA and SCL. в этих строках уже имеются внутренние резисторы в 10000Ω. 10KΩ internal pull-up resistors are already present on these lines.

  • Закрепление 15- I2C5 SDA Pin 15 — I2C5 SDA
  • Закрепление 13- I2C5 SCL Pin 13 — I2C5 SCL

Пример для I2C I2C Sample

В приведенном ниже примере инициализируется I2C5 и записываются данные на устройство I2C с адресом 0x40: The example below initializes I2C5 and writes data to an I2C device with address 0x40:

Проблемы I2C I2C Issues

В MinnowBoard Max есть известная проблема с шиной I2C, которая вызывает проблемы связи с определенными устройствами I2C. The MinnowBoard Max has a known issue with the I2C bus, which causes communication problems with certain I2C devices. Как правило, устройство I2C будет подтверждать свой адрес во время запроса шины. Normally, an I2C device will acknowledge its address during a bus request. Однако при определенных условиях это подтверждение не позволяет распространить обратно на МИКРОТЕСТОВ, а в результате ЦП считает, что устройство не ответило и отменяет транзакцию шины. However, under certain conditions this acknowledge fails to propagate back through the level shifters to the MBM, and as a result the CPU thinks the device did not respond and cancels the bus transaction. Похоже, эта ошибка связана с сдвигами уровня TXS0104E на контактах ввода-вывода, что может активироваться преждевременно из-за пиков напряжения в линии. The issue seems to be related to the TXS0104E level shifters on the IO pins, which can trigger prematurely due to voltage spikes on the line. Текущим решением является вставка резистора 100 ом в серии с помощью шины I2C SCK, что позволяет подавлять пиковые пики. The current workaround is to insert a 100-ohm resistor in series with the I2C SCK line, which helps suppress spikes. Не все устройства затрагиваются, поэтому это решение требуется только в том случае, если возникают проблемы с получением ответа шины. Not all devices are affected, so this workaround is only required if you are having trouble getting a bus response. Одним из устройств, которым требуется это решение, является HTU21D. One device that is known to require this workaround is the HTU21D.

Шина SPI SPI Bus

Давайте рассмотрим шину SPI, доступную на этом устройстве. Let’s look at the SPI bus available on this device.

Общие сведения о SPI SPI Overview

В МИКРОТЕСТОВ доступен один контроллер SPI SPI0 : There is one SPI controller SPI0 available on the MBM:

  • ПИН-код 9 — SPI0 Моси Pin 9 — SPI0 MOSI
  • Закрепить 7 — SPI0 мисо Pin 7 — SPI0 MISO
  • Закрепить 11- SPI0 СКЛК Pin 11 — SPI0 SCLK
  • ПИН-код 5 — SPI0 cs0 Pin 5 — SPI0 CS0

Пример SPI SPI Sample

Ниже приведен пример выполнения записи SPI на шине SPI0 . An example on how to perform a SPI write on bus SPI0 is shown below:

Оцените статью