Raspberry Pi4bにubuntuserver18をインストールした後にシリアルポートを開くにはどうすればよいですか?
Raspberry Pi4bのピンダイアグラムは次のとおりです。
その中で、GPIO14とGPIO15はハードウェアシリアルポートです。
Raspianシステムをインストールしていないため、raspi-configでシリアルポートを開くことができません。
また、ubuntuサーバーのraspiシステムの/boot/firmware/config.txtで、enable_uart = 1がデフォルトでこのシリアルポートを有効にすることも説明されています。Linuxでの名前は/ ttyAMA0ですが、デフォルトはシリアルポートコンソールが使用されている場合です。 (/boot/firmware/nobtcmd。txtはconsole = / ttyAMA 921600も書き込みました)
また、このハードウェアシリアルポートもBluetoothに接続されています。このシリアルポートを他の周辺機器に使用する場合は、シリアルポートコンソールとBluetoothを無効にする必要があります。
方法:
1./boot/firmware/nobtcmd.txtのconsole = / ttyAMA 921600を削除して、シリアルコンソールを無効にします。このtxtファイルは、カードリーダーを使用してWindowsシステムにSDカードを挿入することにより、system-bootでも見つけることができます。
2./boot/firmware/config.txtでenable_uart = 1を設定します(デフォルトはです)。= 0の場合、ハードウェアシリアルポートの代わりにミニコムシリアルポートが有効になります。
3. dtoverlay = disable-btという行を/boot/firmware/config.txtに追加して、Bluetoothを無効にします。
4. sudo systemctl disable bluetooth ...... Bluetoothに関連するスタートアップ項目を無効にします。デスクトップにBluetoothロゴが表示されなくなるまで、/ ttyAMA0は残ります。
このように、起動してシリアル周辺機器を接続した後、/ ttyAMA0を使用してシリアル通信を正常に行うことができます。
RaspberryPiの公式ドキュメントを読むことをお勧めします。
https://www.raspberrypi.org/documentation/configuration/uart.md
Linuxドキュメントもあります:
https://elinux.org/RPi_Serial_Connection
ただし、まだ問題があります。起動する前に周辺機器を接続すると、u-boot(ブートローダーと同様)がシリアルポートデータを2秒間待機してからオンになるため、シリアル周辺機器から送信されたシリアルデータがubuntuの起動に干渉します。 ubuntuの起動時に自動起動します。この期間中、シリアルポートデータがあると、u-bootに入ります(コンピュータの起動と同様に、F2キーを押してBIOSに入ります)。これにより、システムが開くことができなくなり、画面にはシリアルデバイスから送信された文字化けした文字が常に表示されます。
解決策は、u-bootの2秒間の待機時間をキャンセルして、システムに直接入ることです(ただし、これにより、将来u-bootに入ることができなくなります)。
主にbingで見つかったこの回答を参照してください。askubuntu.comは本当に良いウェブサイトです。
https://askubuntu.com/questions/1215848/how-to-disable-ttyama0-console-on-boot-raspberry-pi
待機時間をキャンセルするには、次の2つの方法があります。
方法1:変更したu-bootをコンピューターで再コンパイルし、元のrasp4.binを.binファイル(/ boot / firmware内)に置き換えます。
方法2:起動時にシリアルポートを使用してu-bootに入り、コマンドを入力して起動待機をキャンセルします
両方の方法を試しましたが、方法1が機能しないようです。raspi4が十分に成熟していないため、自分でコンパイルした.binファイルを置き換えることができない可能性があります。
方法2は成功しました。詳細は次のとおりです。
u-boot環境変数の説明はhttps://www.denx.de/wiki/view/DULG/UBootEnvVariablesで見ることができます
シリアルポートからu-bootに入る方法は次のとおりです。USBへのシリアルポートを使用してRaspberryPiをコンピューターに接続してから、コンピューターのシリアルポートデバッグアシスタントを使用して指示を送信します。
電源を入れ、任意のキーを押してu-bootに入り、次に
setenv bootdelay -2
saveenv
これにより、環境変数を設定して待機時間をキャンセルして保存します。
入力の各行の後にキャリッジリターンを追加する必要があることに注意してください。
RaspberryPiの画面の表示は次のとおりです。
終わらせる!