Zephyr物联网操作系统初识(一):硬件准备与开发环境配置
1.前沿
19年 底实验室协助某公司完成磁控胶囊胃镜胶囊机器人的开发工作,我们主要负责图像压缩算法的设计与实现。其中算法运行载体为Nordic公司的nrf52840芯片。nrf52840传统的开发方式主要是基于Nordic公司发布的SDK以及相应协议栈进行开发,通常为裸机,较少搭载操作体统(仅个人见解)。之前有师兄在新思科技参与了zyphyr操作系统的设计与开发,我也是通过他分享的公众号文章了解到的这一操作系统。当前物联网技术正悄然无声地改变着我们的生活,从智能门锁到共享单车,从智能家居到智慧城市,其中都能看到蓝牙设备的身影。因此我也觉得在这个时代浪潮下,有必要了解一下蓝牙协议、物联网操作系统的相关知识。一点点小私心:我是一位自行车骑行爱好者,了解到诸多设备如码表、心率带、功率计等等都是基于Nordic公司的芯片开发的。我偶尔也在想这些设备是否能够通过某些技术手段进一步挖掘其价值以更好的服务我们的生活。
关于华为LiteOS操作系统也会在文中有所提及。
参考文档:
Zephyr项目主页:https://www.zephyrproject.org/
Zephyr代码:https://github.com/zephyrproject-rtos/zephyr
nRF52840-MDK开发板文档:https://wiki.makerdiary.com/nrf52840-mdk/cn/
nRF52840-MDK代码:https://github.com/makerdiary/nrf52840-mdk
2.硬件准备
我选用的开发板是nRF52840-MDK,是Zephyr支持的众多开发板之一,你也可以选择其他的开发板进行学习,不过我个人建议选择一款成熟度高、资料丰富、应用广泛的开发板,这样在你后续的学习过程中可以避免很多“坑”。
2.1 简介
nRF52840-MDK 是一个小巧而功能丰富、开箱即用的物联网开发套件,基于 Nordic 高端系统级芯片 nRF52840,可支持 Bluetooth 5、Bluetooth Mesh、Thread、IEEE 802.15.4、ANT 等无线协议,同时带有片上 Arm CryptoCell 加密子系统,是目前面向多协议无线物联网的理想解决方案。
nRF52840-MDK 集成了多功能调试器 Arm Mbed DAPLink,提供“拖放式”下载固件、USB CDC 虚拟串口、CMSIS-DAP 仿真等功能。
nRF52840-MDK 还板载了来自 Microchip 的两端口 USB 2.0 高速集线器,只需一个 USB 接口即可同时使用 DAPLink 和 nRF52840 的 USB 设备控制器。同时还搭载了 64Mbit 超低功耗 QSPI FLASH、可编程按键、RGB LED、晶片天线及外部天线连接器等硬件资源。
nRF52840-MDK 支持跨平台开发,可以玩转多种开源软件框架(如:nRF5 SDK, Mesh, OpenThread, ZigBee 3.0, Mbed OS 5, Zephyr, Mynewt, iBeacon, Eddystone, Web Bluetooth 等等),并且提供丰富的在线文档及示例,帮助你加速物联网应用开发。
2.2 硬件规格
Nordic 高端系统级芯片 nRF52840
ARM® Cortex®-M4F 内核
1MB FLASH,256kB RAM
支持 Bluetooth 5、Bluetooth Mesh、Thread、IEEE 802.15.4、ANT 等无线协议
片上 NFC-A 标签
USB 2.0 设备控制器
ARM TrustZone® Cryptocell 310 加密子系统
板载 Arm Mbed DAPLink 多功能调工具:
MSC - 支持“拖放式”下载固件
CDC - 提供虚拟串口工具
HID - 兼容 CMSIS-DAP 仿真功能
Microchip 两端口 USB 2.0 高速集线器
板载 64Mbit 超低功耗 QSPI FLASH
拥有 多达 24 个可编程 GPIO
IF Boot/Reset 按钮
用户可编程按钮和 RGB LED
板载 2.4G 晶片天线
U.FL 连接器可用于选择外部天线
3.3V 稳压器,高效率、低静态电流、可输出 1A 峰值电流
VBUS & VIN 电源路径管理
可正反面连接的 USB 3.1 Type-C 接口
2.54mm 标准引脚间距,可直接安装在面包板上
尺寸小巧 50mm x 23mm x 13mm (已焊排针)
2.3 引脚位置图
2.4 软件资源
nRF52840-MDK 支持多种软件框架及协议:
可以看到这个开发板支持Zephyr框架。
2.5 硬件资源
遗憾的是这些资料都是指PDF文档,PCB文件并没有开源。
3.初识Zephyr
3.1 简介
Zephyr OS 是专门为资源受限设备构建、针对低功耗、小型内存微处理器设备而进行优化的物联网嵌入式小型、可扩展的实时操作系统(RTOS),支持多种硬件架构及多种开发板(包括 ARM Cortex-M, Intel x86, ARC, NIOS II, Tensilica Xtensa, 以及 RISC-V),甚至可以在小至 8kB 内存的系统上运行。
Zephyr 内核相比其他实时操作系统内核具有许多优势:
单一地址空间:应用程序代码和内核代码都在单个共享地址空间中执行。
高度可配置:允许应用程序只包含所需的功能,并指定它们的数量和大小。
编译时资源定义:允许在编译时定义系统资源,从而减少代码大小并提高性能。
最小的错误检查:提供最少的运行时错误检查,以减少代码大小并提高性能。提供了一个可选的错误检查基础结构来帮助在应用程序开发过程中进行调试。
广泛的服务套件:为软件开发提供多种服务,如多线程服务、中断服务、线程间的同步服务、线程间的数据传递服务、电源管理服务。
了解更多细节,可以访问 Zephyr Project 官网。
3.2 快速入门
克隆Zephyr源码
Zephyr OS 源码已经托管在 GitHub 上,可以直接克隆使用:
$ git clone https://github.com/zephyrproject-rtos/zephyr.git
搭建开发环境
Zephyr 项目使用 CMake 工具管理和编译项目。 CMake 可以用来生成编译文件,然后使用 make
或 ninja
进行编译,这是比较常规的做法。
Windows
在 Windows 上最简单的方法是使用 Chocolatey 包管理器来安装构建工具:
按照官方指引安装 Chocolatey;
以管理员运行命令行工具(
cmd.exe
);运行以下命令,在安装软件时可以无须确认:
$ choco feature enable -n allowGlobalConfirmation
安装 Cmake:
$ choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
安装其他必要工具:
$ choco install git python ninja dtc-msys2 gperf doxygen.install
6. (可选) 安装 pdf 文档生成工具:
$ choco install strawberryperl miktex rsvg-convert
关闭 cmd.exe,以普通用户重新打开,并安装 Python 模块:
$ cd ./zephyr $ pip3 install -r scripts/requirements.txt
下载并安装 GNU Arm Embedded Toolchain,可以按照到
c:\gnuarmemb
。设置 Zephyr 环境变量:
$ set ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb $ set GNUARMEMB_TOOLCHAIN_PATH=c:\gnuarmemb
3.3 编译运行第一个示例
- 点赞
- 收藏
- 关注作者
评论(0)