
Estou executando o Debian Wheezy e meu laptop não possui porta serial. Por que eu tenho /dev/ttyS*
e o que acontecerá quando eu tentar ler/escrever neles?
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 o caso quando o usuário tem uma porta e em/dev ele tem 4, mas eu não tenho nenhuma.
Responder1
É muito provável que a porta ttyS0 realmente exista na sua placa-mãe. E muito possivelmente também existe um conector na placa-mãe para usá-lo! 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 liguei um cabo a 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 Linux. Consulte a página de manual para setserial
, que é a função chamada quando o Linux é inicializado. Diz:
Durante o processo normal de inicialização, apenas as portas COM 1 a 4 são inicializadas, usando as portas de E/S padrão e os valores de IRQ, conforme listado abaixo
EDIT: Aliás, é fácil ver se funcionam ttyS*
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 for ttyS0
funcionará normalmente. O >
comando redireciona a saída do cat
comando para a porta serial. cp shortfile /dev/ttyS0
funciona também.
EDIT: ttyS1-S3 não estão fisicamente presentes, então não, você não pode usá-los. Existem outros dispositivos que você pode usar como portas virtuais, como pseudoterminais (pty) e dispositivos de loop. VerificarWikipédiae apáginas de manual para ptys. Onde ptys são dispositivos de caracteres, você pode usar dispositivos de loop para transferência de blocos (por exemplo, para discos virtuais).Wikipédiaedocumentação da página de manual.
Responder2
Na verdade, essas portas existem na sua placa-mãe. Eles simplesmente não estão conectados a uma porta externa como em (alguns) desktops.