zephyr 开发环境搭建

zephyr 操作系统

Zephyr 是由 Linux 基金会托管的开源协作项目,目标是构建一个针对资源受限设备的小型、可裁剪的实时操作系统(RTOS)。Zephyr 项目非常适合构建简单的传感器网络、可穿戴设备以及小型物联网无线网关。系统采用模块化设计,支持多种 CPU 架构,开发人员可以很容易的根据需求定制一个最优的解决方案。

zephyr rtos

Zephyr 相比其他开源物联网系统具有以下优点:

  • 开源:使用 Apache 2.0 开源许可。
  • 模块化:针对受限制的物联网设备而设计,可以通过 Kconfig 裁剪功能选项,从而实现用户自定义的最佳配置。
  • 联网能力:系统中提供了多种针对低功耗、内存受限设备的连接协议,支持蓝牙、低功耗蓝牙(BLE)、wifi802.15.4 以及其他标准,包括6lowpancoapipv4ipv6NFC
  • 安全性:项目在开发过程中将安全因素考虑在内,该项目中提供了安全验证、模糊和渗透测试、代码审查、静态代码分析、威胁建模和审查等多种检测方法,用来防止代码中存在后门和漏洞。以上工作由专门的安全小组及维护人员进行监督和维护。

安装 ubuntu

下面介绍两种安装方式,推荐使用虚拟机的方式进行安装,Windows subsystem linux 目前对 32 位的应用程序支持情况并不友好,而开发过程中很多都是 32 位的应用程序,比如交叉编译、gdb 调试等。

虚拟机(推荐)

工具描述

项目 描述 下载
VirtualBox 虚拟机 下载地址
mobaxterm ssh 客户端 下载地址
ubuntu 16.04 desktop ubuntu 系统 下载地址

必要服务

虚拟机及 ubuntu 安装过程不做详细描述,安装完成后如果不习惯使用 vim 工具进行代码编辑,可以开启 samba 服务设置共享文件夹,这样可以在 windows 下使用喜欢的编辑器进行代码的编辑。同样可以开启 ssh server 服务,在 windows 下通过 ssh 客户端进行登录。

服务 描述
samba 用于和 windows 共享文件
ssh server 用于 windows 客户端登录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 安装 samba 服务
$ apt-get install samba
$ apt-get install smbclient

# 修改配置文件
$ vim /etc/samba/smb.conf

[share]
comment = Shared Folder require password
path = /root/share
writeable = yes
create mask = 0755
; directory mask = 0755
force user = root
force group = root
; available = yes
; browseable = yes
guest ok = yes

# 重启 samba 服务
$ /etc/init.d/samba restart

# windows 映射网络驱动器
\\<ip>\share (\\192.168.56.101\share)

子系统(暂不推荐)

Win10 发布的 windows-subsystem-linux 功能非常好用,省去了安装配置虚拟机的过程。安装过程中遇到问题,可阅读参考文档章节中的官方文档进行尝试。

目前版本 wsl 无法执行 32bit 程序,zephyr native_posix 平台编译后输出的可执行文件暂时无法正确执行。wsl issues

这里写图片描述

开启 wsl

  • windows下管理员权限打开PowerShell,运行以下命令:
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • 重启电脑
  • 打开命令行输入 wsreset
  • 搜索 ubuntu
  • 点击获取并安装

该过程有可能提示“我们这边出现错误”,以下两点需要注意:

  1. 登录 windows store
  2. 查看系统要求是否满足,系统版本过低需要升级后再进行安装。

系统升级

1
2
$ sudo apt-get update
$ sudo apt-get upgrade

SSH 登录

如果不喜欢使用 windows 下的命令行工具,可以开启 ubuntu 上的 ssh server,通过自己喜欢的 ssh 工具进行连接:

1
2
3
4
5
6
7
8
9
10
11
# 卸载 SSH Server
$ sudo apt-get remove openssh-server
# 安装 SSH Server
$ sudo apt-get install openssh-server
# 修改配置
$ sudo vim /etc/ssh/sshd_config
Port 2222
UsePrivilegeSeparation no
PasswordAuthentication yes
# 启动 SSH Server
$ sudo service ssh --full-restart

