Polling para informações de porta serial

2
Primeiramente, deixe-me começar dizendo que me sinto bobo por fazer uma pergunta como essa. As informações devem estar online, mas não consigo encontrá-las em lugar nenhum. Eu sinto como se tivesse olhado bem strong, mas nada parece me trazer o que eu estou procurando.

Aqui está a situação. Eu tenho duas placas de computador mini Linux. Eles são exatamente o mesmo, fabricante e tudo mais. A placa tem 12 portas seriais. O problema é que em uma placa, todas as portas seriais estão funcionando bem, mas, por outro lado, estão todas bagunçadas. A maioria não está no diretório / dev, não consigo encontrá-los, etc.

Então imaginei que seria possível consertar meu problema encontrando os endereços de IO (provavelmente IRQs também, assumindo que eles não foram alterados) das portas na placa de trabalho, depois pegando essas informações e fazendo novas entradas. / dev, já que estou supondo que o fabricante não tenha mudado os endereços nos quais os pinos da placa estão mapeados. Parece razoável, certo? O que eu não esperava era encontrar problemas para realmente extrair essas informações de um sistema em funcionamento.

Então, o verdadeiro problema é este: Eu tenho 12 entradas em / dev, todas elas são mapeadas para portas seriais e todas funcionam, mas todas as ferramentas para obter as informações delas não são não está funcionando. Aqui está o que eu tentei:

Filtrando o dmesg:

root@linaro-ubuntu:/dev# dmesg | grep tty
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p1 rootwait video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb1:off video=mxcfb2:off fbmem=28M vmalloc=400M
bootconsole [ttymxc0] enabled
imx-uart.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX
console [ttymxc0] enabled, bootconsole disabled
imx-uart.1: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX
imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX
imx-uart.3: ttymxc3 at MMIO 0x21f0000 (irq = 61) is a IMX
imx-uart.4: ttymxc4 at MMIO 0x21f4000 (irq = 62) is a IMX
init: tty1 main process (5754) killed by TERM signal

Ok, esta informação parece boa. Eu sabia que o ttymxc0 era um terminal. O resto desses caras estão trabalhando em portas seriais. Esses endereços de E / S parecem bons e os IRQs não entram em conflito com nada em / proc / interrupts. Mas espere, onde estão as outras portas seriais? Eles não deveriam estar aqui também? Isso realmente não me incomoda muito, desde que eu possa encontrá-lo em outro lugar.

comando setserial:

O próximo passo lógico foi mexer com o setserial.

root@linaro-ubuntu:/dev# setserial -g /dev/ttymxc1
/dev/ttymxc1, UART: undefined, Port: 0x0000, IRQ: 59
root@linaro-ubuntu:/dev# setserial -g /dev/ttymxc2
/dev/ttymxc2, UART: undefined, Port: 0x0000, IRQ: 60
root@linaro-ubuntu:/dev# setserial -g /dev/ttymxc3
/dev/ttymxc3, UART: undefined, Port: 0x0000, IRQ: 61
root@linaro-ubuntu:/dev# setserial -g /dev/ttymxc4
/dev/ttymxc4, UART: undefined, Port: 0x0000, IRQ: 62

Ick, não gostando disso. Quero dizer, faz sentido, porque eu sei que o setserial não fala com o hardware e apenas lê as informações do driver, mas eu esperava que pelo menos as que eu vi ao analisar o dmesg aparecessem corretamente. Pelo menos os IRQs estão certos, mesmo que seja apenas uma coincidência. Mas quando eu tento isso nas outras portas seriais:

root@linaro-ubuntu:/dev# setserial -g /dev/ttyHBA1
/dev/ttyHBA1, UART: undefined, Port: 0x0000, IRQ: 0
root@linaro-ubuntu:/dev# setserial -g /dev/ttyHBA2
/dev/ttyHBA2, UART: undefined, Port: 0x0000, IRQ: 0

É apenas um monte disso em toda a linha. Sem endereços, o IRQ é definido como zero (não tenho certeza se essa é apenas a configuração padrão de um dispositivo que o sistema não conhece ou se está definido para ser o IRQ 0. Se for esse o caso, então bruto, terei que alterar isso.)

Então, o setserial está me dando um monte de nada. Ouvi dizer que há uma maneira de testar diretamente o hardware, mas não consegui encontrar nenhuma documentação para isso on-line. As páginas de manual também não estão me ajudando. Alguém tem alguma ajuda para mim aqui?

Até agora estou meio perdido. Eu não acho que stty dá o tipo de informação que eu estou procurando.

Encontrei algumas coisas sobre a leitura de arquivos, como /proc/tty/driver/serial e /proc/ioports . O primeiro arquivo não existe no meu sistema e o segundo está vazio. Eu encontrei algumas outras sugestões de arquivos on-line, mas, novamente, nada de útil.

Eu também vi referência a algo chamado "scanport" para o Ubuntu? Mas não consigo encontrá-lo em nenhum lugar nos repositórios nem no google.

Ahhhhh. O que está acontecendo? Eu tenho portas seriais de trabalho, eu só quero saber coisas sobre eles. Este é o Linux, normalmente informações do sistema como essa podem ser encontradas de lado, para trás e de cabeça para baixo. Por que estou tendo esses problemas?

    
por MD-7 28.04.2016 / 22:58

0 respostas