微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > console tty 串口

console tty 串口

时间:12-15 来源:互联网 点击:
ttp://blog.sina.com.cn/s/blog_6151984a0100ejfg.html
使用的命令:
tty 查看使用哪个终端
who 查看登入的用户
w查看登入的用户
echo "abc" >> /dev/pts/*
echo "123" >> /dev/ttyAMA0 不同终端之间信息的传递

当你运行一个程序的时候,此进程一定会对应一个终端,printf打印信息会在终端出现,而当程序进入内核态时(如调用驱动),printk打印信息会在内核终端出现(hisilicon机顶盒console=ttyAMA0=串口0)

在PC上console=tty0=tty1~6,/dev/tty=`tty`=本控制台
嵌入式机上console=ttyS0=串口

echo "haha" > /dev/console 输出到系统控制台(console=ttyS0,表示系统控制台是串口)
echo "haha" > /dev/tty和下面的相等
echo "haha" > `tty`输出到本控制台(tty命令就是输出本控制台)

console包括: tty和framebuffer

tty包括:ttys*、tty*和/dev/pts/*等(字符型)
framebuffer包括:LCD、VGA等等设备
============================================================================
1,串行端口终端
设备名称是/dev/ttySn(这里的n是数字0,1,2,3…..)
2,伪终端(PTY)
伪终端是指远程登录形成的终端,其控制台控制文件在目录/dev/pts下
命名从0,1,2,3,4……一直往后
你可以echo “OKOK” > /dev/pts/0看看效果
3,虚拟控制台(终端)
虚拟控制台是机器正常启动后自动启动的控制台
可以用Ctrl+Alt+F1到Ctrl+Alt+F6来切换(缺省只开6个虚拟控制台)
其设备控制文件分别为/dev/tty1、/dev/tty2、/dev/tty3、/dev/tty4、/dev/tty5和/dev/tty6
还有/dev/tty0是对应当前的虚拟控制台(终端)
4,/dev/tty
这个是指当前进程的控制终端
可以看做是到控制终端的链接
用tty命令可以看到当前这个shell的控制终端
5,/dev/console
这个是系统控制台
很多的系统信息会打到这里
一般情况下
/dev/console是指向/dev/tty0
============================================================================

(1)/dev/console是系统控制终端,系统的错误信息什么的都输出到这里。
(2)/dev/tty(n或者Sn)是进程控制台,如果在进程里打开一个这样的文件且该文件不是其他进程的控制终端时,
   那么该文件就是这个进程的控制终端。那么我们进程printf一个数据就是输出到这里.
(3)在本机上,用户可以使用alt+f1~fn切换控制台,看起来感觉存在多个屏幕,这种虚拟控制台对应tty1~n
  但实际上机器只有一个屏幕,也就是我们看到的这个屏幕,对应console。
  可以理解为console指向激活的那个tty(详细来说不是,tty0才是激活的那个tty,准确地说是激活的那个tty
  才将输出显示到console).
  历史上,console指主机本身的屏幕键盘,而tty指用电缆链接的其它位置的控制台(仅包含屏幕和键盘)

#include
  #include
  int main()
  {
int fd;
fd = open( "/dev/tty2 ", O_WRONLY | O_NOCTTY);
write(fd, "hello tty2", 10);
return 0;
  }

(4)

终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是 Teletype的缩写。
  Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是?),是由Teletype公司生产的。
  设备名放在特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:

  1.串行端口终端(/dev/ttySn)

  串行端口终端(SerialPortTerminal)是使用计算机串行端口连接的终端设备。
  计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,
  因为那时它的最大用途就是用来连接终端。
  这些串行端口所对应的设备名称是/dev/tts/0(或/dev /ttyS0)、/dev/tts/1(或/dev/ttyS1)等,
  设备号分别是(4,0)、(4,1)等,分别对应于DOS系统下的COM1、 COM2等。
  若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。
  例如,在命令行提示符下键入:
  echotest>/dev/ttyS1
  会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。

2.伪终端(/dev/pty/)

  伪终端(PseudoTerminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中
  分别是 /dev/pty/m3和/dev/pty/s3)。

  它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,
  则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3), 而ttyp3则是另一个程序用于读
  写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认
  为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。
  
  对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,
  则需要专门设计来使用ptyp3(m3)逻辑设备。
  例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备ptyp2(m2)
  上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。
  当telnet从远端获取了一个字符时,该字符就会通过m2、s2传递给 getty程序,而getty程序就会通过s2、m2
  和telnet程序往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。
  通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。
  
  3.控制终端(/dev/tty)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top