FPGA開発キットやRaspberry PIのような小型コンピュータは、コンソール表示がシリアルで出力されるものがあります。これらのシリアル出力は、USBの仮想シリアル・ポートなどでPCに接続し、専用のソフトで表示することが一般的です。PCのOSがWindowsの場合、表示ソフトとしてはTeraTermが有名です。Linuxの場合、screenコマンドを使うと、xtermのようなターミナルにシリアル出力をそのまま表示できます。
LinuxでのUSB仮想シリアルの表示
Raspberry PIの場合
GPIO上にシリアルのTXとRXが出力されています。ここでは、USB仮想シリアル・ポートへの変換に、Sparkfunの FTDI Basic Breakout – 3.3Vを使用しています。図のように、Raspberry PIのGPIOとFTDIのコネクタを、ワイヤーで接続します。
接続する信号は、TX,RX,GNDの3本です。Raspberry PI側とFTDI側のTXとRXは、クロス接続にします。
接続確認
PC側でLinuxを起動し、FTDI BasicをUSBケーブルで接続します。FTDI Basicが認識されたかどうかは、dmesgで確認できます。
$dmesg | grep tty [ 0.000000] console [tty0] enabled [ 17.800229] systemd[1]: Created slice system-getty.slice. [ 22.070046] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0
FTDI Basicは、ttyUSB0として認識されているのがわかります。
表示方法
xtermなどのターミナルを起動します。ターミナルで、/dev/ttyUSB0を指定してscreenコマンドを実行します。ubuntuなど、Linuxのディストリビューションによってはsudoが必要かも知れません。
$screen /dev/ttyUSB0
成功すると、ターミナルにRaspberry PIのログイン画面が表示されます。何も表示されない時は、キーボードのリターンキーを数回押すと表示される場合があります。screenコマンドのデフォルトのボーレートは9600です。もし、ボーレートの変更が必要な場合は、screen /dev/ttyUSB0 115200といった形で指定できます。
screenを終了する時は、キーボードからCTRL-a kを入力します。画面に”Really Kill This Window [y/n]”と表示されるので、yを押すとscreenが終了します。
screenコマンドについて
screenコマンドは、一般的にはリモート・ホストとの通信時のセッション維持に利用されます。screenコマンドを使えば、リモート・ホストにログインし、シミュレーションの実行を指示た後で一旦リモート・ホストとの接続を終了し、シミュレーションが終わった頃で再度接続して実行結果を確認するといった使い方ができます。screenコマンドを利用しない場合、リモートホストとの接続を終了すると、その時にターミナル上で実行していたプログラムは終了してしまいますが、screenコマンドを利用すると、リモート・ホストとの接続を終了した後もプログラムの実行を維持できます。