Subsys: Shell Module¶
1 功能概述¶
Zephyr 提供了一个 Shell 命令行 子系统(Shell Subsystem),支持远端通过 UART、RTT、Telnet 等方式与其交互。
本例程使用 UART Shell,演示在 Zephyr Shell 子系统中添加自定义的模块命令。
2 环境要求¶
Board: pan108xxa1_evb / pan108xxa3_evb / pan108xxb1_evb / pan108xxb5_evb
UART: 将 P00 与 TX0 引脚接在一起,P01 与 RX0 引脚接在一起,在 PC 上打开终端工具(如 SecureCRT),波特率设置为 921600
3 编译和烧录¶
例程位置:zephyr\samples_panchip\subsys\shell\module
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
4 演示说明¶
程序下载后,在终端工具(SecureCRT)中可以看到如下界面:
注:由于 Shell 的回显功能默认被配置为打开,因此为提升 Shell 使用体验,最好将终端工具(SecureCRT)中的“本地回显”功能关闭,以防止输入的字符再回显到界面上导致出现字符重复。
Zephyr Shell 界面操作逻辑基本与 Linux Shell 一致,在 PC 上按 TAB 键,即可查看此例程支持的所有顶层 shell 命令:
输入
help
指令并回车,可以查看各命令的基本介绍:以
demo
命令为例,此命令下面包含数个自定义子命令,这些命令都是在 Zephyr App 层实现的,其功能介绍如下:注:各个子命令实现的具体功能请参考例程中的对应代码。
5 开发说明¶
本例程不仅使能了 Zephyr Shell 机制,还用到了 Zephyr 中的其他功能,因此需要打开的 Kconfig 较多:
CONFIG_SHELL=y CONFIG_LOG=y CONFIG_INIT_STACKS=y CONFIG_THREAD_STACK_INFO=y CONFIG_KERNEL_SHELL=y CONFIG_THREAD_MONITOR=y CONFIG_THREAD_NAME=y CONFIG_DEVICE_SHELL=y CONFIG_POSIX_CLOCK=y CONFIG_DATE_SHELL=y CONFIG_THREAD_RUNTIME_STATS=y CONFIG_THREAD_RUNTIME_STATS_USE_TIMING_FUNCTIONS=y
本例程除了默认的
prj.conf
外,还提供了其他配置文件用于演示 Shell 相关的其他特性:prj_getopt.conf
:演示 Shell getopt 接口特性prj_login.conf
:演示 Shell 登录密码特性prj_minimal.conf
:演示 Shell 最小系统特性,移除了一些 Shell 高级特性,以便当存储资源紧缺的时候仍可使用 Shell 框架prj_minimal_rtt.conf
:演示 Shell 最小系统,但交互方式由 UART 改为 Segger RTT
Shell 相关的主要接口定义及介绍请参考:
zephyr\include\shell\shell.h
Shell 机制的详细信息请参考相关源码:
zephyr\subsys\shell
6 RAM/Flash资源使用情况¶
Memory region Used Size Region Size %age Used
FLASH: 27944 B 384 KB 7.11%
SRAM: 9528 B 64 KB 14.54%