Eu trabalho com o chip NXP SC16IS740 como um periférico para um sistema Linux embutido (kernel principal v4.8). O usecase é bastante simples, uma linha de transmissão contínua (9600 8n1) deve ser lida através do driver do chip.
Até agora, incluí o módulo do driver sc16is7xx
na compilação do kernel e consigo ver o dispositivo como /dev/ttySC0
.
No entanto, não consigo ler o uart por enquanto e suspeito que esteja faltando a configuração correta. Eu tentei tanto com simplesmente
cat /dev/ttySC0
e
minicom -D /dev/ttySC0 -b 9600 -8
Como existem apenas arquivos somente para leitura no diretório do dispositivo (/ sys / class / tty / ttySC0 /) e não encontro nenhuma documentação sobre como usar o driver, estou ficando sem ideias. / p>
Qual é a maneira correta de configurar esse driver?
Eu incluí o módulo na configuração de receitas do kernel da seguinte forma:
CONFIG_SERIAL_SC16IS7XX_CORE=m
CONFIG_SERIAL_SC16IS7XX=m
CONFIG_SERIAL_SC16IS7XX_I2C=y
Para carregar / descarregar o módulo (o que resulta em carregar / descarregar o dispositivo /dev/ttySC0
) eu uso:
modprobe [-r] sc16is7xx
Grepping dmesg
para sc16is7
resulta neste tipo de mensagens:
[ 5592.212905] [<c0379a14>] (uart_get_baud_rate) from [<bf07cf84>] (sc16is7xx_set_termios+0x1c4/0x374 [sc16is7xx])
[ 5592.213045] [<bf07cdc0>] (sc16is7xx_set_termios [sc16is7xx]) from [<c0379f04>] (uart_change_speed+0x5c/0x124)
Exatamente essas duas mensagens são registradas sempre que eu:
/dev/ttySC0
com minicom
ou cat
minicom
Medindo com um escopo (incluindo análise lógica básica) eu posso ver a comunicação com o chip na linha I2C quando eu:
/dev/ttySC0
com minicom
minicom
Caso contrário, não há comunicação alguma na linha. No momento, estou tentando analisar os bytes enviados e verificá-los com a folha de dados, ou seja, depurando o driver de uma forma.