Skip to content

Arm Mbed OS
Arm 开源、面向物联网小型设备的实时操作系统

简介

Arm Mbed OS 是 Arm 专门为物联网设备而设计的开源嵌入式操作系统,主要面向 ARM Cortex-M 系列微控制器,非常适合涉及智能城市、智能家庭和穿戴式设备等领域的应用程序。

相比于其他嵌入式操作系统,Arm Mbed OS 的主要优势在于:

  • 安全性:提供 mbed TLS 和 mbed uVisor 安全机制
  • 连接性:支持多种协议栈,包括 Bluetooth LE, Wi-Fi, 6LoWPAN, Thread, Lora等等
  • 完整的工具链支持:提供在线 IDE, mbed CLI 以及 第三方 IDE
  • 良好的社区生态

Info

Arm Mbed OS 已经获得 Thread 组件认证,可以使用 Thread 创建低功耗、基于 6LoWPAN 的 mesh 网络。

了解更多内容,可以直接访问 Mbed OS 开发者网站.

使用 Arm Mbed CLI

Arm 为 Mbed OS 提供了离线开发工具 Mbed CLI,该工具支持跨平台,可以运行在 Windows,Linux 和 macOS 平台上。

安装 Mbed CLI

在 Windows 上,最简单的方法是使用 Mbed CLI Windows .exe 安装包

在 Linux 和 macOS系统,可以使用 pip 进行安装:

$ pip install mbed-cli

安装完成后,可以使用 mbed help 验证是否正确安装。

设置开发环境

接着,需要添加工具链路径配置:

$ mbed config -G GCC_ARM_PATH "<path to GNU Arm bin>"
[mbed] <path to GNU Arm bin> now set as global GCC_ARM_PATH

$ mbed config --list
[mbed] Global config:
GCC_ARM_PATH=<path to GNU Arm bin>

编译运行第一个示例

现在可以开始尝试编译第一个示例,这里以 mbed-os-example-blinky 为例:

打开命令行终端,切换到示例目录:

$ cd ./nrf52840-mdk/examples/mbedos5/mbed-os-example-blinky/

添加 Mbed OS 库:

mbed-os-example-blinky$ mbed config root .
mbed-os-example-blinky$ mbed add https://github.com/makerdiary/mbed-os.git

使用 mbed compile 进行编译:

mbed-os-example-blinky$ mbed compile --target NRF52840_MDK --toolchain GCC_ARM --flash

增加 --flash 参数,将会在编译完成后自动将固件下载到 nRF52840-MDK 硬件上。

如果 mbed detect 无法检测到板子,可以运行以下命令添加:

$ mbedls --mock=1026:nRF52840_MDK

提示

你也可以参考前面的内容 “如何下载固件?” 下载固件。

观察运行结果:

低功耗蓝牙示例

Mbed OS 对低功耗蓝牙支持非常友好,这里提供一些低功耗蓝牙示例:

./nrf52840-mdk/examples/mbedos5/mbed-os-example-ble
├── BLE_BatteryLevel
├── BLE_Beacon
├── BLE_Button
├── BLE_EddystoneObserver
├── BLE_EddystoneService
├── BLE_GAPButton
├── BLE_HeartRate
├── BLE_LED
├── BLE_LEDBlinker
├── BLE_Thermometer
└── README.md

可以切换到示例目录,例如,BLE_BatteryLevel:

$ cd BLE_BatteryLevel

添加 Mbed OS 库:

BLE_BatteryLevel$ mbed add https://github.com/makerdiary/mbed-os.git

编译下载:

BLE_BatteryLevel$ mbed compile --target NRF52840_MDK --toolchain GCC_ARM --flash

打开 nRF Connect app,找到名为 BATTERY 的设备,连接设备,可发现 UUID 为 0x180F 的电池服务,该服务包含 UUID 为 0x2A19Battery level 属性。

其他低功耗蓝牙示例使用方法类似,你可以自行验证。

更多示例

我们还会不断增加一些新的示例到 nrf52840-mdk 仓库中,敬请关注!

参考资源

问题反馈

如果在开发过程遇到任何问题,可以通过 GitHub Issue 寻求解决。

Comments