首页 > 编程知识 正文

Zephyr OS 开发极速入门,王鹰豪二阶魔方极速入门

时间:2023-05-04 10:38:45 阅读:247064 作者:4259

Zephyr OS 开发极速入门 Zephyr OS简介zephyr 开发环境搭建 更新软件源安装依赖包克隆zephyr代码仓库安装必要的python3依赖工具安装CMake安装 zephyr SDK设置环境变量 QEMU环境执行Hello World 相关文件介绍编译与执行 nucleo stm32平台执行行blinky Ubuntu中安装stlink工具编译与执行 总结与比较参考文档

Zephyr OS 开发极速入门 Zephyr OS简介

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

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

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

下面介绍如何在Ubuntu 1604 Desktop环境下构建Zephyr开发环境。构建Zephyr开发环境需要在Ubuntu中正确安装Pyhton3和CMake等工具,除此之外还需要正确获取Zephyr源代码和Zephyr SDK。

更新软件源 sudo apt-get updatesudo apt-get upgrade 安装依赖包 # 安装依赖项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代码仓库

把zephyr代码克隆到用户目录中,例如克隆至repo/zephyr文件夹中。

mkdir -p repocd repogit clone https://github.com/zephyrproject-rtos/zephyr 安装必要的python3依赖工具 # 进入zephyr文件夹cd zephyr# 通过pip3工具安装其他依赖项pip3 install --user -r scripts/requirements.txt 安装CMake

zephyr 的开发需要 cmake 3.8.2 或以上版本,通过 ubuntu 软件仓库安装的 cmake 版本较低并不符合要求,可通过以下步骤把合适的CMake安装到$HOME/cmake。

mkdir $HOME/cmake && cd $HOME/cmakewget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.shyes | sh cmake-3.8.2-Linux-x86_64.sh | cat

把CMake安装目录增加到用户环境变量中,修改用户目录中的.bashrc文件的最后增加一行

export PATH=<camke install directory>/jsddh:$PATH

新建一个控制台,在控制台中输入cmake --version验证cmake工具是否安装成功,此处CMake的版本编号为3.8.2。

cmake --version cmake version 3.8.2 安装 zephyr SDK

zephyr SDK 会自动安装被支持硬平台所依赖的编译、下载、调试等工具。本文中使用的SDK版本为 0.9.2。安装过程中控制台将出现Zephyr SDK安装路径的提示,建议把zephyr SDK安装到用户目录optzephyr-sdk文件夹中。

# 下载SDKwget https://github.com/zephyrproject-rtos/meta-zephyr-sdk/releases/download/0.9.2/zephyr-sdk-0.9.2-setup.run# 安装SDKchmod +x zephyr-sdk-0.9.2-setup.run./zephyr-sdk-0.9.2-setup.run 设置环境变量

在用户目录.bashrc文件末尾再增加ZEPHYR_GCC_VARIANT、ZEPHYR_SDK_INSTALL_DIR和ZEPHYR_BASE等参数,修改完成之后在控制台执行source .bashrc,该指令可使新增加的环境变量立即生效。

cat ~/.bashrcexport PATH=<camke install directory>/jsddh:$PATHexport ZEPHYR_GCC_VARIANT=zephyrexport ZEPHYR_SDK_INSTALL_DIR=<zephyr-sdk directory>export ZEPHYR_BASE=<zephyr local repository directory> QEMU环境执行Hello World

完成上述安装过程后,可以通过 hello world 示例验证 zephyr 开发环境是否一切正常。此处使用qemu_x86仿真平台进行验证。此处编译生成的hello world可执行文件将运行于QEMU仿真平台。

相关文件介绍

$ZEPHYR_BASE/samples/hello_world文件夹中包含以下几个重要文件,虽然其他的示例的功能与这个hello world 示例存在差别,但是各示例目录的文件结构却高度相似。
- CMakeLists.txt构建文件,用于生成makefile;
- src/main.c主函数文件;
- prj.conf配置文件

编译与执行

通过CMake生成Makefile文件时,需要通过BOARD参数指定目标平台,此处指定为qemu_x86平台。

cd $ZEPHYR_BASE/samples/hello_world# 新建一个build目录,用于存放临时文件mkdir -p build && cd build# 通过cmake指令生成qemu_x86平台makefile文件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.jsddh ***** BOOTING ZEPHYR OS v1.10.99 - BUILD: Jan 20 2018 09:40:00 ***** Hello World! x86 nucleo stm32平台执行行blinky

zephyr支持多种ARM平台和Arduino平台,其中也包括数个nucleo stm32平台,下面以nucleo stm32f429英俊的大侠为例说明如何在STM32平台执行blinky示例。

Ubuntu中安装stlink工具

为了把blinky固件下载至目标板中,需要在Ubuntu中正确安装stlink工具,安装步骤如下:

# 安装依赖库sudo apt-get install libusb-1.0# 克隆stlink工具git clone https://github.com/texane/stlink# 编译make releasemake debugcd buildcmake -DCMAKE_BUILD_TYPE=Debug ..make# 安装cd Releasesudo make install

重新拔插STM32F4开发板USB端口后,固件便可正确下载至STM32目标版。

编译与执行 # 进入 blinky 示例cd $ZEPHYR_BASE/samples/basics/blinky# 新建build文件夹mkdir -p build && cd build# 指定目标平台cmake -DBOARD=nucleo_f429英俊的大侠 ..# 编译make# 下载固件make flash

相较于QEMU平台的hello world示例,该示例通过make flash命令把固件下载至STM32F4目标板中。

总结与比较 zephyr开发过程可通过QEMU仿真平台进行验证,可减少一部分开发工作量;zephyr除了支持QEMU仿真平台外,还支持STM32、CC2650等常用平台,上手较为容易;zephyr使用CMake作为构建工具,相较于contiki,zephyr重新构建应用的学习成本更低,学习周期更短;和contiki相似,zephyr有更好的网络功能,这些网络功能包含ipv6,coap和lwm2m,这些协议将在未来物联网应用被中被广泛使用。 参考文档 Getting Started GuideDevelopment Environment Setup on Linuxzephyr sdk githubzephyr sdk download Install the Windows Subsystem for Linux
什么是服务器租用?前端学习笔记——node.js

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。