Zephyr RTOS -- 开发环境的搭建 (基于 Windows)

Posted 搬砖-工人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zephyr RTOS -- 开发环境的搭建 (基于 Windows)相关的知识,希望对你有一定的参考价值。

文章目录

前言

本人正在学习 Zephyr,一个可移植性较强,可以兼容多种开发板及物联网设备的操作系统,如果你感兴趣,可以点此查看我的 学习笔记总述 进行了解!

 

摘要

Zephyr 是专门为资源受限的设备构建、针对低功耗、小型内存微处理器设备而进行优化的物联网嵌入式小型、可扩展的 实时操作系统(RTOS),支持多种硬件架构及多种开发板(包括 ARM Cortex-M, Intel x86, ARC, Nios II, Tensilica Xtensa, 以及 RISC-V)。

想要了解 Zephyr 并使用 Zephyr 来进行开发工作,那么 Zephyr 的开发环境及使用的相关工具是必须要进行了解的,本文介绍了关于 Zephyr 的开发环境搭建的一些相关事项。

 

1. Python3 及相关插件的安装

1.1 安装 Python3

nRF Connect SDK 的开发环境需要使用到 Python3 以及相关的插件,因此在配置开发环境之前首先需要安装 Python3 ,且版本必须大于 3.8,可以到 Python 的官网进行下载安装。

安装 Python 时要记住其安装路径,安装完成之后,需要将该路径添加到环境变量。如图所示:


注意:
若当前电脑上还安装了其他版本的 python,为避免多个版本的 python 及其安装的插件产生冲突导致出现未知的错误,最好将其他版本的 python 的环境变量删除。即每次需要使用到哪个版本,就将环境变量切换成哪个版本!

首次安装完成后,若要进行环境变量的切换,切换完毕之后,最好将电脑重启一次!

设置完成后可以通过命令行来检查是否安装成功,及环境变量是否已经生效:

python -V

 

1.2 安装 Python 的虚拟环境

虚拟环境不是必须的,也可以不安装虚拟环境进行使用,这个取决于个人喜好与习惯。

但是,强烈建议安装虚拟环境来进行开发!!!

 
 


 
 

下面说说具体原因及相关操作步骤:

 

虚拟环境的概念

虚拟环境是一个虚拟化的,从电脑独立开辟出来的环境。简单来说,就是借助虚拟机把一部分内容独立出来,我们把独立出来的这部分东西叫做 “容器”,在这个容器中,可以只安装需要的依赖文件包,可以创建多个 “容器”,每个容器之间互相隔离,互不影响。
 

为什么要使用虚拟环境?

在实际的项目开发中,我们通常会根据自己的需求去下载各种相应的插件,但是每个项目需要使用的插件或者插件的版本不一样,这样一来,我们就需要根据不同项目的需求来不断的更新,卸载,安装相应的插件。

像这样直接对我们整个 Python 环境进行来回切换,使劲怼的话会对开发环境和项目造成很多不必要的麻烦,管理也很混乱。

特别是当进行团队协作,每人负责项目的一部分时,每个人的系统开发环境差距就更大了,频繁的来回卸载安装不但浪费时间,还很容易导致出现莫名的错误。还有的需要使用不同版本的 Python 时,就更加麻烦了。

使用 虚拟环境 可以避免这些问题,虚拟环境可以分别为多个项目配置不同的运行环境,这样这些项目就可以同时运行。
 

虚拟环境的安装与使用

  1. 检查

    安装虚拟环境之前,先要确认好有没有安装好 python 环境,并检查电脑系统环境变量是否设好。

  2. 安装虚拟环境

    打开命令行窗口(cmd / powershell),使用命令安装虚拟环境 virtualenv

    pip install virtualenv

    它会默认安装到你的 Python 库文件中,可以看到安装完成的地址,一般看见 success 就说明安装成功了。

  3. 创建虚拟环境

    virtualenv <envname>

    这个命令创建虚拟环境,会在当前所在目录进行创建,如:

  4. 进入虚拟环境

    先要进入 (cd) 到虚拟环境的位置(目录)的 Scripts 中,然后再激活(activate.bat)虚拟环境,则进入新建的虚拟环境中了。

    cd virtualenv-test1\\Scripts
    activate.bat


    使用 activate.bat 激活虚拟环境之后,当前面出现所创建的虚拟环境的名称时表示已经进入到虚拟环境中了,这时你可以使用 pip 命令安装各种依赖包了。

  5. 退出虚拟环境

    deactivate.bat

 

虚拟环境的配置

