首先RTthread中,console控制台是绑定串口硬件Tx上,但是一般在控制台中是不需要Rx接收数据使用的。
在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();
MSH_CMD_EXPORT - FinSH动态加载自定义命令
void my_hello(void)
{
rt_kprintf("hello RT-Thread!\n");
}
MSH_CMD_EXPORT(my_hello , say hello to RT-Thread);