web-dev-qa-db-ja.com

Beaglebone BlackでUARTを有効にできない

短い一般的な質問

カーネル4.9のビーグルボーンブラックでDebian 9(ストレッチ)を実行しています。オンラインで見つけた手順に従ってみましたが、これまでのところ、UART=デバイスを構成できていないようです。デバイスを構成するにはどうすればよいですか?デバッグ/トラブルシューティングを行う方法自分の構成?自分の構成が正しいかどうかを確認するにはどうすればよいですか?

長く詳細な質問

私は組み込みLinux全般、特にビーグルボーンに非常に慣れていません。私はここに与えられた指示に従いました:

最新の「microSDカードを介したBeagleBoneとPocketBeagleのStretch IoT(グラフィカルデスクトップなし)」のイメージ(具体的には bone-debian-9.3-iot-armhf-2018-03-05-4gb.img )をダウンロードしました 最新の画像ページ から、SDカードからBeagleboardをフラッシュしました。インストール後、次の記事で説明されている方法と同様の方法で、シリアル-USBケーブル経由でLinuxデスクトップからBeagleboneにアクセスできました。

次のscreenコマンドを正常に使用できました。

screen /dev/ttyUSB0 115200

SSH経由で接続するMicro-USB to USBケーブルも使用できました。

ssh [email protected]

ビーグルボーンに接続したら、カーネルのバージョンがLinux beaglebone 4.9.82-ti-r102であることを確認しました。次に、ビーグルボーンUART構成に関するいくつかの記事を読みます。

私の注意点は、(一般的に言えば)オペレーティングシステムとカーネルのバージョンに応じて、チェックするいくつかの異なる構成ファイルがあることです。これらには以下が含まれます。

  • /boot/uEnv.txt
  • /boot/uboot/uEnv.txt
  • /etc/default/capemgr
  • /media/BEAGLEBONE/uEnv.txt

言及されたいくつかのデバイスファイルもありました:

  • /sys/devices/bone_capemgr.*/slots

次の各行をさまざまなuEnv.txtファイルのそれぞれに追加してみました。

  • cape_enable=capemgr.enable_partno=BB-UART1,BB-UART2,BB-UART4,BB-UART5

  • optargs=capemgr.enable_partno=BB-UART1,BB-UART2,BB-UART3,BB-UART5

また、次の行を/etc/default/capemgrに追加してみました。

CAPE=BB-SPI-01,BB-UART1,BB-UART2,BB-UART4

再起動後、次のコマンドを使用して、UARTデバイスが表示されたかどうかを確認しました。

ls -l /dev/ttyO*

残念ながら、私は次の結果を得ました(予期しない結果):

debian@beaglebone:~$ ls -l /dev/ttyO*
lrwxrwxrwx 1 root root 5 Jan  1 00:00 /dev/ttyO0 -> ttyS0

注:私はttyO0ではなく、ttyO1, ..., ttyO5に関心があります。

他にもいくつか試してみましたが、(時間とスペースを節約するため)要求されない限り、すべての試みを説明することはしません。

ここで何が悪いのですか? UARTデバイスを有効にする正しい方法は何ですか?

2
igal

「詳細な質問」に記載されているすべてを試しても、まだUART=ポートを初期化できませんでした。私のBeagleBone Black(BBB)がDebian 8で事前にフラッシュされていたことが原因でした。私は外部SDカードでDebian 9イメージを実行していました。ブートプロセスやBeagleBonesの専門家ではありませんが、BeagleBoneは、SDカードよりも内部のeMMMCからの起動を優先しています。したがって、私のBBBはフラッシュ前のDebian 8イメージから起動していたため、私のUART=チャネルはどれも初期化されていませんでした。初期化後にSDカードイメージに切り替わります。切り替えたと思うのは、そのバージョンはデバッグポートを介しており、Debian 9と表示され、デバッグポートを介してSDカードpythonスクリプトを実行することもできました。

ブートローダーがeMMCをスキップしてSDカードから直接起動するように、eMMCパーティションの最初のメガバイトを削除して(事実上Debian 8を削除して)問題を修正しました。これにより、すべてのチャネルの初期化が正しいDebian 9イメージで行われるようになりました。

1
TSmith

以下は、カーネル4.14がインストールされたDebian 9.9で動作します(Debian 8.3では動作しましたが、Debian 9.3では動作しませんでした)。

起動すると、/ dev/ttyO1、O2、O4ファイルが表示されますが、ピンを正しいpinmuxに設定するまで、ファイルは機能しません。

#ttyO1:
config-pin P9_24 uart
config-pin P9_26 uart
#ttyO2:
config-pin P9_21 uart
config-pin P9_22 uart
#ttyO4:
config-pin P9_11 uart
config-pin P9_13 uart

再起動するたびにその手順を実行する必要があります。なんらかの起動スクリプトに属しています。

UARTが単純なループバックテストで機能していることを確認できます。 UART4の場合:

  1. P9_11と​​P9_13の間にワイヤを配置します

  2. 画面/ dev/ttyO4

  3. ウィンドウに入力したテキストが表示されるはずです。ワイヤを外すと、それ以上の入力は表示されません。 UARTは機能します。

1
apprehensivebob