.. _develop_windows: Windows下开发环境的搭建 ############################## 新一代的IoT OS平台相对以往的RTOS平台更加复杂,需要许多不同的工具, Zephyr也是如此。Zephyr当前支持在Windows、Linux、Mac OS下的构建, 其中Linux下的支持最好,按照Zephyr官方文档一步一步操作即可。Zephyr对Windows支持是基于 `Chocolatey `_ 包管理器,但对于国内用户而言,可能存在两大问题, 第一Chocolatey包管理器安装需要特殊设置,可能无法安装;第二即使安装好后,由于chocolatey 在国内并没有镜像源,下载软件包的速度会很不稳定。 本章主要介绍一种适合国内用户的替代方案。 准备代码 =========== Zephyr的代码可以分为Zephyr OS和Zephyr modules两大部分,都托管在github上。经过多年的发展,整个Zephyr的代码已经相当庞大,如果对github 的访问不可靠的话,那么在第一次准备代码时会存在问题。有鉴于此,SIG-Zephyr提供了基于Zephyr发行版的代码镜像,以方便国内用户访问: * 只包含Zephyr OS最新发行版和lts发行版,可以访问 `镜像 `_ * 包含了Zephyr OS和Zephyr modules,可以访问 `网盘 `_ 提取码: **zeph** * 如果需要同步Zephyr OS的git仓库,可以先通过 `gitee zephyr镜像 `_ 同步,然后再同步到github上 的仓库 * Zephyr modules数量较多,但只有部分git仓库在 `gitee镜像 `_ 上存在,缺失的部分需要通过其方式 获得。在实际开发过程中,很少会使用到所有Zephyr modules, 因此可以根据需要,只准备相应的modules。 下载或clone好代码后,一种推荐的文件布局如下: :: <顶层目录zephyr_workspace> ├── bootloader bootloader模块,目前只有mcuboot ├── modules zephyr modules顶层目录,其下包含各种modules ├── tools zephyr配套的工具目录 └── zephyr zephyr OS核心目录(必要) 工具链 ======== * Zephyr SDK Zephyr Project自身提供了一个包含编译器、QEMU仿真器、openOCD调试等工具在内的SDK(Software Development Kit), 称之为Zephyr SDK。 通过维护Zephyr SDK,Zephyr Project提供了一个完整的解决方案,无须再安装其他工具。同时,Zephyr SDK与Zephyr OS共同演进发布,并且经过 测试,很好地解决了工具与OS的兼容性问题。一般情况下,最新版本的Zephyr SDK配套最新版本的Zephyr, 用户可以通过如下链接获取Zephyr SDK: `Zephyr SDK `_ Zephyr SDK中的编译器是基于GCC的,包含Zephyr支持的所有处理器架构,因此完整的SDK自解压安装包大于1 GB。用户也可以选择只包含所用到处理器架构 编译器的SDK安装包,大约在100-200 MB之间。 Zephyr SDK是发布在github上, 国内访问速度比较慢且不稳定,SIG-Zephyr也提供了基于百度网盘的最新SDK镜像: `最新版Zephyr SDK镜像 `_ 提取码: **zeph** 当前Zephyr SDK是基于Yocto构建的,因此只支持Linux环境。Zephyr SDK正计划迁移到基于 `cross-ng `_ 的构建, 届时为会Windows,Linux和MAC OS构建出相应的工具链。如果有兴趣尝试,可以通过链接获取原型: `下一代Zephyr SDK原型 `_ * GNU ARM Embedded工具链 如前文所述,Zephyr SDK暂不支持Windows环境,需要使用第三方的工具链,对于ARM 32位架构硬件(ARM Cortex M系列, ARM Cortex R系列等)推荐使用 GNU ARM Embedded工具链: `Windows GNU ARM Embedded工具链 `_ 假设下载后并安装在 :file:`C:\\gnu_arm_embedded` 下。 主机工具 ============ 下载好编译器之后,接下来是准备主机工具。Zephyr对主机工具的最小依赖如下: .. list-table:: :header-rows: 1 * - 工具名 - 最低版本 * - `CMake `_ - 3.20.0 * - `Python `_ - 3.6 * - `Devicetree compiler `_ - 1.4.6 * - `ninja `_ - 1.10.2 (windows需要) * - `gperf `_ - 3.1 上述工具中,CMAKE、Python和ninja都有windows版本,请下载、安装并添加到Windows的PATH路径。DTC和gperf是gnu工具,并没有 直接的windows发行版本,而是基于cygwin或msys2环境实现Windows下的运行,例如Chocolatey中的gperf和dtc是其实也是基于msys2 环境。 * 安装msys2的pacman包管理器 由于Chocolatey的限制,此处我们使用另一个 `msys2 `_ 提供的包管理器pacman来实现gperf和msys2的 安装。基于msys2的pacman管理器,国内有大量的镜像源且安装方便,不存在类似Chocolatey的问题。 此处使用清华源: `pacman安装包清华源 `_ .. note:: 安装好后,请更新相应的镜像源地址,尽可能使用国内的镜像源以加速访问,如阿里云,清华,中科大等 * 安装dtc和gperf 打开msys2命令行窗口,安装dtc和gperf .. code-block:: bash pacman -R dtc gperf .. warning:: 我们只需要dtc和gperf,不要安装其他个工具, 由于msys2环境的路径问题,cmake, python, ninja可能存在着不 兼容的问题 * 安装west Zephyr的开发并不是必须依赖west, 但通过west可以有效简化一些步骤,因此我们推荐安装west。 .. code-block:: bash pip3 install -U west west的初始化依赖git, 所以请同时安装好Windows git。 * 安装QEMU 体验Zephyr并不需要有实际的开发板,可以通过QEMU来模拟相应的开发板。 `QEMU 6.2 windows版 `_ 设置环境变量以及必要配置 ========================= * Windows的PATH变量:需要把python, cmake, ninja以及msys2的 "\usr\bin"添加到Windows PATH变量中。 设置好之后,打开cmd窗口,如能找python, cmake, ninja, dtc, gperf, git, qemu-system-arm这些命令,则为成功。 * 安装所需要的python库: .. code-block:: bash pip3 install --user -r /zephyr/scripts/requirements.txt * 为GNU ARM Embedded工具链设置环境变量,在Windows增加了两个环境变量: - "ZEPHYR_TOOLCHAIN_VARIANT”值为“gnuarmemb”, 告知Zephyr构建系统使用的是GNU ARM Embedded工具链 - "GNUARMEMB_TOOLCHAIN_PATH"值为:file:`C:\\gnu_arm_embedded`, 即GNU ARM Embedded安装目录 * 初始化Zephyr workspace .. code-block:: bash cd west init -l zephyr #通过 -l参数,实现workspace本地初始化 west zephyr-export #导出CMake FindPackages 编译Zephyr应用 ====================== 上述所有准备工作完成之后,可以尝试构建Zephyr应用了。 .. code-block:: bash cd /zephyr west build -p auto -b qemu_cortex_m3 samples/philosophers # 编译zephyr应用 west build -t run # 通过qemu运行zephyr应用