通过上面的这些步骤,其实我们已经完成的虚拟环境的安装与使用了,但是有个缺点:那就是你必须记住创建的每一个虚拟环境的目录,才能进入虚拟环境中进行操作,这个还是有点麻烦的,下面我们可以通过另一个配置来进行简化。

  1. 安装 virtualenvwrapper-win

    pip install virtualenvwrapper-win

  2. 查看是否成功安装

    workon

    若出现如下提示,则说明安装成功了。

  1. 创建虚拟环境

    mkvirtualenv py3-ncs

    首次创建成功后会自动进入该虚拟环境。

  2. 配置虚拟环境目录

    通过上面的步骤,创建的虚拟环境,默认放在 C:\\Users\\电脑用户名\\Envs 目录中,这样有时不会满足我们的需求,若我们想把虚拟环境目录放到其他路径中,则需要按照如下步骤配置一下环境。

    • 新建一个用来存放环境变量的文件夹,这里我设置的是:F:\\Python-Envs
    • 配置系统环境变量:->新建系统变量 -> 变量名:WORKON_HOME ->指定路径:F:\\Python-Envs

  1. 进入虚拟环境

    workon py3-ncs

    上面通过设置 WORKON_HOME 路径,就给我们的 python 虚拟环境指定了一个存放位置,再次运行 workon,目录中没有虚拟环境了,因为默认目录已经改变。我们可以将之前的虚拟环境的项目拷贝到新建目录下,再次运行 workon,就可以看到该目录下所有的虚拟空间了。

    如下是我已经创建的两个虚拟空间:

  1. 退出虚拟空间

    deactivate

至此,配置过程完成。

 

前面说过:当电脑上由于不同的项目安装了多个 Python 时,为避免多个版本的 python 及其安装的插件产生冲突导致出现未知的错误,最好将其他版本的 python 的环境变量删除。即每次需要使用到哪个版本,就将环境变量切换成哪个版本!因为创建的虚拟环境取决于电脑当前的环境,如果当前处于 Python2,那么创建的虚拟环境就是基于 Python2;如果当前处于 Python3,那么创建的虚拟环境就是基于 Python3。

但是,这样要想确认自己创建的虚拟环境是正确的,就得切换 Python 的环境变量,显得有点麻烦。

这种情况我们可以在创建虚拟环境时添加一个参数,用来确保创建的虚拟环境的版本是正确的:

mkvirtualenv <envname> -p <python_path>

其中的 <python_path> 为使用的 Python 版本的安装路径。

例如,在我电脑上安装了 Python2 和 Python3 两个版本,安装路径分别为:C:\\Python27C:\\Python38,基于此两个版本分别创建一个虚拟环境:

mkvirtualenv env_py2 -p C:\\Python27
mkvirtualenv env_py3 -p C:\\Python38

创建时,会提示你当前使用的 Python 版本,这里为了更简单,将这两个路径分别赋值给了两个环境变量:py2py3

 

总结

单独配置的常用命令:

创建虚拟环境:virtualenv <envname>
进入虚拟环境:cd <envname>\\Scripts + activate.bat
退出虚拟环境:deactivate.bat

配置之后的常用命令:

列出虚拟环境列表:workon
创建新的虚拟环境:mkvirtualenv <envname>
删除存在虚拟环境:rmvirtualenv <envname>
启动/切换虚拟环境:workon <envname>
离开/退出虚拟环境:deactivate

创建指定 Python 版本的虚拟环境:

mkvirtualenv <envname> -p <python_path>

其中的 <envname> 为虚拟环境的名称,<python_path> 为指定的 Python 版本的安装路径。

 

2. 安装其他工具

2.1. 安装 Chocolatey

Chocolatey 是一个软件包的管理工具,若你不想要进行安装或者由于电脑环境问题,可以不用安装,后面介绍的使用 Chocolatey 安装的一些插件或者软件可以到官网去下载安装,或者使用其他方式进行安装。但是,安装完成之后,记得添加环境变量!

Chocolatey 安装过程可以参考 INSTALLING CHOCOLATEY 进行安装,或者按照下面的步骤进行安装:

  1. 先确保使用的是 管理员用户 进行安装,即使用管理员权限打开 powershellcmd

  2. 使用 powershell 进行安装:

    运行下方命令:

    Get-ExecutionPolicy

    如果返回 Restricted,则运行:

    Set-ExecutionPolicy AllSignedSet-ExecutionPolicy Bypass -Scope Process

    (注:该步骤是为了确保 Get-ExecutionPolicy 不受限制,若受限制,则使用 Bypass 绕过策略来安装或 AllSigned 提高安全性)

  3. 然后运行:

    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))

  4. 等待几秒钟,让命令运行完成。

  5. 若没有出现任何错误,则安装成功。可以使用 choco -? 来了解使用说明。

 

