【Zephyr 系列 27】自定义 Shell 命令框架:打造自己的控制台命令系统
🧭 为什么要设计自定义 Shell 命令框架?
Zephyr 提供了一个强大的 shell 模块,用于在串口控制台下执行调试命令。但项目开发中常遇到:
-
默认 shell 命令与业务无关,不满足定制需求
-
想通过 shell 快速查看系统状态、内存、日志、传感器值等
-
希望自定义模块能注册子命令,如
sensor get
、ble scan
-
希望通过 shell 脚本测试外设、网络或 BLE
本章将介绍如何打造一个模块化、自定义扩展能力强、适配多 MCU 的 shell 命令系统。
🔧 Zephyr Shell 基础知识
启用配置:
CONFIG_SHELL=y
CONFIG_UART_CONSOLE=y
CONFIG_SHELL_BACKEND_SERIAL=y
连接串口后出现提示符:
uart:~$
输入 help
可列出命令,默认包含 kernel、device、uptime 等。
🧩 模块 1:命令注册机制
使用 SHELL_CMD_REGISTER()
宏注册命令:
static int cmd_version(const struct s