标题
- PC用串口连接开发板进行通讯的底层原理
- pc端的命令窗口为什么可以看到字符?
- 为什么按下回车后,就有目录信息的显示?
PC用串口连接开发板进行通讯的底层原理
小编我开始往驱动开发方向转了,最近在学b站韦东山老师的驱动开发入门课程,学到了串口通讯的底层原理,非常有意思,和大家分享下。
当我们在pc机上的端口命令界面输入“ls 回车”后,为什么我在pc的端的界面可以看到字符?为什么按下回车后,就有目录信息的显示?硬件和软件是如何帮我们实现的呢?
来,听我给你们分析。
pc端的命令窗口为什么可以看到字符?
当我们输入一个“l”字符时,命令窗口会立刻显示“l”。
硬件和软件是如何帮我们实现的呢?如图
以下是上图的详细描述
- 键盘键入一个“l”字符后,就被键盘驱动传到了pc端的上层APP串口登录软件,串口登录软件将该字符再传给pc的串口驱动,串口驱动通过串口将字符传递给了开发板。
- 开发板通过串口收到了字符“l”,然后传递给串口驱动,串口驱动再发给行规程(line discipline)。行规程对其进行初步处理后(会有一个缓冲区存储发来的字符),发现是一个普通的字符就回显给pc。于是字符“l”就从行规程传递到了串口驱动,再到串口,再到PC的串口。
- PC的串口收到“l”后,就传给串口驱动,串口驱动将其传回到串口登录软件。串口登录软件将接收到的字符“l”添加到命令窗口对应的文件中,然后再将文件的数据传给显示驱动,显示驱动再将数据传给显示屏,完结。
如果传输字符“s”也是一样的。此时如果我键入一个控制符,如“BS”退格符会怎么样呢?
- 过程和键入普通字符是一样的,但需要注意的是。当“BS”传入到开发板的行规程时,会删除掉行规程缓冲区中的上一个字符。并且“BS”不会保存在行规程中,然后行规程会将“BS”通过串口驱动、串口传回到PC中。
- 当“BS”传到串口登录软件时,串口登录软件会将命令串口对应的文件中的对应位置的字符删除掉,然后将文件的数据传给显示驱动。
为什么按下回车后,就有目录信息的显示?
按下回车后,即键入“CR”符。该控制符和前面论述的“BS”符的流程大致一样,但也有区别。
- 当“CR”符传到开发板系统的行规程时,先是被串口驱动传回到PC中,同时被判断为要执行缓冲区中的命令,缓冲区中的字符串被上传到了开发板的上层应用软件shell中,shell对命令进行解释并且执行后,会得到相应的目录信息结果。
- 此时shell会将这些目录信息字符串传给行规程,行规程就将受到的字符串逐个字符地传给PC。最终,我们在pc中就可以看到目录信息了。