このプログラムはそのまま実行できます。一度スタートしたら、コマンド ・プロンプトが現れます。「?」をタイプすればコマンドのリストが 現れます。これでも使えるでしょうが、VMEShell スクリプトを 使う方が便利だということに気が付かれることでしょう。 VMEShell スクリプトはカーネル・ドライバと対話するために VMEUtils プログラムを使うので、環境変数 PATH に VMEUtils へのパスを設定して おく必要があります。
「vmeutils」のソースコードも、カーネル・ドライバと直接対話する仕方 のお手本です。直接ドライバと対話をするプログラムを作りたい人にとって 、これらのソースファイルは良い実例です。
VMEShell プログラムは、UNIX シェル・スクリプトです。これはオペレータ に VMEbus 上のデータにアクセスするためのシンプルな方法を提供します。 これらのコマンドを使うことにより最新のアクセス情報を保存したテンポラ リ・ファイルをユーザのワーキング・ディレクトリに作ります。これは なかなか嬉しい機能です。なぜならマシンから一度ログオフし、再度ログインして 中断したところから続行するときに、VMEbus の情報を再度入手する必要がない からです。 さらに、これらのファイルはカレント・ディレクトリに保存されるので、 アクセスしたい VME ボード毎に異なるディレクトリを設定すれば、 それぞれの VME アクセス設定を別々に保存しておけます。
シェル・プログラムと「vmeutils」プログラムが /usr/local/bin ディレクト リにあるなら、一般ユーザとしてログインし、それらを実行すること ができるでしょう。以下の記述では、このことを前提としています。
一般ユーザとしてログインし、テスト用のディレクトリを作ります。 このディレクトリで以下のようにタイプします -
vmemapこのようなヘルプ画面が表示されます。
Usage: map address count space size type where address is VME Address to set Universe image to Space = 0 CR/CSR Space = 1 A16 Space = 2 A24 Space = 3 A32 Size = 1 8 bit Size = 2 16 bit Size = 3 32 bit Size = 4 64 bit Type = 0 USR/DATA Type = 1 USR/PRG Type = 2 SUP/DATA Type = 3 SUP/PRGここは VMEbus にどのようにアクセスしたいかを VMELinux へ教えるところで す。あなたはすでに VMEbus のたくさんのオペレーション・モードを知 っていると思いますが、助けになるように短いリストを示します。
vmemap 0x8000 0x100 1 2 0VMELinux ドライバを、 A16 ボードのベースアドレス 0x8000 から 0x100 バイトのメモリ領域に、 16 ビットのデータ幅、 USR/DATA モードでアクセスするように設定します。
カレント・ディレクトリに 2 つ新しいファイルができるはずです。
map.vme は毎回上記のパラメータを入力しなくてもよいよう に、それらを保存しています。
以下の全てのシェル・ユーティリティは、 VME アクセスを実行する際、 これら 2 つのファイルから値を読みます。
Syntax:
Syntax:
Syntax:
Syntax:
これらのコマンドと共に使用するパラメータがいくつかあります - address, size, filename です。
使用できるオプションは、 - (ハイフン)をつけて明示します。 以下の任意の組合せが可能です。
VMELinux は、Universe チップの機能への全てのアクセスを提供します。 特に有用なものは、チップ上の DMA エンジンへのアクセスです。この機能を 使うと、Universe チップは PCI マスターになって PCI bus 上でデータ を転送します。これも嬉しい機能ですが、しかし本当の利益は VMEbus アクセスに由来します。たとえ VMEbus インターフェイスがブロックモード 転送を使用していなくても、Universe チップは 400 ナノ秒で転送を完了し ます。これが Universe が PCI bus と VMEbus の両方を完全にコントロール したことによる直接の結果です。したがって古いテクノロジーのものより、 さらに速くノンブロック・モードの VMEbus 周辺機器へアクセスが可能なのです。