上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/RaspberryPi/Pi3のシリアル通信
をテンプレートにして作成
資料室
PC/RaspberryPi/Pi3のシリアル通信 をテンプレートにして作成
[
差分
|
バックアップ
|
リロード
]
[ ]
開始行:
#contents
* Raspberry Pi3Bのシリアルコンソール・シリアル通信について
Raspberry Piに搭載されているSoCには2つのUART機能(UART0と...
Pi1B,Pi2Bでは,UART0が[[GPIOヘッダー>/PC/RaspberryPi/コネ...
Raspberry Pi3B,ZeroWでは,WifiとBluetooth用にチップが搭...
その結果,Pi3BやZeroWではシリアル通信を利用する時にいくつ...
- miniUARTが[[GPIOヘッダー>/PC/RaspberryPi/コネクタ#l827a...
- 従来のSoCのUART0(pin8,pin10)は,デフォルトでGPIOヘッ...
- miniUARTで使用するデバイス名は,/dev/ttyS0を使用する。
従来使用されていたシリアルデバイス名の/dev/ttyAMA0は,WiF...
- Pi3B,ZeroWのminiUARTはボーレートがGPUのコアクロックに...
- Pi3B,ZeroWのGPUのコアクロックは,負荷等や低消費電力時...
- この結果,/dev/ttyS0のボーレートもそれに合わせて変化し...
SPIもTimerもこのコアクロックに依存している。
といった問題がある。
さらに,このminiUARTは以下のような機能制限があり,低速で...
- データ幅:7,8bitのみ
- 1スタートビット,1ストップビットのみ
- ブレーク信号が検出できない
- パリティエラーが検出できない
- フレーミングエラーが検出できない
- 送受信FIFOサイズは8bit分しかない
- 受信タイムアウト割り込みが無い
- DCD,DSR,DTR,RI信号が無い
これらを踏まえて対策しないと,シリアルコンソールを使用し...
そこで,うまく利用出来る方法を設定して利用する必要がある。~
やり方としては,1つ目は,GPUコアクロックを250MHzに固定し...
Bluetoothを使わないなら無効にする方法が良いのかも。~
どちらも利用したい場合は,GPUのコアクロックを固定にする方...
また,どちらの方法でも,[[GPIOヘッダー>/PC/RaspberryPi/コ...
デフォルト時のデバイス名のエリアスは,~
Pi3Bの場合:~
/dev/serial0 -> /dev/ttyS0
/dev/serial1 -> /dev/ttyAMA0
Pi1B,Pi2Bの場合:~
/dev/serial0 -> /dev/ttyAMA0
になっている。
Pi3B,ZeroWで,dtoverlay=pi3-miniuart-btに設定した時のデバ...
/dev/serial0 -> /dev/ttyAMA0
/dev/serial1 -> /dev/ttyS0
になる。~
** シリアルコンソールを使用する
シリアルポートを,OSのインストール時の操作やリモートログ...
これは,/boot/cmdline.txtで/dev/serial0をシリアルコンソー...
''/boot/cmdline.txt''の内容:~
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1...
ただ,デフォルトのままでは,上記の理由でPi3B,ZeroWでは正...
** Pi3B,ZeroWでシリアルポートを上手く使えるように設定する
上手くシリアルポートが動作するよう,以下の様な設定を/boot...
- Bluetoothを使用しながらシリアルポートも使用する(ちょっ...
core_freq = 250
を追加する。これは,GPUコアクロックを250MHz固定にする方法...
シリアルポートとしては,miniUARTが[[GPIOヘッダー>/PC/Rasp...
''デバイス名は/dev/ttyS0になる。このデバイスのエリアスと...
- Bluetoothチップを無効にしてUART0をシリアルポートとして...
dtoverlay=pi3-disable-bt
を追加する。~
~
Pi1BやPi2Bと同様の接続となり,SoCのUART0が[[GPIOヘッダー>...
''デバイス名は/dev/ttyAMA0になる。このデバイスのエリアス...
~
また,以下の設定を行って,
# systemctl disable hciuart
Bluetoothとの接続を管理するデーモンを停止する。~
- miniUARTをBlutoothとの通信に使用しUART0をシリアルポート...
dtoverlay=pi3-miniuart-bt
core_freq = 250
を追加する。SoCのUART0が[[GPIOヘッダー>/PC/RaspberryPi/コ...
''デバイス名は,/dev/ttyAMA0になる。このデバイスのエリア...
miniUARTのデバイス名は,/dev/ttyS0になる。このデバイスの...
~
また,/lib/systemd/system/hciuart.serviceを,
After=dev-serial1.device -> After=dev-ttyS0.device
に変更する。(変更しなくても大丈夫だと思う・・・)
** シリアル通信を有効にする
シリアルポートをシリアルコンソールとして使用するのではな...
- シリアル通信を有効にする設定~
enable_uart=1
を追加する。~
この設定を行うと,core_freq=250が無くてもcore_freq=250と...
おそらくこの設定は上記の,~
dtoverlay=pi3-miniuart-bt
core_freq = 250
と同じことだと思う。~
- シリアルコンソールを無効にする~
シリアルコンソールを無効にするために,/boot/cmdline.txt ...
console=serial0,115200
を削除する。~
- シリアルコンソールのデーモンを停止~
さらに,シリアルコンソールのデーモンを停止して,無効にす...
Pi3BやZeroWの場合(ttyS0),
# systemctl stop serial-getty@ttyS0.service
# systemctl disable serial-getty@ttyS0.service
Pi1BやPi2Bの場合(ttyAMA0),
# systemctl stop serial-getty@ttyAMA0.service
# systemctl disable serial-getty@ttyAMA0.service
のようにする。
これで,シリアルコンソールの使用を停止・無効に出来て,シ...
終了行:
#contents
* Raspberry Pi3Bのシリアルコンソール・シリアル通信について
Raspberry Piに搭載されているSoCには2つのUART機能(UART0と...
Pi1B,Pi2Bでは,UART0が[[GPIOヘッダー>/PC/RaspberryPi/コネ...
Raspberry Pi3B,ZeroWでは,WifiとBluetooth用にチップが搭...
その結果,Pi3BやZeroWではシリアル通信を利用する時にいくつ...
- miniUARTが[[GPIOヘッダー>/PC/RaspberryPi/コネクタ#l827a...
- 従来のSoCのUART0(pin8,pin10)は,デフォルトでGPIOヘッ...
- miniUARTで使用するデバイス名は,/dev/ttyS0を使用する。
従来使用されていたシリアルデバイス名の/dev/ttyAMA0は,WiF...
- Pi3B,ZeroWのminiUARTはボーレートがGPUのコアクロックに...
- Pi3B,ZeroWのGPUのコアクロックは,負荷等や低消費電力時...
- この結果,/dev/ttyS0のボーレートもそれに合わせて変化し...
SPIもTimerもこのコアクロックに依存している。
といった問題がある。
さらに,このminiUARTは以下のような機能制限があり,低速で...
- データ幅:7,8bitのみ
- 1スタートビット,1ストップビットのみ
- ブレーク信号が検出できない
- パリティエラーが検出できない
- フレーミングエラーが検出できない
- 送受信FIFOサイズは8bit分しかない
- 受信タイムアウト割り込みが無い
- DCD,DSR,DTR,RI信号が無い
これらを踏まえて対策しないと,シリアルコンソールを使用し...
そこで,うまく利用出来る方法を設定して利用する必要がある。~
やり方としては,1つ目は,GPUコアクロックを250MHzに固定し...
Bluetoothを使わないなら無効にする方法が良いのかも。~
どちらも利用したい場合は,GPUのコアクロックを固定にする方...
また,どちらの方法でも,[[GPIOヘッダー>/PC/RaspberryPi/コ...
デフォルト時のデバイス名のエリアスは,~
Pi3Bの場合:~
/dev/serial0 -> /dev/ttyS0
/dev/serial1 -> /dev/ttyAMA0
Pi1B,Pi2Bの場合:~
/dev/serial0 -> /dev/ttyAMA0
になっている。
Pi3B,ZeroWで,dtoverlay=pi3-miniuart-btに設定した時のデバ...
/dev/serial0 -> /dev/ttyAMA0
/dev/serial1 -> /dev/ttyS0
になる。~
** シリアルコンソールを使用する
シリアルポートを,OSのインストール時の操作やリモートログ...
これは,/boot/cmdline.txtで/dev/serial0をシリアルコンソー...
''/boot/cmdline.txt''の内容:~
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1...
ただ,デフォルトのままでは,上記の理由でPi3B,ZeroWでは正...
** Pi3B,ZeroWでシリアルポートを上手く使えるように設定する
上手くシリアルポートが動作するよう,以下の様な設定を/boot...
- Bluetoothを使用しながらシリアルポートも使用する(ちょっ...
core_freq = 250
を追加する。これは,GPUコアクロックを250MHz固定にする方法...
シリアルポートとしては,miniUARTが[[GPIOヘッダー>/PC/Rasp...
''デバイス名は/dev/ttyS0になる。このデバイスのエリアスと...
- Bluetoothチップを無効にしてUART0をシリアルポートとして...
dtoverlay=pi3-disable-bt
を追加する。~
~
Pi1BやPi2Bと同様の接続となり,SoCのUART0が[[GPIOヘッダー>...
''デバイス名は/dev/ttyAMA0になる。このデバイスのエリアス...
~
また,以下の設定を行って,
# systemctl disable hciuart
Bluetoothとの接続を管理するデーモンを停止する。~
- miniUARTをBlutoothとの通信に使用しUART0をシリアルポート...
dtoverlay=pi3-miniuart-bt
core_freq = 250
を追加する。SoCのUART0が[[GPIOヘッダー>/PC/RaspberryPi/コ...
''デバイス名は,/dev/ttyAMA0になる。このデバイスのエリア...
miniUARTのデバイス名は,/dev/ttyS0になる。このデバイスの...
~
また,/lib/systemd/system/hciuart.serviceを,
After=dev-serial1.device -> After=dev-ttyS0.device
に変更する。(変更しなくても大丈夫だと思う・・・)
** シリアル通信を有効にする
シリアルポートをシリアルコンソールとして使用するのではな...
- シリアル通信を有効にする設定~
enable_uart=1
を追加する。~
この設定を行うと,core_freq=250が無くてもcore_freq=250と...
おそらくこの設定は上記の,~
dtoverlay=pi3-miniuart-bt
core_freq = 250
と同じことだと思う。~
- シリアルコンソールを無効にする~
シリアルコンソールを無効にするために,/boot/cmdline.txt ...
console=serial0,115200
を削除する。~
- シリアルコンソールのデーモンを停止~
さらに,シリアルコンソールのデーモンを停止して,無効にす...
Pi3BやZeroWの場合(ttyS0),
# systemctl stop serial-getty@ttyS0.service
# systemctl disable serial-getty@ttyS0.service
Pi1BやPi2Bの場合(ttyAMA0),
# systemctl stop serial-getty@ttyAMA0.service
# systemctl disable serial-getty@ttyAMA0.service
のようにする。
これで,シリアルコンソールの使用を停止・無効に出来て,シ...
ページ名:
Counter: 0, today: 0, yesterday: 0
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
フォーラム
お問い合わせ