組み込みLinuxを使用してAM1808のUART0にアクセスする

組み込みLinuxを使用してAM1808のUART0にアクセスする

AM1808プロセッサにGSMモジュールを接続しようとしています。私はgccUBUNTU 10.04 Lucidでコンパイラを使用しています。

UART0のTXDピンとRXDピンを設定しましたが、RTSピンとCTSピンに正しくアクセスできません。

実際、RTSとCTSラインが正しく通信していることを確認する必要があります。
したがって、ユーザーアプリケーションはこのピンにアクセスする必要があります。

どうすればいいですか?

ベストアンサー1

おおよその順序で確認したいことは次のとおりです。

  1. アプリケーションでRTS / CTS機能が有効になっていることを確認してください。バラよりtty_ioctl(4)これを行う方法に関する情報。リンクされたマニュアルページの最後にDTRピンを確認する例があります。コードをクロスコンパイルし、CTS / RTSが動作するPC(USB-Serial Converterなど)で実行してみてください。
  2. ハンドシェイクを有効にするには、制御設定「crtscts」が有効になっているかどうかを表示できます。sttyの出力を確認してください。

    stty -F /dev/ttyO1
    
  3. 使用するピンのマルチプレクサが他のペリフェラル(GPIO、ビデオなど)ではなくUARTペリフェラルで使用するように設定されていることを確認するには、カーネルとブートローダを詳しく見てください。チップに関するマルチプレクサ情報がある場所に応じて、TIテクニカルリファレンスマニュアル(TRM)またはデータシートを参照してください。これを確認する最も簡単な方法は、TRM / DSでアドレスを見つけて、「devmem2」などのプログラムを使用してマルチプレクサレジスタを読み取ることです。この問題を解決するには、カーネルまたはブートローダがマルチプレクサの設定を担当していることを確認する必要があります。時には両方ともあることがあります(ため息)。

  4. ハードウェアについて考えて、回路図を見てください。ピンは実際に接続されていますか?
  5. プラットフォームデータが正しく設定されていることを確認するために、カーネルコードを続けてみてください。これはカーネルツリーの下のどこかにあります(「arch/arm/mach-davinci/devices-da8xx.c」と推測されます)。各UARTを記述する多くの構造があります。使用しているUARTに有効であることを確認してください。また、ボーナスポイントの場合は、人々が間違った場所を修正するため、修正はカーネルツリーの他の場所に埋もれている可能性があるため、最後の手段として見つけてください。これが面白いところです。

私はこのチップに慣れていないので、いくつかのカーネルサポートファイルを推測しています。また、使用しているカーネルのバージョンが何であるか、どこから来たのか(TIとアップストリーム)はわかりません。

おすすめ記事