Coisas que eu verificaria em ordem aproximada:
- Verifique se você está ativando a funcionalidade RTS / CTS no seu aplicativo. Veja tty_ioctl (4) para informações sobre como fazer isso. Há um exemplo no final da man page vinculada, verificando o pino DTR. Tente cruzar a compilação do código e executá-lo em um PC onde saiba que o CTS / RTS funciona (por exemplo, conversor USB para serial)
-
Verifique a saída de stty, pois ela pode revelar se a configuração de controle "crtscts" está ativada, o que permite o handshaking:
stty -F /dev/ttyO1
-
Comece a explorar seu kernel e o gerenciador de inicialização para verificar se o multiplexador para os pinos que você espera usar está configurado para ser usado pelo periférico UART em oposição a outros periféricos (por exemplo, gpio, vídeo etc.). Consulte o Manual de Referência Técnica (TRM) da TI ou a folha de dados, dependendo de onde eles colocarem as informações de mux para o seu chip. A maneira mais fácil de verificar isso é usar um programa como "devmem2" para ler os registros do multiplexador depois de encontrar o endereço do TRM / DS. Para corrigir isso, você precisa determinar se seu kernel ou bootloader é responsável pela configuração do mux. Às vezes é ambos (suspiro).
- Considere problemas de hardware, revise o esquema. Os pinos estão realmente conectados?
- Continue pesquisando o código do kernel para verificar se os dados da plataforma estão configurados corretamente. Isso estará sob a sua árvore de kernel em algum lugar (eu acho "arch / arm / mach-davinci / devices-da8xx.c"). Haverá um número de estruturas que descrevem cada UART. Certifique-se de que eles sejam válidos para o UART que você está usando. Além disso, para pontos de bônus, às vezes as pessoas colocam HACK em correções no lugar errado, então essas correções podem ser enterradas em quase qualquer outro lugar na árvore do kernel ... então, procure por elas como um último recurso. É aqui que fica divertido.
Eu não estou familiarizado com este chip exato, então acredito em alguns dos arquivos de suporte do kernel. Também não tenho certeza de qual versão do kernel você está usando ou de onde veio (TI vs upstream).