RT-Thread编程指南 要点摘录(九)——FinSH

——早期文档称其为 finsh,别和 finish搞混了——

目录

  • FinSH 控制台
    • FinSH 内置命令
    • 自定义 FinSH 命令
    • FinSH 功能配置
    • FinSH 移植
    • FinSH文件架构浅析

FinSH 控制台

FinSH 是 RT-Thread 的命令行组件(shell),提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息

shell指一种接受用户输入的命令,解释之后,传递给操作系统,并将操作系统执行的结果返回给用户的程序。由于这个程序像一层外壳包裹在操作系统的外面,所以它被称为 shell。
windows上的CMD可以认为就是一种shell。

用户在控制终端输入命令,控制终端通过串口、USB、网络等方式将命令传给设备里的 FinSH,FinSH会读取设备输入命令,解析并自动扫描内部函数表,寻找对应函数名,执行函数后输出回应,回应通过原路返回,将结果显示在控制终端上。

finsh支持两种输入模式:

  1. C语言解释器模式(c-style)
    finsh能够解析执行大部分C语言的表达式,并使用类似C语言的函数调用方式访问系统中的函数及全局变量,此外它也能够通过命令行方式创建变量。
  2. 传统命令行模式msh(module shell)
    finsh运行方式类似于dos/bash等传统shell。
    此模式被官方推荐

在C-Style 模式下FinSH 占用体积比较大,运行脚本或者程序时不太方便,而msh 模式体积小,使用方便,能够解决C-Style 模式下的弊端。
如果在 RT-Thread 中同时使能了这两种模式,那它们可以动态切换。

FinSH 内置命令

在 RT-Thread 中默认内置了一些 FinSH 命令,在 FinSH 中输入 help 后回车或者直接按下 Tab 键,就可以打印当前系统支持的所有命令。C-Style 和 msh 模式下的内置命令基本一致。

finSH支持TAB键自动补全,若已经输入部分字符时按下TAB键,将会查找匹配的命令,并自动补全,并可以继续输入,多次补全。
上下键可以回溯最近输入的历史命令,左右键可移动光标,退格键删除。

默认命令的数量不是固定的,RT-Thread的各个组件会向 FinSH 输出一些命令。

以 msh 为例:

RT-Thread shell commands:
version - show RT-Thread version information
list_thread - list thread
list_sem - list semaphore in system
list_event - list event in system
list_mutex - list mutex in system
list_mailbox - list mail box in system
list_msgqueue - list message queue in system
list_timer - list timer in system
list_device - list device in system
exit - return to RT-Thread shell mode.
help - RT-Thread shell help.
ps - List threads in the system.
time - Execute command with time.
free - Show the memory usage in the system.

自定义 FinSH 命令

待补充

FinSH 功能配置

FinSH 功能可以裁剪,宏配置选项在 rtconfig.h 文件中定义。

FinSH 移植

FinSH 源码位于 components/finsh 目录下。

FinSH 线程:

FinSH 的输出:
FinSH 的 输 出 依 赖 于 系 统 的 输 出, 在 RT-Thread 中 依 赖 rt_kprintf() 输 出。

FinSH 的输入

FinSH文件架构浅析

RT-Thread编程指南 要点摘录(九)——FinSH_第1张图片

finsh_token:token lex for finsh shell.
finsh_ops:operations for finsh shell. 
finsh_node:node routines for finsh shell.
finsh_heap_heap management in finsh shell.
finsh_var:Variable implementation in finsh shell. 
error number for finsh shell.

——待补充——

你可能感兴趣的:(RT-Thread)