当前文档版本为 v1.2.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

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 演示说明

  1. 程序下载后,在终端工具(SecureCRT)中可以看到如下界面:

    image

    UART Shell 初始界面

    注:由于 Shell 的回显功能默认被配置为打开,因此为提升 Shell 使用体验,最好将终端工具(SecureCRT)中的“本地回显”功能关闭,以防止输入的字符再回显到界面上导致出现字符重复。

  2. Zephyr Shell 界面操作逻辑基本与 Linux Shell 一致,在 PC 上按 TAB 键,即可查看此例程支持的所有顶层 shell 命令:

    image

    UART Shell Module 命令列表

  3. 输入 help 指令并回车,可以查看各命令的基本介绍:

    image

    UART Shell Module 命令功能介绍

  4. demo 命令为例,此命令下面包含数个自定义子命令,这些命令都是在 Zephyr App 层实现的,其功能介绍如下:

    image

    UART Shell Module Demo 子命令功能介绍

    注:各个子命令实现的具体功能请参考例程中的对应代码。

5 开发说明

  1. 本例程不仅使能了 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
    
  2. 本例程除了默认的 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

  3. Shell 相关的主要接口定义及介绍请参考:zephyr\include\shell\shell.h

  4. Shell 机制的详细信息请参考相关源码:zephyr\subsys\shell

6 RAM/Flash资源使用情况

Memory region         Used Size  Region Size  %age Used
FLASH:       27988 B       384 KB      7.12%
SRAM:        9528 B        64 KB     14.54%