RT-Thread API参考手册  3.1.1
嵌入式实时操作系统
FinSH控制台

FinSH控制台接口 更多...

宏定义

#define FINSH_FUNCTION_EXPORT(name, desc)   FINSH_FUNCTION_EXPORT_CMD(name, name, desc)
 自定义msh 命令 更多...
 
#define FINSH_FUNCTION_EXPORT_ALIAS(name, alias, desc)   FINSH_FUNCTION_EXPORT_CMD(name, alias, desc)
 自定义命令重命名 更多...
 
#define MSH_CMD_EXPORT(command, desc)
 自定义C-Style 命令和变量 更多...
 

函数

void finsh_syscall_append (const char *name, syscall_func func)
 添加调用函数 更多...
 
void finsh_sysvar_append (const char *name, uint8_t type, void *addr)
 添加环境变量 更多...
 
rt_uint32_t finsh_get_prompt_mode (void)
 
void finsh_set_prompt_mode (rt_uint32_t prompt_mode)
 
void finsh_set_device (const char *device_name)
 设置finsh shell的输入设备 更多...
 
const char * finsh_get_device ()
 获取finsh shell的输入设备 更多...
 
void finsh_set_echo (rt_uint32_t echo)
 设置回显模式 更多...
 
rt_uint32_t finsh_get_echo ()
 获取回显模式 更多...
 

详细描述

FinSH控制台接口

FinSH是RT-Thread的命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于调试或查看系统信息。FinSH支持两种模式:

  1. C语言解释器模式,为行文方便称之为c-style;
  2. 传统命令行模式,此模式又称为msh(module shell)。

C语言表达式解释模式下,FinSH能够解析执行大部分C语言的表达式,并使用类似C语言的函数调用方式访问系统中的函数及全局变量,此外它也能够通过命令行方式创建变量。

在msh模式下,FinSH运行方式类似于dos/bash等传统shell。

在本章的最后一节宏选项中介绍如何配置FinSH,读者可以根据自己的喜好配置FinSH。

宏定义说明

#define FINSH_FUNCTION_EXPORT (   name,
  desc 
)    FINSH_FUNCTION_EXPORT_CMD(name, name, desc)

自定义msh 命令

自定义的msh 命令,可以在msh 模式下被运行,将一个命令导出到msh 模式可以使用如下宏该接口。

参数
name要导出的命令
desc导出命令的描述
#define FINSH_FUNCTION_EXPORT_ALIAS (   name,
  alias,
  desc 
)    FINSH_FUNCTION_EXPORT_CMD(name, alias, desc)

自定义命令重命名

FinSH 的函数名字长度有一定限制,它由finsh.h 中的宏定义FinSH_NAME_MAX 控制,默认 是16 字节,这意味着FinSH 命令长度不会超过16 字节。这里有个潜在的问题。当一个函数名长 度超过FinSH_NAME_MAX 时,使用FinSH_FUNCTION_EXPORT 导出这个函数到命令表中后, 在FinSH 符号表中看到完整的函数名,但是完整输入执行会出现null node 错误。这是因为虽然显 示了完整的函数名,但是实际上FinSH 中却保存了前16 字节作为命令,过多的输入会导致无法正 确找到命令,这时就可以使用FinSH_FUNCTION_EXPORT_ALIAS 来对导出的命令进行重命名。

参数
name要导出的命令
alias导出到FinSH 时显示的名字
desc导出命令的描述

函数说明

void finsh_syscall_append ( const char *  name,
syscall_func  func 
)

添加调用函数

该函数将添加一个系统调用到FinSH的运行环境中去。

参数
name系统调用的名称
func系统调用的函数指针
void finsh_sysvar_append ( const char *  name,
uint8_t  type,
void *  addr 
)

添加环境变量

该函数将添加一个系统变量到FinSH的运行环境中去。

参数
name系统变量的名称
type系统变量的数据类型
addr系统变量的地址
rt_uint32_t finsh_get_prompt_mode ( void  )

调用此函数可以获取finsh shell的提示模式。

返回
prompt提示模式,0禁用提示模式,其他值启用提示模式。
void finsh_set_prompt_mode ( rt_uint32_t  prompt_mode)

可以通过调用此函数设置finsh shell的提示模式。

参数0禁用提示模式,其他值启用提示模式。

参数
prompt_mode提示模式
void finsh_set_device ( const char *  device_name)

设置finsh shell的输入设备

参数
device_name新的输入设备的名称
const char* finsh_get_device ( void  )

获取finsh shell的输入设备

该函数将返回当前finsh shell所使用的输入设备。

返回
返回当前finsh shell的输入设备名称
void finsh_set_echo ( rt_uint32_t  echo)

设置回显模式

该函数可以设置finsh shell的回显模式。

FINSH_OPTION_ECHO=0x01 时为回显模式, 其他值为不回显模式。

参数
echo回显模式
rt_uint32_t finsh_get_echo ( void  )

获取回显模式

该函数可以获取finsh shell是否工作在回显模式。

返回
回显模式参数值