Zephyr物联网操作系统初识(一):硬件准备与开发环境配置

举报
蔡智 发表于 2020/05/08 15:07:20 2020/05/08
【摘要】 Zeyphyr Windows开发环境配置

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 5Bluetooth MeshThreadIEEE 802.15.4ANT 等无线协议,同时带有片上 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 等等),并且提供丰富的在线文档及示例,帮助你加速物联网应用开发。

1588920832936093936.png

2.2 硬件规格

  • Nordic 高端系统级芯片 nRF52840

    • ARM® Cortex®-M4F 内核

    • 1MB FLASH,256kB RAM

    • 支持 Bluetooth 5Bluetooth MeshThreadIEEE 802.15.4ANT 等无线协议

    • 片上 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 引脚位置图

1588920928105074617.png

2.4 软件资源

nRF52840-MDK 支持多种软件框架及协议:

框架/协议 简介
nRF5 SDK Nordic 官方提供的 SDK
nRF5 SDK for Mesh Nordic 官方提供的低功耗蓝牙 Mesh 网络 SDK
OpenThread Nest 开源实现的 Thread® 网络协议
Arm Mbed OS Arm 开源的物联网实时操作系统
Zephyr Linux 基金会开源的物联网实时操作系统
Mynewt Apache 开源模块化的实时操作系统,专门为内存和存储都极其有限而又要以极低功耗运行非常长时间的物联网设备设计
Arm Mbed DAPLink Arm Mbed 针对 Arm Cortex 系列 CPU 开源 CMSIS-DAP 多功能调试器
Web Bluetooth 基于 Web 的低功耗蓝牙 API
iBeacon Apple 实现的 Beacon 协议
Eddystone Google 开源的 Beacon 协议

可以看到这个开发板支持Zephyr框架。

2.5 硬件资源

版本 设计文档
V1.0 nRF52840-MDK V1.0 Pinout Diagram
nRF52840-MDK V1.0 Schematic
nRF52840-MDK V1.0 Board File
nRF52840-MDK V1.0 3D STEP

遗憾的是这些资料都是指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 包管理器来安装构建工具:

  1. 按照官方指引安装 Chocolatey;

  2. 以管理员运行命令行工具(cmd.exe);

  3. 运行以下命令,在安装软件时可以无须确认:

    $ choco feature enable -n allowGlobalConfirmation
  4. 安装 Cmake:

    $ choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
  5. 安装其他必要工具:


    $ choco install git python ninja dtc-msys2 gperf doxygen.install

    6. (可选) 安装 pdf 文档生成工具:


    $ choco install strawberryperl miktex rsvg-convert
  6. 关闭 cmd.exe,以普通用户重新打开,并安装 Python 模块:

    $ cd ./zephyr
    $ pip3 install -r scripts/requirements.txt
  7. 下载并安装 GNU Arm Embedded Toolchain,可以按照到 c:\gnuarmemb

  8. 设置 Zephyr 环境变量:

    $ set ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb
    $ set GNUARMEMB_TOOLCHAIN_PATH=c:\gnuarmemb

3.3 编译运行第一个示例


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。