jordanrh1 / imx-iotcore

Windows 10 IoT Core BSP for NXP i.MX Processors

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Windows 10 IoT Core for NXP i.MX Processors

Important! Please read this section first.

This code is provided as a public preview, it is still under development and notwithstanding the license attached to this code, should not be used in any commercial application at this time. For any questions, please post to the NXP community.

This code is available under the MIT license except where stated otherwise such as the imxnetmini driver and OpteeClientLib.

Board List

SoC Type Board Vendor Board Name Board Package Name
i.MX 6Quad SolidRun HummingBoard Edge HummingBoardEdge_iMX6Q_2GB
i.MX 6Quad NXP i.MX 6Quad SABRE Sabre_iMX6Q_1GB
i.MX 6QuadPlus NXP i.MX 6QuadPlus SABRE Sabre_iMX6QP_1GB
i.MX 6DualLite SolidRun HummingBoard Edge HummingBoardEdge_iMX6DL_1GB
i.MX 6Solo SolidRun HummingBoard Edge HummingBoardEdge_iMX6S_512MB
i.MX 6SoloX UDOO Neo Full UdooNeo_iMX6SX_1GB
i.MX 7Dual CompuLab IoT Gateway, CL-SOM-iMX7+SBC-iMX7 ClSomImx7_iMX7D_1GB
i.MX 7Dual NXP i.MX 7Dual SABRE Sabre_iMX7D_1GB

A table of the currently enabled features for each board can be found here. For hardware issues, please contact the hardware vendor.

Building the BSP

Cloning the Repository

This repository uses submodules and should be cloned with git clone --recurse-submodules

Required Tools

The following tools are required to build the driver packages and IoT Core FFU: Visual Studio 2017, Windows Kits (ADK/SDK/WDK), and the IoT Core OS Packages.

Visual Studio 2017

  • Make sure that you install Visual Studio 2017 before the WDK so that the WDK can install a required plugin.
  • Download from https://www.visualstudio.com.
  • During install select Desktop development with C++.
  • During install select the following in the Individual components tab. If these options are not available try updating VS2017 to the latest release:
    • VC++ 2017 version 15.9 v14.16 Libs for Spectre (ARM)
    • VC++ 2017 version 15.9 v14.16 Libs for Spectre (ARM64)
    • VC++ 2017 version 15.9 v14.16 Libs for Spectre (X86 and x64)
    • Visual C++ compilers and libraries for ARM
    • Visual C++ compilers and libraries for ARM64

Windows Kits from Windows 10, version 1809

  • IMPORTANT: Make sure that any previous versions of the ADK and WDK have been uninstalled!
  • Install ADK 1809
  • Install WDK 1809
    • Make sure that you allow the Visual Studio Extension to install after the WDK install completes.
  • If the WDK installer says it could not find the correct SDK version, install SDK 1809

IoT Core OS Packages

  • Visit the Windows IoT Core Downloads page and download "Windows 10 IoT Core Packages – Windows 10 IoT Core, version 1809 (LTSC)".
  • Open the iso and install Windows_10_IoT_Core_ARM_Packages.msi

One-Time Environment Setup

Test certificates must be installed to generate driver packages on a development machine.

  1. Open an Administrator Command Prompt.
  2. Navigate to your newly cloned repo and into the folder imx-iotcore\build\tools.
  3. Launch StartBuildEnv.bat.
  4. Run SetupCertificate.bat to install the test certificates.
  5. Make sure that submodules have been cloned. If you cloned with --recurse-submodules then this step won't output anything.
    git submodule init
    git submodule update
    

FFU Generation

  1. Launch Visual Studio 2017 as Administrator.
  2. Open the solution iMXPlatform.sln (imx-iotcore\build\solution\iMXPlatform).
  3. Change the build type from Debug to Release.
  4. To build press Ctrl-Shift-B or choose Build -> Build Solution from menu. This will compile all driver packages then generate the FFU.
  5. Depending on the speed of the build machine FFU generation may take around 10-20 minutes.
  6. After a successful build the new FFU will be located in imx-iotcore\build\solution\iMXPlatform\Build\FFU\HummingBoardEdge_iMX6Q_2GB\.
  7. The FFU contains firmware components for the HummingBoard Edge with the Quad Core SOM. This firmware is automatically applied to the SD Card during the FFU imaging process.

Building the FFU for other boards

In order to build an FFU for another board you'll need to modify GenerateFFU.bat in the Build Scripts folder of the Solution Explorer. Comment out the default HummingBoardEdge_iMX6Q_2GB build with REM and uncomment any other boards you want to build.

REM cd /d %BATCH_HOME%
REM echo "Building HummingBoardEdge_iMX6Q_2GB FFU"
REM call BuildImage HummingBoardEdge_iMX6Q_2GB HummingBoardEdge_iMX6Q_2GB_TestOEMInput.xml

cd /d %BATCH_HOME%
echo "Building Sabre_iMX6Q_1GB FFU"
call BuildImage Sabre_iMX6Q_1GB Sabre_iMX6Q_1GB_TestOEMInput.xml

Deploy the FFU

Installing to an eMMC

Adding a New Board

Adding a New Driver

Building the FFU with the IoT ADK AddonKit

  1. Build the GenerateBSP project to create a BSP folder in the root of the repository.
  2. Setup the IoT ADK AddonKit (https://github.com/ms-iot/iot-adk-addonkit) following the instructions from the IoT Core Manufacturing Guide (https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/iot-core-manufacturing-guide)
  3. Copy the BSP\HummingBoard folder to iot-adk-addonkit\Workspace\Source-arm\BSP\
  • Open an IoT ADK AddonKit environment with iot-adk-addonkit\IoTCoreShell-arm.cmd
  • Run set SIGNFILES=NONE
    • This is to stop the ADK AddonKit from resigning the HAL Extensions with an unbootable signature.
  • Run buildpkg.cmd all
  • Run newproduct.cmd HummingBoard HummingBoardEdge_iMX6Q_2GB
  • Run buildimage.cmd HummingBoard Test

Building Firmware from Source

Building custom firmware into an FFU requires additional steps:

The firmware code can be found in the following repos:

Directories

BSP - Generated at build time. Contains Board Support Packages for the IoT ADK AddonKit.

build - Contains Board Packages, build scripts, and the VS2017 solution file.

driver - Contains driver sources.

documentation - Contains usage documentation.

hal - Contains hal extension sources.

Info

For more information about Windows 10 IoT Core, see our online documentation here

We are working hard to improve Windows 10 IoT Core and deeply value any feedback we get.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

About

Windows 10 IoT Core BSP for NXP i.MX Processors

License:MIT License


Languages

Language:C++ 54.2%Language:C 43.7%Language:Batchfile 0.7%Language:Makefile 0.6%Language:Objective-C 0.4%Language:PowerShell 0.3%Language:Assembly 0.1%