Como posso usar a porta serial local (loopback)?

0

Em Linux , é possível usar uma porta serial local ? Algo semelhante a isto:

ssh user@localhost

Eu tentei isso em Raspbian , mas não funciona (ele deve ser colocado na minha shell, mas não funciona):

microcom -d /dev/ttyAMA0

Eu também tentei /dev/ttyS0 , mas sem sucesso.

É claro que posso acessar Raspberry Pi através do console serial de outra máquina.

Não há casos de uso específicos para esta questão - não consigo entender como funciona realmente a serial. Se é possível se conectar ao localhost com ssh não deveria ser possível também com a porta serial?

    
por user1042840 08.09.2016 / 22:25

2 respostas

1

O UART, ao qual acredito que você está se referindo, é um protocolo de comunicação bidirecional de 2 fios que é normalmente usado por micro-controladores para se comunicar entre si - normalmente usado para transferir texto entre dois dispositivos. É o que a maioria das pessoas quer dizer quando dizem serial , mas há muitos protocolos diferentes lá fora.

/dev/ttyAMA0 é um dispositivo serial UART no pi de framboesa. Este arquivo de dispositivo controla os pinos rx (10) e tx (8) no cabeçalho pi do raspberry. Qualquer programa pode abrir a porta serial e ler / gravar dados para ela, mas sem nada anexado a ela, todos os dados enviados são perdidos e não há nada enviando dados de volta.

A maioria das distribuições Linux do raspberry pi tem um getty ouvindo em /dev/ttyACM0 , este é um programa que fornece um prompt de login e um shell. Quando você inicia o minicom on /dev/ttyAMA0 e o getty estão enviando dados no pin do tx e recebendo dados no pin do rx - isso irá confundir qualquer coisa que esteja anexada a eles se você tivesse alguma coisa anexada a eles.

Para fazer com que o dispositivo serial faça alguma coisa útil, ele precisa de algo para se comunicar. Você pode obtê-lo para se comunicar com o seu PC, obtendo um desses adaptadores USB para UART e anexando o rx ao pin do tx , o tx para o pino rx e o pino gnd para gnd, em seguida, conectando-o ao seu pc. Uma vez conectado, você receberá um dispositivo serial no seu PC ( /dev/ttyUSB0 na maioria das distribuições do Linux) e todos os dados que você enviar aparecerão em /dev/ttyAMA0 no pi, e todos os dados que o pi enviar em /dev/ttyAMA0 aparecerão no seu pc.

Dado que o pi já tem um getty listening, tudo que você precisa fazer é iniciar minicom ou programa similar no seu pc e você deve obter um prompt de login (pode ser necessário digitar algumas vezes). Você pode, claro, parar o getty e executar outro programa que possa falar com a linha serial.

    
por 08.09.2016 / 23:19
1

Quando você abre uma conexão SSH com o host local, cria uma conexão com dois pontos de extremidade. Um deles é o servidor, um é o cliente. Quando um envia, o outro recebe e vice-versa. Com o SSH, a conexão seria pelo TCP, onde os terminais são identificados por seus endereços IP e portas TCP. As conexões de rede são simples, na medida em que são implementadas principalmente no software, de modo que novas portas TCP podem ser abertas, basicamente, apenas decidindo sobre um número. Esse não é o caso de uma porta serial, que é uma peça de hardware.

Para obter uma comunicação bidirecional útil nas portas seriais, você precisaria novamente ter dois terminais: duas portas seriais. Conecte um ao outro e você pode executar um servidor (por exemplo, getty ) em um e um cliente (por exemplo, minicom ) no outro. Não importa se eles estão na mesma máquina ou em duas máquinas separadas, mas como é hardware, você precisa conectar alguns fios reais.

Normalmente, você puxa o cabo entre dois dispositivos, já que em um único computador há maneiras mais rápidas de mover dados. Mas nada impediria você de fazer uma conexão serial entre duas portas seriais em uma única máquina.

Com apenas uma porta serial, o melhor que você pode fazer é conectar o fio de transmissão ao fio de recebimento, mas, nesse caso, o programa que usa a porta verá sua própria saída como entrada da porta. Isso não é muito útil para comunicação, mas pode ser útil para testes.

    
por 09.09.2016 / 00:47