MCUmgr
概述
管理子系统允许对支持 Zephyr 的设备进行远程管理。可用的管理操作如下:
管理子系统基于 MCUmgr 提供的简单管理协议(SMP),该项目是一个开源项目,提供可移植到多个实时操作系统的管理子系统。
管理子系统位于 Zephyr 树内的 subsys/mgmt/ 中。
此外,还有一个 示例 服务器,可通过 Bluetooth LE 和串行接口提供管理功能。
支持的传输
MCUmgr 支持 Zephyr 树内多种传输方式,其他传输方式可以添加并提交到上游,或者在下游项目中以树外方式使用,而不需要 fork Zephyr 仓库。
Zephyr 支持以下传输方式:
名称 |
Kconfig 选项 |
额外详细信息 |
模式支持 |
|||
|---|---|---|---|---|---|---|
服务器 |
客户端 |
传入 |
传出 |
|||
UART |
✓ |
✓ |
✓ |
|||
Raw UART |
✓ |
✓ |
✓ |
|||
Shell |
✓ |
✓ |
✕ |
|||
蓝牙 |
✓ |
✓ |
✓ |
|||
UDP (IPv4) |
|
可选的 DTLS 支持 |
✓ |
✕ |
✕ |
|
UDP (IPv6) |
|
可选的 DTLS 支持 |
✓ |
✕ |
✕ |
|
LoRaWAN |
✓ |
✕ |
✕ |
|||
SPI |
✓ |
✕ |
✕ |
|||
以下内容专为测试用途设计: |
||||||
Dummy |
虚拟 |
✓ |
✓ |
✓ |
||
Raw Dummy |
✓ |
✓ |
✓ |
|||
工具/库
有多种工具和库可用于在设备上使用 MCUmgr 功能,下面列出了这些工具和库。请注意,这些工具并非 Zephyr 项目的一部分,也与 Zephyr 项目无关。
名称 |
操作系统支持 |
传输 |
组 |
类型 |
语言 |
许可证 |
|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows |
Linux |
mac |
移动 |
嵌入式 |
串行接口 |
Serial (raw) |
蓝牙 |
UDP |
LoRaWAN |
SPI |
OS |
IMG |
Stat |
Settings |
FS |
Shell |
Enum |
Transport |
Zephyr |
||||
✓ |
✓ |
✓ |
✕ |
✕ |
✓ |
✓ |
✓ |
✓ |
✓ |
✕ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✕ |
✓ |
应用程序 |
C++ (Qt) |
GPL-3.0 |
|
✓ |
✓ |
✓ |
✕ |
✕ |
✓ |
✕ |
✕ |
✓ |
✕ |
✕ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✕ |
✕ |
✕ |
应用程序 |
Rust |
Apache-2.0 |
|
✓ |
✓ |
✓ |
✕ |
✕ |
✕ |
✕ |
✓ |
✕ |
✕ |
✕ |
✕ |
✓ |
✕ |
✕ |
✕ |
✕ |
✕ |
✕ |
✕ |
网页(仅 Chrome) |
Javascript |
MIT |
|
✕ |
✕ |
✓ |
✕ |
✕ |
✕ |
✕ |
✓ |
✕ |
✕ |
✕ |
✓ |
✓ |
✕ |
✕ |
✕ |
✕ |
✕ |
✕ |
✕ |
应用程序 |
Rust |
MIT |
|
✕ |
✕ |
✕ |
✓ |
✕ |
✕ |
✕ |
✓ |
✕ |
✕ |
✕ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✕ |
✕ |
✓ |
库和应用程序 |
Java、Kotlin、Swift |
Apache-2.0 |
|
✓ |
✓ |
✓ |
✓ |
✕ |
不适用 |
不适用 |
不适用 |
不适用 |
不适用 |
不适用 |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✕ |
✓ |
库 |
Python |
Apache-2.0 |
|
✓ |
✓ |
✓ |
✕ |
✕ |
✓ |
✕ |
✓ |
✓ |
✕ |
✕ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✕ |
✓ |
库 |
Python |
Apache-2.0 |
|
✓ |
✓ |
✓ |
✕ |
✕ |
✓ |
✕ |
✓ |
✓ |
✕ |
✕ |
✓ |
✓ |
✓ |
✕ |
✓ |
✓ |
✓ |
✕ |
✕ |
应用程序 |
Python |
Apache-2.0 |
|
mcumgr-toolkit |
✓ |
✓ |
✓ |
✕ |
✕ |
✓ |
✕ |
✓ |
✓ |
✕ |
✕ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✕ |
✓ |
库和应用程序 |
Rust、Python |
Apache-2.0 |
Zephyr MCUmgr 客户端(树内) |
✕ |
✓ |
✕ |
✕ |
✓ |
✓ |
✓ |
✕ |
✕ |
✕ |
✕ |
✓ |
✓ |
✕ |
✕ |
✕ |
✕ |
✕ |
✕ |
✕ |
库 |
C |
Apache-2.0 |
请注意,某个组旁的勾号表示代码中对组提供基本支持,实现可能并不支持组的所有命令/功能。
J-Link 虚拟 MSD 交互说明
在存在同时支持 CDC 和 MSC(虚拟大容量存储设备,也称为拖放)的 J-Link OB 的板卡上,由于 J-Link 固件中 USB 端点的配置方式(例如在 nRF52840 DK 板卡上),MSD 功能可能会因限制最大数据包大小(在使用映像管理命令更新固件时最有可能发生)而阻止通过 CDC UART 端口执行的 MCUmgr 命令正常工作。可以通过在 J-Link 设备上禁用 MSD 功能来解决此问题,请按照 禁用大容量存储设备功能 上的说明禁用 MSD 支持。
引导加载程序集成
设备固件升级 子系统将管理子系统与引导加载程序集成,提供向设备发送并升级 Zephyr 映像的能力。
目前仅支持 MCUboot 引导加载程序。有关更多信息,请参阅 MCUboot。
Discord 频道
欢迎开发者!
Discord mcumgr 频道:https://discord.com/invite/Ck7jw53nU2