シリアルコンソール

Raspberry PiのGPIOにはシリアルI/Oのピンが存在しているが、Raspbian“wheezy”のデフォルトではシリアルコンソール用として設定されているので、そのままでは汎用のシリアルポートとして使用できない。

もちろん設定を変更すれば使用できるし、そのための方法も探すとすぐに出てくるのだが、シリアルポートの動作確認も兼ねて、設定を変更する前にシリアルコンソールを使ってみる事にした。

シリアルコンソールは最も原始的で基本的なLinuxの操作手段で、キーボードやモニタ、ネットワークデバイスが使用不可な状態でも操作する事ができる。

Raspberry Piで必要になる事はほとんど無いと思うが、Linuxを組み込みOSとして使用している機器、たとえば無線LANルータなんかでは基板上にシリアルコンソール用の端子が隠されているものがあるので、必要となる機会はまだ残されている。

Raspberry PiのシリアルポートはGPIOの6番にGND、8番にTX、10番にRXが割り当てられていて、偶数番号なので片側に三つ並んでいるから分かりやすい。

信号レベルは他のI/Oと同じく3.3Vになっていて、TTLレベル(5V)ではない事に注意。秋月電子のUSBシリアル変換モジュールAE-UM232Rが信号レベルをジャンパーで切り替えられるので、それを使用した。
GPIOのピンとUSBシリアル変換モジュールのピンは以下のように接続する

Raspberry Pi GPIO

AE-UM232R

GND(6)

GND(24)

TX(8)

RXD(5)

RX(10)

TXD(1)

DSC_0235

AE-UM232RとPCをUSBケーブルで接続し、シリアルポートが認識されたら通信ソフトを起動する。ポートの設定は通信速度115200ボー、データ長8ビット、ストップビット1、パリティ無し。
scon0

設定が正しければ、Raspberry Piの電源を入れた時に各種メッセージが表示されて、ログイン待ち状態になる。ログインすれば普通に使用できるはずだ。
scon1

ttyコマンドで確認すると、Raspberry Piのシリアルコンソールは”/dev/ttyAMA0”という名前のデバイスである事が分かる。scon2

試しにSSH経由でリモートログインして同じ事を行うと。リモートの場合は”/dev/pts/0”でシリアルコンソールとは異なるデバイス名になっている。”tty”は物理的に接続されている端末で、”pts”は仮想的な端末である事を意味している。scon3更にリモートで他の端末からログインすれば、”/dev/pts/1”、”/dev/pts/2”と番号が増える。

物理的に接続されている端末でも、リモート接続の仮想端末でもLinuxでは同じデバイスとして取り扱われていて、ファイルとして存在しているのでこんな事もできる。SSHのリモート端末から、シリアルコンソール対して文字列を送るscon4

するとシリアルコンソールにその文字列が表示される。
scon5

Raspberry Piをシリアルコンソール経由で使うことができるのは確認できたので。次は設定を変更して汎用シリアルポートとしての使用を試してみる予定。シリアルコンソールは言ってみれば最後の手段だから、これを潰してしまうといざという時に困るのだが、Raspberry Piなら色々と試してみてOSが起動しなくなったとしても、誰にも迷惑がかからない。

最悪の場合でもSDメモリにOSイメージを上書きすれば、あっという間に元通りだ。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中