使用 SSH 工具连接 127.0.0.1 端口 2222,需要注意的是 windows 启动 ubuntu 的窗口不能关闭,关闭后 ssh server 会断开。

共享文件

ubuntu /mnt/ 路径下可以看到 windows 盘符,可以创建共享文件夹方便 ubuntuwindows 共享文件

1
2
3
4
5
6
# 进入 e 盘
$ cd /mnt/e/
# 创建共享目录
$ mkdir share
# 软链接到home目录
$ ln -s /mnt/e/share/ /home/<user>/share

zephyr 环境准备

安装依赖包

1
2
3
4
5
6
7
8
9
# 安装依赖项
$ sudo apt-get install --no-install-recommends git cmake ninja-build gperf \
ccache doxygen dfu-util device-tree-compiler \
python3-ply python3-pip python3-setuptools xz-utils file make gcc-multilib
# 克隆zephyr
$ git clone https://github.com/zephyrproject-rtos/zephyr
$ cd zephyr
# 通过pip3工具安装其他依赖项
$ pip3 install --user -r scripts/requirements.txt

上述过程如果出现错误可以尝试通过以下执行解决:

1
2
3
$ which easy_install3
$ cd <path_easy_install3>
$ sudo ./easy_install3 pip==9.0.1

安装 cmake

zephyr 的开发需要 cmake 3.8.2 或以上版本,通过 ubuntu 软件仓库安装的 cmake 版本并不符合要求。

1
2
3
4
5
6
7
8
# 新建cmake文件夹
$ mkdir $HOME/cmake && cd $HOME/cmake
$ wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.sh
$ yes | sh cmake-3.8.2-Linux-x86_64.sh | cat
$ echo "export PATH=$PWD/cmake-3.8.2-Linux-x86_64/bin:\$PATH" >> $HOME/.zephyrrc
$ source <zephyr git clone location>/zephyr-env.sh
$ cmake --version
cmake version 3.8.2

安装 zephyr sdk

zephyr sdk 会自动安装支持硬件平台所依赖的编译、下载、调试等工具,安装过程会花费一定时间。本文中使用的是目前最新版本 0.9.2

1
2
3
4
5
6
7
# 下载
$ wget https://github.com/zephyrproject-rtos/meta-zephyr-sdk/releases/download/0.9.2/zephyr-sdk-0.9.2-setup.run
# 安装
$ chmod +x zephyr-sdk-0.9.2-setup.run
$ sudo ./zephyr-sdk-0.9.2-setup.run

按照提示输入安装位置 如:/mnt/e/share/zephyr-sdk/

设置环境变量

将环境变量保存到文件,需要注意的是不要将之前安装的 cmake 环境变量覆盖掉

1
2
3
4
5
6
7
$ cat <<EOF >> ~/.zephyrrc
export ZEPHYR_GCC_VARIANT=zephyr
export ZEPHYR_SDK_INSTALL_DIR=/mnt/e/share/zephyr-sdk
export ZEPHYR_BASE=/mnt/e/share/repo/zephyr
EOF

$ source <zephyr git clone location>/zephyr-env.sh

验证开发环境

完成上述安装过程后,可以通过 hello world 示例验证 zephyr 环境是否正常,使用 qemu_x86 平台验证过程如下:

1
2
3
4
5
6
7
8
9
10
11
$ cd $ZEPHYR_BASE/samples/hello_world
$ mkdir -p build && cd build
$ cmake -DBOARD=qemu_x86 ..
$ make
$ make run
To exit from QEMU enter: 'CTRL+a, x'
[QEMU] CPU: qemu32,+nx,+pae
qemu-system-i386: warning: Unknown firmware file in legacy mode: genroms/multiboot.bin

***** BOOTING ZEPHYR OS v1.10.99 - BUILD: Jan 20 2018 09:40:00 *****
Hello World! x86

参考文档

0%