外观
控制台示例
2026-05-15
概述
本文介绍如何在 睿擎工业开发平台 中创建并运行 FinSH 控制台(MSH) 自定义命令 示例工程。通过定义一个支持参数解析的 msh_example 函数并将其导出至 FinSH 控制台(MSH),实现了通过串口终端与系统进行简单的命令行交互。代码展示了如何处理不同输入参数并根据命令执行对应的逻辑分支,帮助读者快速掌握在睿擎平台下开发自定义控制台命令的方法。
控制台简介
FinSH 控制台(MSH)是一种强大的命令行交互接口,用于在嵌入式系统中直接与内核和应用程序进行交互。它允许开发者通过串口终端输入命令,实时调用函数、查询系统状态或执行调试操作,极大地提高了开发调试与系统维护的效率。
构建与烧录
创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化驱动

固化 APP

核心代码
msh_example.c
static void _usage(char *func_name)
{
rt_kprintf("usage: %s test1|test2|option value\n", func_name);
rt_kprintf(" %s -h\n", func_name);
rt_kprintf("\n");
rt_kprintf(" test1 Execute test 1\n");
rt_kprintf(" test2 Execute test 2\n");
rt_kprintf(" option Print option\n");
rt_kprintf(" value Print option value\n");
rt_kprintf("\n");
}
int msh_example(int argc, char **argv)
{
const char *cmd = argv[1];
if (argc < 2)
{
_usage(__func__);
return;
}
if (rt_strcmp(cmd, "test1") == 0)
{
rt_kprintf("Executing Test 1...");
rt_kprintf("\n");
}
else if (rt_strcmp(cmd, "test2") == 0)
{
rt_kprintf("Executing Test 2...");
rt_kprintf("\n");
}
else if (rt_strcmp(cmd, "option") == 0)
{
if (argc < 3)
{
rt_kprintf("Error: option requires a value.");
rt_kprintf("\n");
}
rt_kprintf("Option value: %s\n", argv[2]);
rt_kprintf("\n");
}
return 0;
}运行示例
操作步骤
- 将程序下载到开发板
- 打开串口终端连接开发板
- 输入
msh_example test1命令 - 输入
msh_example test2命令 - 输入
msh_example option命令 - 输入
msh_example option hello命令
预期结果
- MSH 通过参数
argc和argv解析用户在命令行输入的指令与参数 - 用户输入 test1 或 test2 时,程序识别子命令并执行相应的测试打印
- 当输入 option 时,程序检查参数个数并打印其携带的具体数值
- 最终若无参数或输入不匹配,程序通过 _usage 函数输出该命令的使用帮助信息
RT-Thread 终端
msh />msh_example test1
Executing Test 1...
msh />msh_example test2
Executing Test 2...
msh />msh_example option
Error: option requires a value.
msh />msh_example option hello
Option value: hello