在FinSH shell中,FinSH 对命令数据的输入和输出,全部都是依赖控制台console的串口外设来实现的:

(1)FinSH msh命令行中,对命令行输入的数据是依赖控制台console的串口Rx接收完成的。(2)FinSH msh命令行中,对输入的命令遍历完命令函数处理完后,将输出信息再回显到终端上是依赖控制台console的串口Tx,因为命令函数内部会调用console的rt_kprintf()接口将Tx数据回显到控制台终端。

总结:FinSH的输入和输出,完全依赖控制台console的串口Tx和Rx。

代码分析,两个重要函数:

rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
finsh_system_init();

FinSH 线程在函数 finsh_system_init() 函数中被创建,它将一直等待 rx_sem 信号量。

finsh_thread_entry(void *parameter)是Finsh线程的入口函数。

MSH_CMD_EXPORT  - FinSH动态加载自定义命令

void my_hello(void)
{
    rt_kprintf("hello RT-Thread!\n");
}

MSH_CMD_EXPORT(my_hello , say hello to RT-Thread);

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