Development Environment Setup on Windows¶
This section describes how to configure your development environment and to build Zephyr applications in a Microsoft Windows environment.
This guide was tested by building the Zephyr Hello World sample application on Windows versions 7, 8.1, and 10.
Update Your Operating System¶
Before proceeding with the build, ensure that you are running your Windows system with the latest updates installed.
Installing Requirements and Dependencies¶
There are 3 different ways of developing for Zephyr on Microsoft Windows. The first one is fully Windows native, whereas the 2 additional ones require emulation layers that slow down build times and are not as optimal. All of them are presented here for completeness, but unless you have a particular requirement for a UNIX tool that is not available on Windows, we strongly recommend you use the Windows Command Prompt for performance and minimal dependency set.
Option 1: Windows Command Prompt¶
The easiest way to install the dependencies natively on Microsoft Windows is to use the Chocolatey package manager (Chocolatey website). If you prefer to install those manually then simply download the required packages from their respective websites.
Note
There are multiple set
statements in this tutorial. You can avoid
typing them every time by placing them inside a .cmd
file and
running that every time you open a Command Prompt.
If you’re behind a corporate firewall, you’ll likely need to specify a proxy to get access to internet resources:
set HTTP_PROXY=http://user:password@proxy.mycompany.com:1234 set HTTPS_PROXY=http://user:password@proxy.mycompany.com:1234
Install Chocolatey by following the instructions on the Chocolatey install website.
Open a Command Prompt (cmd.exe) as an Administrator.
Optionally disable global confirmation to avoid having to add -y to all commands:
choco feature enable -n allowGlobalConfirmation
Install CMake:
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
Install the rest of the tools:
choco install git python ninja dtc-msys2 gperf doxygen.install
Close the Command Prompt window.
Open a Command Prompt (cmd.exe) as a regular user.
Clone a copy of the Zephyr source into your home directory using Git.
cd %userprofile% git clone https://github.com/zephyrproject-rtos/zephyr.git
Install the required Python modules:
cd %userprofile%\zephyr pip3 install -r scripts/requirements.txt
Note
Although pip can install packages in the user’s directory by means
of the --user
flag, this makes it harder for the Command Prompt
to find the executables in Python modules installed by pip3
.
The build system should now be ready to work with any toolchain installed in your system. In the next step you’ll find instructions for installing toolchains for building both x86 and ARM applications.
Install cross compiler toolchain:
For x86, install the 2017 Windows host ISSM toolchain from the Intel Developer Zone: ISSM Toolchain. Use your web browser to download the toolchain’s
tar.gz
file. You can then use 7-Zip or a similar tool to extract it into a destination folder.Note
The ISSM toolset only supports development for Intel® Quark™ Microcontrollers, for example, the Arduino 101 board. (Check out the “Zephyr Development Environment Setup” in this Getting Started on Arduino 101 with ISSM document.) Additional setup is required to use the ISSM GUI for development.
For ARM, install GNU ARM Embedded from the ARM developer website: GNU ARM Embedded (install to
c:\gnuarmemb
).
Within the Command Prompt, set up environment variables for the installed tools and for the Zephyr environment:
For x86:
set ZEPHYR_TOOLCHAIN_VARIANT=issm set ISSM_INSTALLATION_PATH=c:\issm0-toolchain-windows-2017-01-25
Use the path where you extracted the ISSM toolchain.
For ARM:
set ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb set GNUARMEMB_TOOLCHAIN_PATH=c:\gnuarmemb
To use the same toolchain in new sessions in the future you can set the variables in the file
%userprofile%\zephyrrc.cmd
.And for either, run the
zephyr-env.cmd
file in order to set the ZEPHYR_BASE environment variable:zephyr-env.cmd
Note
In previous releases of Zephyr, the ZEPHYR_TOOLCHAIN_VARIANT
variable was called ZEPHYR_GCC_VARIANT
.
Finally, you can try building the Hello World sample to check things out.
To build for the Intel® Quark™ (x86-based) Arduino 101:
cd %ZEPHYR_BASE%\samples\hello_world mkdir build & cd build # Use cmake to configure a Ninja-based build system: cmake -GNinja -DBOARD=arduino_101 .. # Now run ninja on the generated build system: ninja
To build for the ARM-based Nordic nRF52 Development Kit:
cd %ZEPHYR_BASE%\samples\hello_world mkdir build & cd build # Use cmake to configure a Ninja-based build system: cmake -GNinja -DBOARD=nrf52_pca10040 .. # Now run ninja on the generated build system: ninja
This should check that all the tools and toolchain are set up correctly for your own Zephyr development.
Option 2: MSYS2¶
Alternatively, one can set up the Zephyr development environment with MSYS2, a modern UNIX environment for Windows. Follow the steps below to set it up:
Download and install MSYS2. Download the appropriate (32 or 64-bit) MSYS2 installer from the MSYS2 website and execute it. On the final installation screen, check the “Run MSYS2 now.” box to start up an MSYS2 shell when installation is complete. Follow the rest of the installation instructions on the MSYS2 website to update the package database and core system packages. You may be advised to “terminate MSYS2 without returning to shell and check for updates again”. If so, simply close the
MSYS2 MSYS Shell
desktop app and run it again to complete the update.)Launch the
MSYS2 MSYS Shell
desktop app from your start menu (if it’s not still open).Note
Make sure you start
MSYS2 MSYS Shell
, notMSYS2 MinGW Shell
.Note
If you need to inherit the existing Windows environment variables into MSYS2 you will need to create a Windows environment variable like so::
MSYS2_PATH_TYPE=inherit
.Note
There are multiple
export
statements in this tutorial. You can avoid typing them every time by placing them at the bottom of your~/.bash_profile
file.If you’re behind a corporate firewall, you’ll likely need to specify a proxy to get access to internet resources:
export http_proxy=http://proxy.mycompany.com:123 export https_proxy=$http_proxy
Update MSYS2’s packages and install the dependencies required to build Zephyr (you may need to restart the MSYS2 shell):
pacman -Syu pacman -S git cmake make gcc dtc diffutils ncurses-devel python3 gperf
Compile Ninja from source (Ninja is not available as an MSYS2 package) and install it:
git clone git://github.com/ninja-build/ninja.git && cd ninja git checkout release ./configure.py --bootstrap cp ninja.exe /usr/bin/
From within the MSYS2 MSYS Shell, clone a copy of the Zephyr source into your home directory using Git. (Some Zephyr tools require Unix-style line endings, so we’ll configure Git for this repo to not do the automatic Unix/Windows line ending conversion (using
--config core.autocrlf=false
).cd ~ git clone --config core.autocrlf=false https://github.com/zephyrproject-rtos/zephyr.git
Install pip and the required Python modules:
curl -O 'https://bootstrap.pypa.io/get-pip.py' ./get-pip.py rm get-pip.py cd ~/zephyr # or to the folder where you cloned the zephyr repo pip install --user -r scripts/requirements.txt
The build system should now be ready to work with any toolchain installed in your system. In the next step you’ll find instructions for installing toolchains for building both x86 and ARM applications.
Install cross compiler toolchain:
For x86, install the 2017 Windows host ISSM toolchain from the Intel Developer Zone: ISSM Toolchain. Use your web browser to download the toolchain’s
tar.gz
file.You’ll need the tar application to unpack this file. In an
MSYS2 MSYS
console, installtar
and use it to extract the toolchain archive:pacman -S tar tar -zxvf /c/Users/myusername/Downloads/issm-toolchain-windows-2017-01-15.tar.gz -C /c
substituting the .tar.gz path name with the one you downloaded.
Note
The ISSM toolset only supports development for Intel® Quark™ Microcontrollers, for example, the Arduino 101 board. (Check out the “Zephyr Development Environment Setup” in this Getting Started on Arduino 101 with ISSM document.) Additional setup is required to use the ISSM GUI for development.
For ARM, install GNU ARM Embedded from the ARM developer website: GNU ARM Embedded (install to
c:\gnuarmemb
).
Within the MSYS console, set up environment variables for the installed tools and for the Zephyr environment (using the provided shell script):
For x86:
export ZEPHYR_TOOLCHAIN_VARIANT=issm export ISSM_INSTALLATION_PATH=/c/issm0-toolchain-windows-2017-01-25
Use the path where you extracted the ISSM toolchain.
For ARM:
export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb export GNUARMEMB_TOOLCHAIN_PATH=/c/gnuarmemb
And for either, run the provided script to set up zephyr project specific variables:
unset ZEPHYR_SDK_INSTALL_DIR cd <zephyr git clone location> source zephyr-env.sh
Finally, you can try building the Hello World sample to check things out.
To build for the Intel® Quark™ (x86-based) Arduino 101:
cd %ZEPHYR_BASE%\samples\hello_world
mkdir build & cd build
# Use cmake to configure a Ninja-based build system:
cmake -GNinja -DBOARD=arduino_101 ..
# Now run ninja on the generated build system:
ninja
To build for the ARM-based Nordic nRF52 Development Kit:
cd %ZEPHYR_BASE%\samples\hello_world
mkdir build & cd build
# Use cmake to configure a Ninja-based build system:
cmake -GNinja -DBOARD=nrf52_pca10040 ..
# Now run ninja on the generated build system:
ninja
This should check that all the tools and toolchain are set up correctly for your own Zephyr development.
Option 3: Windows 10 WSL (Windows Subsystem for Linux)¶
If you are running a recent version of Windows 10 you can make use of the built-in functionality to natively run Ubuntu binaries directly on a standard command-prompt. This allows you to install the standard Zephyr SDK and build for all supported architectures without the need for a Virtual Machine.
Install Windows Subsystem for Linux (WSL) following the instructions on the official Microsoft website: WSL Installation
Note
For the Zephyr SDK to function properly you will need Windows 10 build 15002 or greater. You can check which Windows 10 build you are running in the “About your PC” section of the System Settings. If you are running an older Windows 10 build you might need to install the Creator’s Update.
Follow the instructions for Ubuntu detailed in the Zephyr Linux Getting Started Guide which can be found here: Development Environment Setup on Linux