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

Subsys: Shell Device Memory Load

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\devmem_load

使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍

4 演示说明

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

    image

    UART Shell 初始界面

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

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

    image

    UART Shell 默认命令列表

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

    image

    UART Shell 默认命令功能介绍

  4. devmem 命令为例,此命令的功能是读写 SoC 任意 RAM 地址内容:

    1. 确定一个本例程未使用到的 SRAM 地址,如 0x20008000

    2. 输入命令 devmem 0x20008000 并回车,可以看到读出的值为随机值:

      image

      执行 devmem 命令

    3. 输入命令 devmem load 0x20008000 并回车,可以看到等待用户输入数据的界面:

      image

      执行 devmem load 命令并等待用户输入

    4. 输入数据 11223344,完成后按照提示分别按 ctrl + xctrl + q 退出数据输入模式,可以看到成功检测到了 4 字节的数据输入(0x11223344):

      image

      重新执行 devmem 命令

    5. 重新输入命令 devmem 0x20008000 并回车,可以看到读出的值已经更新为上一步写入的值(0x11223344):

      image

      devmem load 命令用户输入完成

5 开发说明

  1. 使能 Zephyr Shell 机制,需要打开 CONFIG_SHELL=y

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

6 RAM/Flash资源使用情况

Memory region         Used Size  Region Size  %age Used
FLASH:       36572 B       384 KB      9.30%
SRAM:        9560 B        64 KB     14.59%