RT-Thread finsh组件工作流程详解

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组件初始化才能设置终端设备。

2018年全年可穿戴设备出货量达1.722亿台 苹果占据整个市场26.8%的领先地位
荣耀V20的游戏体验如何
华为nova5i全面评测 产品优劣让市场来定夺
远程支持助力危险区域应用的数字化转型
Linux内存的分配管理与内存回收基本框架
RT-Thread finsh组件工作流程详解
高通扩展骁龙计算生态系统_富昌电子推介日亚LED产品组合
对目前嵌入式产业现状、趋势及机遇进行了深入的交流
NAND Flash价格综合季跌幅近20% 第二季或有扭转
IDT推出业界首款高性能中继器,专为6G SAS/SATA优
化工厂环境监测系统参数
Achronix半导体全面对接Speedcore eFPGA技术
五个有趣的实用光电管应用电路分享
磁环电感是什么呢?主要起什么作用?
区块链真的可以信任吗
5G的“扬帆起航”与商用的五个要素紧密相连
一台机实现呼吸和爆破双重测试,JCGK助力新能源电池检测升级
华为与三家韩国企业签署了谅解备忘录共同建设良好的5G生态系统
SOLIDWORKS 2023主要增强的内容
智能型电导率传感器的优势及技术参数