| .. _installing_zephyr_win: |
| |
| 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 :ref:`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. |
| |
| .. _windows_requirements: |
| |
| Installing Requirements and Dependencies |
| **************************************** |
| |
| Using MSYS2 (recommended) |
| ========================= |
| |
| The simplest way to install a development environment on Windows is to use |
| MSYS2, a modern UNIX environment for Windows. Follow the steps below to set it |
| up: |
| |
| 1. Download and install :program:`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`` desktop app and run it again to complete the update.) |
| |
| #. Launch the ``MSYS2 MSYS`` desktop app from your start menu (if it's not still open). |
| |
| #. 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 |
| |
| #. Install the dependencies required to build Zephyr: |
| |
| .. code-block:: console |
| |
| $ pacman -S git make gcc diffutils ncurses-devel python2 python3 |
| |
| #. 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, install ``tar`` 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 :file:`c:\\gccarmemb`). |
| |
| #. From within the `MSYS2 MSYS Shell`, clone a copy of the Zephyr source into |
| your home directory using Git: |
| |
| .. code-block:: console |
| |
| $ cd ~ |
| $ git clone https://gerrit.zephyrproject.org/r/zephyr |
| |
| #. Also within the MSYS console, set up environment variables for the installed |
| tools and for the Zephyr environment (using the provided shell script): |
| |
| For x86: |
| |
| .. code-block:: console |
| |
| $ export ZEPHYR_GCC_VARIANT=issm |
| $ export ISSM_INSTALLATION_PATH=/c/issm0-toolchain-windows-2017-01-25 |
| |
| Use the path where you extracted the ISSM toolchain. |
| |
| For ARM: |
| |
| .. code-block:: console |
| |
| $ export ZEPHYR_GCC_VARIANT=gccarmemb |
| $ export GCCARMEMB_TOOLCHAIN_PATH=/c/gccarmemb |
| |
| And for either, run the provided script to set up zephyr project specific |
| variables: |
| |
| .. code-block:: console |
| |
| $ unset ZEPHYR_SDK_INSTALL_DIR |
| $ source ~/zephyr/zephyr-env.sh |
| |
| #. Finally, you can try building the :ref:`hello_world` sample to check things |
| out. |
| |
| To build for the Intel® Quark™ (x86-based) Arduino 101: |
| |
| .. code-block:: console |
| |
| $ cd $ZEPHYR_BASE/samples/hello_world |
| $ make BOARD=arduino_101 |
| |
| To build for the ARM-based Nordic nRF52 Development Kit: |
| |
| .. code-block:: console |
| |
| $ cd $ZEPHYR_BASE/samples/hello_world |
| $ make BOARD=nrf52_pca10040 |
| |
| |
| This should check that all the tools and toolchain are set up correctly for |
| your own Zephyr development. |
| |
| |
| Using MinGW (not recommended) |
| ============================= |
| |
| To install the software components required to build Zephyr applications on |
| Windows, you will need to build or install a toolchain: |
| |
| 1. Install :program:`GIT`. Go to `GIT Download`_ to obtain the latest copy of |
| the software (2.12.0). Install into the :file:`C:\\Git` folder and use the |
| default configuration options for the rest. |
| |
| 2. Install :program:`Python 2.7`. Go to `Python Download`_ to obtain the |
| software (version 2.7.13) and use the default installation options. |
| |
| 3. Install :program:`MinGW`. MinGW is the minimalist GNU development environment |
| for native Windows applications. The Zephyr build system will execute on top |
| of this tool set. Visit the site `MinGW Home`_ and install the |
| following packages with their installer `mingw-get-setup.exe` (you'll need |
| to open the "All Packages" tab to enable installing the msys packages listed |
| here): |
| |
| * mingw-developer-toolkit |
| * mingw32-base |
| * msys-base |
| * msys-binutils |
| * msys-console |
| * msys-w32api |
| |
| 4. Launch the `MSYS console` from a cmd window. The installer does not create |
| shortcuts for you so you'll need to run the script |
| in :file:`C:\\MinGW\\msys\\1.0\\msys.bat.` |
| |
| 5. The Zephyr build process has a dependency on the Pthread and GNU regex |
| libraries. Msys provides its own GNU library implementation that can be |
| downloaded from the MinGW and Msys official repository: |
| `MinGW Repository`_ with the following commands: |
| |
| .. code-block:: console |
| |
| $ mingw-get update |
| $ mingw-get install libpthread msys-libregex-dev --all-related |
| |
| |
| When done, move libregex files (``libregex.a``, ``libregex.dll.a``, |
| ``libregex.la``) |
| from ``C:\Git\mingw32\msys\1.0\lib`` to ``C:\Git\mingw32\lib`` |
| |
| 6. We need to edit :file:`/etc/fstab` to create an entry mapping from the Win32 |
| path ``c:/mingw`` to the mount point ``/mingw`` |
| The easiest way to do this is just copy the file :file:`fstab.sample` as |
| :file:`fstab` and ``cat /etc/fstab`` to confirm that the mapping was added. |
| |
| |
| 7. The build system should be able to work with any toolchain installed in your |
| system. For instance, the Zephyr build system was tested using the mingw |
| MSYS console (as described below) with the toolchain |
| provided with the ISSM 2016 (Intel System Studio for Microcontrollers) |
| installation. Install ISSM toolchain from the Intel Developer Zone: |
| `ISSM Toolchain`_ |
| |
| .. 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.) |
| Also, additional setup is required to use the ISSM GUI for |
| development. |
| |
| 8. From within the MSYS console, clone a copy of the Zephyr source into your |
| home directory using Git: |
| |
| .. code-block:: console |
| |
| $ cd ~ |
| $ git clone https://gerrit.zephyrproject.org/r/zephyr |
| |
| 9. Also within the MSYS console, set up environment variables for installed |
| tools and for the Zephyr environment (using the provided shell script): |
| |
| .. code-block:: console |
| |
| $ export PATH=$PATH:/c/python27/ |
| $ export MINGW_DIR=/c/mingw |
| $ export ZEPHYR_GCC_VARIANT=issm |
| $ export ISSM_INSTALLATION_PATH=C:/IntelSWTools/ISSM_2016.1.067 |
| $ unset ZEPHYR_SDK_INSTALL_DIR |
| $ source ~/zephyr/zephyr-env.sh |
| |
| 10. Finally, you can try building the :ref:`hello_world` sample to check things |
| out. In this example, we'll build the hello_world sample for the Arduino |
| 101 board: |
| |
| .. code-block:: console |
| |
| $ cd $ZEPHYR_BASE/samples/hello_world |
| $ make BOARD=arduino_101 |
| |
| This should check that all the tools and toolchain are setup correctly for |
| your own Zephyr development. |
| |
| |
| .. _GNU ARM Embedded: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads |
| .. _MSYS2 website: http://www.msys2.org/ |
| .. _GIT Download: https://git-scm.com/download/win |
| .. _Python Download: https://www.python.org/downloads/ |
| .. _MinGW Home: http://www.mingw.org/ |
| .. _MinGW Repository: http://sourceforge.net/projects/mingw/files/ |
| .. _ISSM Toolchain: https://software.intel.com/en-us/articles/issm-toolchain-only-download |
| .. _Getting Started on Arduino 101 with ISSM: https://software.intel.com/en-us/articles/getting-started-arduino-101genuino-101-with-intel-system-studio-for-microcontrollers |