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支持两种模式:
- C语言解释器模式,为行文方便称之为c-style;
- 传统命令行模式,此模式又称为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 导出命令的描述
#define MSH_CMD_EXPORT | ( | command, | |
desc | |||
) |
自定义C-Style 命令和变量
该接口可以将自定义命令导出到C-Style 模式。
- 参数
command 要导出的命令 desc 导出命令的描述
- 示例:
- adc_vol_sample.c, dynmem_sample.c, event_sample.c, httpclient_sample.c, hwtimer_sample.c, i2c_aht10_sample.c, idlehook_sample.c, interrupt_sample.c, iwdg_sample.c, led_blink_sample.c, mailbox_sample.c, memp_sample.c, mkdir_sample.c, msgq_sample.c, mutex_sample.c, opendir_sample.c, pin_beep_sample.c, priority_inversion.c, producer_consumer.c, pwm_led_sample.c, readdir_sample.c, readwrite_sample.c, rename_sample.c, rtc_sample.c, scheduler_hook.c, sd_sample.c, semaphore_sample.c, signal_sample.c, spi_w25q_sample.c, stat_sample.c, tcpclient_sample.c, tcpclient_select_sample.c, tcpserver_sample.c, tell_seek_dir_sample.c, thread_sample.c, timer_sample.c, timeslice_sample.c, uart_sample.c, udpclient_sample.c , 以及 udpserver_sample.c.
函数说明
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是否工作在回显模式。
- 返回
- 回显模式参数值