えっ、シリアルポートがない!! ターゲットボードとの接続:−ザ・組み込み−ソフトウェアのハードウェア化(2)(2/3 ページ)
ターゲットボードへのプログラムの書き込み。専門書はCOMポートについて触れているけど……。初心者がハマるワナ!?
シリアルポートがないホストPCと組み込み開発ボードの接続
さて、いよいよAKI−H8/3069Fにサンプルプログラムの書き込みを行うわけですが、ここにも問題(ワナ)があります。
通常、この部分の(書き込みに関する)多くの解説ではCOMポートについて触れています。これはつまり、ホストPCのシリアルポートにシリアルケーブルが接続されていることを前提にしているということです。
大抵の解説本では、
h8write -3069 -f20 led_test.mot /dev/ttyS0 ←COM1ポートに接続している場合
とコマンドを実行するように! と書かれていることがほとんどです。
ところが、今回(ホストPC:KOHJINSHA SA5SX12A)はシリアルポートがありません。では一体どのポートにアクセスすればよいのでしょうか?
こうしたワナ(大げさにいうと)が非常に細かい点とはいえ、初めて組み込み開発ボードを手にして「さぁ、これからやってみよう!」と思う方にとっての障害となるのです。このあたりでうまくいかなくて、あきらめてしまった方も多くいるのではないでしょうか(いまさらシリアルポートの付いたノートPCを探すわけにもいかないですし……)?
さて、話を元に戻して、先ほど用意したUSB−シリアル変換ケーブルを使用したときに、どのポートにアクセスすればよいのかを探ってみましょう(もし、この時点でUSB−シリアル変換ケーブルがホストPC側に接続されていたら、いったんケーブルを抜いてください)。
それでは、調査開始です。これまで使用していたシェルとは別に、もう1つシェルを新たに開き、以下のコマンドを実行してログファイルを監視します。
# tail -f /var/log/messages
また、以下のコマンドを実行して、現在Linuxシステム(ホストPC)にロードされているドライバを確認しておきます。
# lsmod
この状態にしておいて、以下のコマンドを実行してください。
# ls -l /dev/ttyUSB0
ホストPCのUSBポートに通信関連のデバイスなどがつながっていなければ、以下のようにコマンド結果が出力されるはずです(コラム1)。
/bin/ls: /dev/ttyUSB0: そのようなファイルやディレクトリはありません
ここでUSB−シリアル変換ケーブルをホストPCに接続します。例えば、前述した秋月電子通商のケーブルであれば、「tail」コマンドで開いた/var/log/messagesのファイル内容が、リスト1のように出力されます。
Aug 11 13:24:16 localhost kernel: usb 1-1: USB disconnect, address 2 Aug 11 13:24:26 localhost kernel: ohci_hcd 0000:00:0f.4: wakeup Aug 11 13:24:27 localhost kernel: usb 1-1: new full speed USB device using ohci_hcd and address 3 Aug 11 13:24:27 localhost kernel: usb 1-1: configuration #1 chosen from 1 choiceAug 11 13:24:27 localhost kernel: usbcore: registered new driver usbserial Aug 11 13:24:27 localhost kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic Aug 11 13:24:27 localhost kernel: usbcore: registered new driver usbserial_generic Aug 11 13:24:27 localhost kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core Aug 11 13:24:27 localhost kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303 Aug 11 13:24:27 localhost kernel: pl2303 1-1:1.0: pl2303 converter detected Aug 11 13:24:27 localhost kernel: usb 1-1: pl2303 converter now attached to ttyUSB0 Aug 11 13:24:27 localhost kernel: usbcore: registered new driver pl2303 Aug 11 13:24:27 localhost kernel: drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver
リスト1 /var/log/messagesのファイル内容 |
リスト1には、貴重な情報がいろいろと書かれています。一番の注目は「pl2303 converter detected」という部分です。「pl2303を検出した」という意味です。
さらに、「lsmod」コマンドで新たにロードされたモジュールを調べてみると、「lsmod」コマンドを実行した結果の頭の方に「pl2303」というモジュールがロードされているのを確認できます(リスト2)。
# lsmod Module Size Used by pl2303 17668 0 usbserial 29032 1 pl2303
リスト2 「pl2303」というモジュールがロードされている |
つまり、これが今回使用するUSB−シリアル変換ケーブルに使用されたデバイスドライバで、カーネルはUSB−シリアル変換ケーブルがUSBポートに接続されたことを受けて、必要なドライバを呼び出したのです。今回使用した秋月電子通商のUSB−シリアル変換ケーブルにはLinux用のドライバは付属していません(Windows用のドライバは付属しています)。しかし、あらかじめVine Linux 4.2のディストリビューションには、該当するドライバが用意されていますので、新たにドライバを追加する必要はありません。もし、これ以外のUSB−シリアル変換ケーブルを使用する場合には、Linux側でドライバの対応が取られているかどうか、ケーブルを購入する前に調べておくとよいでしょう。
それではもう一度、以下のコマンドを実行してください。
# ls -l /dev/ttyUSB0
すると、以下のように出力されて、「/dev/ttyUSB0」というファイルが生成されていることが確認できると思います。
crw-rw---- 1 root uucp 188, 0 8月11日 13:33 /dev/ttyUSB0
そうです、何を隠そう今回「h8write」コマンドでアクセスしなければならないデバイスファイルは、「/dev/ttyUSB0」だったのです。ちなみに、一般ユーザーでもアクセス可能にしたい場合は、以下のコマンドで読み書き権限を与えておくとよいでしょう。
# chmod 666 /dev/ttyUSB0 # ls -l /dev/ttyUSB0 crw-rw-rw- 1 root uucp 188, 0 8月11日 13:33 /dev/ttyUSB0
関連リンク: | |
---|---|
⇒ | yoggy's diary |
⇒ | 第4章 ダイアルアップ接続(PPxP)の設定 |
# ls -l /dev/ttyUSB*
crw-rw---- 1 root uucp 188, 0 8月11日 13:45 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 8月11日 13:45 /dev/ttyUSB1
# ls -l /dev/ttyUSB*
crw-rw---- 1 root uucp 188, 0 8月11日 13:45 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 8月11日 13:45 /dev/ttyUSB1
crw-rw---- 1 root uucp 188, 2 8月11日 13:45 /dev/ttyUSB2 ← これがUSB-シリアル変換ケーブルのデバイスファイル
# h8write -f20 -3069 lcd_test.mot /dev/ttyUSB2
H8/3069F is ready! 2002/5/20 Yukio Mituiwa.
writing
WARNING:This Line dosen't start with"S".
Address Size seems wrong
WARNING:This Line dosen't start with"S".
Address Size seems wrong
..........
EEPROM Writing is successed.
Copyright © ITmedia, Inc. All Rights Reserved.