UART0 Acesso no AM1808 usando o Embedded Linux

2

Estou tentando fazer a interface do módulo GSM com meu processador AM1808. Eu estou usando o compilador gcc , assim como o UBUNTU 10.04 Lucid.

Eu configurei os pinos TXD e RXD do UART0, mas não consigo acessar os pinos RTS e CTS adequadamente.

Na verdade, preciso verificar a linha RTS e CTS para uma comunicação adequada.
Então, preciso acessar esses pinos do aplicativo de usuário.

Como posso fazer isso?

    
por Parthiv Shah 15.05.2013 / 21:10

1 resposta

2

Coisas que eu verificaria em ordem aproximada:

  1. 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)
  2. 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
    
  3. 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).

  4. Considere problemas de hardware, revise o esquema. Os pinos estão realmente conectados?
  5. 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).

    
por 15.05.2013 / 22:44