RTT之FinSH组件添加(含启动流程分析)

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

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种的自动初始化类型:

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值