その3 Armadilloの 拡張I/Oポートの利用
PC/104規格対応拡張ボードの利用を試みます
Armadilloは、PC/104規格に準拠していて
組込み機器開発に、また各種コントローラとして利用できます。
梅沢無線電機株式会社 HTシリーズ の
HT2020 Opt-Isolated IN/OUT |
HT3040 PCカード/Conpact Flash インターフェース |
HT3060 Ethernet 10Base-T I/F |
など が コネクタ経由で フロッピーサイズの大きさで 積み重ねられます
HT2020-P24 Opt-Isolated 24bit 出力 フォトリレー付 (下の写真右側)を
Armadillo(下の写真左側)とあわせて購入し 今回の実験で使用しました
さて この拡張I/Oボードの使用にあたっては ドライバソフトの組み込みを必要とします:
デバイスドライバをカーネルに組み込んで使用するまでの手順を簡単に説明します。
(
http://web.kyoto-inet.or.jp/people/bunchan/Linux/DeviceDriver/DeviceDriverBackUp.htmlを参考にしました)
◆ コンパイル
まずデバイスドライバプログラムをコンパイルします。
今回はローダブルモジュールとして組み込むのでオブジェクト形式のファイルを作成します。
◆ ドライバテーブルへの登録
できたデバイスドライバをドライバテーブルへ登録します。
登録の時に使うのは「insmod」と言うコマンドですが、これは特権ユーザ(スーパユーザ)しか使えません。
「insmod」を行うことでデバイスドライバはカーネルに組み込まれ、カーネルの一部となります。
しかし、それだけではユーザアプリケーションからそのデバイスにアクセスすることができません。
◆ スペシャルファイルの作成
最後にアプリケーションプログラムへの窓口としてスペシャルファイルを作成します。
スペシャルファイルの作成に使うのは「mknod」と言うコマンドです。これも特権ユーザしか使えません。
ということですので …
| HPのダウンロードページの | ディレクトリ構成のなか から | |
| | | |
|-- | module | ドライバーモジュール (梅沢無線電機社製HT2020向け) |
| | `-- source | ソースファイル群&サンプルアプリケーション(tgz圧縮) |
| | | |
ht2020用のドライバを拾わせていただきます
HT2020ドライバー (ht2020.tgz) が 梅澤無線電機株式会社製Opt-Isolatedボード向けの
Armadillo用ドライバーです。 一般的なキャラクタデバイスドライバとなっています。
ht2020.tgzは 展開すると ht2020.oという コンパイル済のドライバファイル本体が現れます
ソースから作成する場合は sourceディレクトリ下のht_2020_source.tgzを tar zxfで展開して
.c .h makefileの3点セットから Makefileの一行目をカーネルソースのあるパスに書き換え makeします
Makefile
ht2020.c
ht2020.h
モジュールをArmadillo上に転送し、以下のコマンドで組み込むことができます。
[armadillo]# insmod ht2020.o io=0x100 とコンソールから ドライバモジュールをロードします
※ioには、HT2020をマップするIOアドレスを指定してください。
(このコマンドの起動時の自動実行は /etc/rcS.d/S20modutilsの 最後のexit 0の直前に追記挿入します)
これで、ドライバモジュールの組み込みは完了です。
※「lsmod」コマンドで、組み込まれているモジュールの一覧を見ることができます。
スペシャルファイルの作成には、mknodコマンドを使用します。
mknod [options] filename type major minor
filename 作成するスペシャルファイル名
type スペシャルファイルの種類
b ブロック
c キャラクタ
u キャラクタ(バッファなし)
p FIFO
major, minor メジャー番号, マイナー番号
以下の作業はroot権限で行ってください。
mknod /dev/ht2020_100 c 222 0
mknod /dev/ht2020_101 c 222 1
mknod /dev/ht2020_102 c 222 2
mknod /dev/ht2020_103 c 222 3
chmod 666 /dev/ht2020_*
また mkdev_ht2020.sh
というスペシャルファイルを生成するためのスクリプトも
用意されていますので、こちらを使用することもできます。
このような 手順の結果 /dev下の ht2020関係の様子は 以下のようになっています:
(スペシャルファイルの 頭の c はキャラクタ型デバイスの意味です)
|
ls -l |grep ht | | |
-rw-r--r-- 1 root root | 3792 | Mar 21 11:14 ht2020.o |
crw-rw-rw- 1 root root | 222, 0 | Mar 21 11:25 ht2020_100 |
crw-rw-rw- 1 root root | 222, 1 | Mar 21 11:25 ht2020_101 |
crw-rw-rw- 1 root root | 222, 2 | Mar 21 11:25 ht2020_102 |
crw-rw-rw- 1 root root | 222, 3 | Mar 21 11:25 ht2020_103
|
I/Oへのアクセス
ドライバがロードされていれば I/Oへのアクセスは ファイルにアクセスするかのように
プログラムを作成することで行えます − それが Linuxでの柔軟性なんです
※HT2020を使用するサンプルアプリケーションとしては、ht2020_sample.tgzが
用意されていますので、参考にしてください。
ht2020_sample.c
Makefile
ということですので 参考にしましょう
(サンプルですので 各行の意味を解釈してアレンジが必要です )
最終更新日 :2005-11-28
編集管理用: ・