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 演示说明¶
程序下载后,在终端工具(SecureCRT)中可以看到如下界面:
注:由于 Shell 的回显功能默认被配置为打开,因此为提升 Shell 使用体验,最好将终端工具(SecureCRT)中的“本地回显”功能关闭,以防止输入的字符再回显到界面上导致出现字符重复。
Zephyr Shell 界面操作逻辑基本与 Linux Shell 一致,在 PC 上按 TAB 键,即可查看 zephyr 默认支持的所有顶层 shell 命令:
输入
help
指令并回车,可以查看各命令的基本介绍:以
devmem
命令为例,此命令的功能是读写 SoC 任意 RAM 地址内容:确定一个本例程未使用到的 SRAM 地址,如
0x20008000
输入命令
devmem 0x20008000
并回车,可以看到读出的值为随机值:输入命令
devmem load 0x20008000
并回车,可以看到等待用户输入数据的界面:输入数据
11223344
,完成后按照提示分别按ctrl + x
和ctrl + q
退出数据输入模式,可以看到成功检测到了 4 字节的数据输入(0x11223344):重新输入命令
devmem 0x20008000
并回车,可以看到读出的值已经更新为上一步写入的值(0x11223344):
5 开发说明¶
使能 Zephyr Shell 机制,需要打开
CONFIG_SHELL=y
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%