finsh是RT-Thread的命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于调试、查看系统信息。在大部分嵌入式系统中,一般开发调试都使用硬件调试器和printf日志打印,在有些情况下,这两种方式并不是那么好用。比如对于RT-Thread这个多线程系统,我们想知道某个时刻系统中的线程运行状态、手动控制系统状态。如果有一个shell,就可以输入命令,直接相应的函数执行获得需要的信息,或者控制程序的行为。这无疑会十分方便。
finsh支持两种模式:
1. C语言解释器模式, 为行文方便称之为c-style;
2. 传统命令行模式,此模式又称为msh(module shell)。C语言表达式解释模式下, finsh能够解析执行大部分C语言的表达式,并使用类似C语言的函数调用方式访问系统中的函数及全局变量,此外它也能够通过命令行方式创建变量。在msh模式下,finsh运行方式类似于dos/bash等传统shell。
大致工作流程
一、finsh组件初始化函数finsh_system_init(),并且添加了INIT_COMPONENT_EXPORT(finsh_system_init),支持组件初始化;
这个函数会初始化finsh组件,包括一些finsh变量以及相关数据结构。
然后它会创建一个线程,代码如下:
可以看到,线程函数是finsh_thread_entry,在下一节中我们将分析它具体工作流程。
二、void finsh_set_device(const char* device_name)函数为finsh设置终端设备,在stm32中主要设置串口设备为终端。该函数一般放在组件初始化函数rt_component_init()后面,因为要先完成finsh组件初始化才能设置终端设备。
-
嵌入式系统
+关注
关注
41文章
3634浏览量
129841 -
组件
+关注
关注
1文章
520浏览量
17964
原文标题:RT-Thread finsh组件工作流程
文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
RT-Thread学习笔记和finsh shell配置方法
在 RT-Thread Studio 上使用 RT-Thread Nano
【每日一练】RT-Thread Nano-Finsh组件支持(第四节学习视频)
RT-Thread FinSH 控制台
RT-Thread的FinSH命令行组件原理是什么
RT-Thread FinSH命令行组件导出自定义msh命令
RT-Thread 应用笔记 - RTC Alarm 组件的使用
![<b class='flag-5'>RT-Thread</b> 应用笔记 - RTC Alarm <b class='flag-5'>组件</b>的使用](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论