admin 2025-07-07
77
区分不同的终端类型
伪终端(/dev/pty/)
伪终端`/dev/pts`是远程登陆(telnet,ssh等)后创建的控制台设备文件所在的目录。
由于可能有好几千个用户登陆,所以`/dev/pts`其实是动态生成的,不象其他设备文件是构建系统时就已经产生的硬盘节点(如果未使用devfs)。
第一个用户登陆,console的设备文件为`/dev/pts/0`,第二个为`/dev/pts/1`,以此类推。这里的0、1、2、3不是具体的标准输入或输出,而是整个控制台。你可尝试`echo"aaaaaa"/dev/pts0、1、2……`。
控制台终端(/dev/ttyn,/dev/console)
控制台终端`/dev/ttyn`n(0到6),tty1,tty2就是不同的虚拟终端(virtualconsole).
`/dev/console`就是tty0,tty0则是当前所使用虚拟终端即激活的虚拟终端的一个别名,系统所产生的信息会发送到该终端上,实际上机器只有一个屏幕,也就是我们看到的这个屏幕,可以理解为console指向激活的那个tty,准确地说是激活的那个tty才将输出显示到console。
历史上,console指主机本身的屏幕键盘,而tty指用电缆链接的其它位置的控制台(仅包含屏幕和键盘)。tty0是系统自动打开的,但不用于用户登录。
ttycore
ttycore主要实现如下三类功能:
-将串口设备有关的物理对象(及其操作方法)封装成一个一个的数据结构,以达到用软件语言描述硬件的目的。
-向底层driver提供串口驱动的编程接口。
-基于TTYframework所提供的TTYdriver的编写规则,将底层driver看到的serialdriver,转换为TTYdriver,并将所有的serial操作,转换为对应的tty操作。
串口硬件驱动层
这个层次主要负责和具体的串口硬件进行通信,实现了对硬件的控制和访问。在内核中,串口驱动模块通常被实现为字符设备,通过字符设备接口与串口核心模块进行交互。它通过注册到串口核心层,实现了对上层的透明。
小结
`ttycore`和串口硬件驱动层是串口驱动框架的核心部分。在使用串口设备时,用户通常只需要与`ttycore`模块进行交互,而不需要直接操作串口驱动模块和平台驱动模块。下一节我们将深入到串口驱动内部分析`ttycore`的框架体系结构。
本文参考