FinSH,类似于linux的shell,对于调试阶段还是很有用的,可以在完成整个程序时再关上,就是了。
常用的就是msh()模式,即shell模式,另一个C-Style模式,类似于调用C函数名的方式,不常用。
Fish的执行过程:

1、每次命令的执行都是在FinSH(tshell线程)的上下文中完成的。
在rtconfig.h中#define RT_USING_FINSH,即可以初始化FinSH线程,通过函数finsh_system_init() 完成。追踪下此函数可以发现,在shell.c文件下。并且是通过INIT_APP_EXPORT(finsh_system_init);这种自动初始化机制来调用的。
注:
这些自动初始化的函数,何时被调用呢?
从内核的启动流程上看,主要是通过rt_components_board_init()和rt_componets_init()来调用。

其中rt_hw_board_init()下rt_componets_init()这个函数会遍历所有INIT_BOARD_EXPORT声明的函数。默认只开启了串口和Pin设备。
rt_comonents_init()是在componets.c文件下void main_thread_entry(void *parameter),main线程启动时调用。
在rtdef.h中定义了6种的自动初始化类型:

本文详细介绍了FinSH在实时操作系统中的使用,包括其初始化过程、命令输入实现及线程处理方式。FinSH类似Linux shell,对调试阶段非常有用,可在程序完成时关闭。文章深入解析了FinSH线程的创建、字符接收及信号量等待机制,以及如何通过串口工具实现交互。
最低0.47元/天 解锁文章
1763