2.2. 禁用全局确认

以管理员身份打开一个 cmd.exe 窗口,运行下方命令禁用全局确认以避免必须确认单个程序的安装:

choco feature enable -n allowGlobalConfirmation

 

2.3. 使用choco安装所需的依赖

choco install cmake --installargs ‘ADD_CMAKE_TO_PATH=System’
choco install ninja gperf python git

第二条命令分别安装了 4 个软件:ninja,gperf,python,git;若此前已有相应软件,可以不必再次安装。

安装完成后,会出现如下提示,当然并不是每次,每个版本都会有这些提示,一般只要未出现错误,就说明成功了。

执行完上面的操作之后,关闭窗口并以 普通用户身份 打开一个新的 cmd.exe 窗口继续。

 

3. 进入虚拟环境安装插件

先进入你创建的虚拟环境空间,然后安装相关插件及依赖项。


 

未安装虚拟环境的直接进行下面的操作步骤。

 

3.1 安装 West

pip3 install -U west


若是在安装时出现上面的错误,不要慌,这一般是由于翻墙软件的问题,关闭网络代理就好了:


 

3.2 获取 Zephyr 源码

  1. 创建一个文件夹用来存放项目工程文件,例如:E:\\ncs

  2. 进入到该文件夹的路径。

    west init zephyrproject

    操作成功后会出现如下提示:

    然后在执行下面的操作:

    cd zephyrproject
    west update

    执行完毕之后,你会发现文件夹下多了这些文件夹:

     

3.3 导出 Zephyr CMake 包

导出 Zephyr CMake 包。这允许 CMake 自动加载构建 Zephyr 应用程序所需的样板代码。

 

3.4 安装额外的 Python 依赖项

安装额外的 Python 依赖项,它们在 scripts/requirements.txt 中进行了声明:

> pip3 install -r zephyr\\scripts\\requirements.txt

 

4. 安装工具链

可以参考 设置工具链 中的说明进行安装,也可以按照下列步骤进行安装:

  1. 下载并安装适用于您的操作系统的 GNU ARM Embedded 版本,并将其解压缩到您的文件系统中。

    我此次安装的目录为:E:\\gnuarmemb,安装版本为:10.2.1

    注意:
    不要将工具链安装到带有空格的路径中。

    还需要注意的是:就算选择的安装路径中不带空格,到最后它会默认添加一个带空格的路径,需要把这部分删除:

  2. 安装完成后设置环境变量。

    ZEPHYR_TOOLCHAIN_VARIANT 的变量值为:gnuarmemb
    GNUARMEMB_TOOLCHAIN_PATH 的变量值为:E:\\gnuarmemb

    设置完成之后,可以使用下列命令来进行检查:

    echo %ZEPHYR_TOOLCHAIN_VARIANT%
    echo %GNUARMEMB_TOOLCHAIN_PATH%

至此,所需要的工具及插件基本安装完成!

 

5. 编译示例进行测试

进入你创建的 工程文件夹 的 zephyr 目录(E:\\ncs\\zephyrproject\\zephyr) 下:

编译工程文件,这里使用目录 samples\\basic\\blinky 的示例,采用 nrf52832 类型的开发板:

west build -p auto -b nrf52dk_nrf52832 samples\\basic\\blinky

编译成功:


然后烧录到开发板上进行运行,你会发现 LED 开始闪烁。

west flash

到这,你就可以进行正常的开发了,需要注意的是:创建的工程文件需要放到跟 zephyr 同等级路径的目录文件夹下,或者放到 zephyr 的下级文件夹下。

 

参考链接

Zephyr 入门指南:https://docs.zephyrproject.org/latest/getting_started/index.html
手动安装 nRF Connect SDK:https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.5.0/nrf/gs_installing.html

以上是关于Zephyr RTOS -- 开发环境的搭建 (基于 Windows)的主要内容,如果未能解决你的问题,请参考以下文章

Zephyr RTOS -- 开发环境的搭建 (基于 Windows)

Zephyr RTOS -- 学习笔记总述

Zephyr RTOS -- 学习笔记总述

Zephyr RTOS -- nRF Connect SDK (NCS) 环境搭建

Zephyr RTOS -- nRF Connect SDK (NCS) 环境搭建

Zephyr学习开发环境搭建