Por que eu tenho / dev / ttyS * no Linux quando meu laptop não tem porta serial / RS232 / COM1?

2

Estou executando o Debian Wheezy e meu laptop não tem porta serial. Por que eu tenho /dev/ttyS* e o que acontecerá quando eu tentar ler / escrever para eles?

Minha configuração:

└──> ll /dev/ttyS*
crw-rw---T 1 root dialout 4, 64 Apr 30 09:21 /dev/ttyS0
crw-rw---T 1 root dialout 4, 65 Apr 30 09:21 /dev/ttyS1
crw-rw---T 1 root dialout 4, 66 Apr 30 09:21 /dev/ttyS2
crw-rw---T 1 root dialout 4, 67 Apr 30 09:21 /dev/ttyS3

└──> sudo cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:unknown port:000002F8 irq:3
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3

└──> stty -g
6d02:5:4bf:8a3b:3:1c:7f:15:4:0:1:ff:11:13:1a:ff:12:f:17:16:ff:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

└──> dmesg | grep tty
[    0.000000] console [tty0] enabled
[    0.653544] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    0.712718] 00:02: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

PS: Aqui é mencionado caso quando o usuário tem uma porta e sob / dev ele tem 4, mas eu não tenho nenhum.

    
por Wakan Tanka 30.04.2015 / 21:54

2 respostas

4

É muito provável que a porta ttyS0 realmente exista na sua placa-mãe. E muito possivelmente há também um conector na placa-mãe para usá-lo também! Quando comprei minha última placa, cheguei a essa conclusão também (ao ver a porta listada), procurei todos os conectores no manual da placa. Não havia conector direto para o exterior, apenas um pequeno "cabeçalho". Então eu corri um cabo para um conector externo db9, e tudo está funcionando!

Os três seguintes ( ttyS1-S3 ) provavelmente NÃO existem, mas estão listados porque o driver da porta serial os testou, que é a ação padrão em muitos Linuxes. Veja a página de manual para setserial , que é a função chamada quando o Linux é inicializado. Diz:

During the normal bootup process, only COM ports 1-4 are initialized, using the default I/O ports and IRQ values, as listed below

EDIT: By the way, é fácil ver se o ttyS* funciona como arquivos ou não. Apenas tente enviar algo para eles pelo comando do console:

cat <some_short_file> > /dev/ttyS1

provavelmente dará um I/O error , porque não há nenhum driver conectado. O mesmo para ttyS0 funcionará normalmente. O > no comando redireciona a saída do comando cat para a porta serial. cp shortfile /dev/ttyS0 também funciona.

EDIT: ttyS1-S3 não estão fisicamente lá, então não, você não pode usá-los. Existem outros dispositivos que você pode usar como portas virtuais, como pseudoterminals (pty) e dispositivos de loop. Verifique o Wikipedia e o man pages for ptys . Onde ptys são dispositivos de caractere, você pode usar dispositivos de loop para transferência de bloco (por exemplo, para discos virtuais). Wikipedia e página do manual documentação .

    
por 01.05.2015 / 06:09
4

Essas portas realmente existem na sua placa-mãe. Eles simplesmente não estão conectados a uma porta externa como estão em (alguns) desktops.

    
por 30.04.2015 / 22:10