次のページ 前のページ 目次へ

3. VMEUtils と VMEShell パッケージで VMEbus と対話する方法

3.1 VMEUtils プログラムとは何か

このプログラムはそのまま実行できます。一度スタートしたら、コマンド ・プロンプトが現れます。「?」をタイプすればコマンドのリストが 現れます。これでも使えるでしょうが、VMEShell スクリプトを 使う方が便利だということに気が付かれることでしょう。 VMEShell スクリプトはカーネル・ドライバと対話するために VMEUtils プログラムを使うので、環境変数 PATH に VMEUtils へのパスを設定して おく必要があります。

「vmeutils」のソースコードも、カーネル・ドライバと直接対話する仕方 のお手本です。直接ドライバと対話をするプログラムを作りたい人にとって 、これらのソースファイルは良い実例です。

3.2 VMEShell スクリプトとは何か

VMEShell プログラムは、UNIX シェル・スクリプトです。これはオペレータ に VMEbus 上のデータにアクセスするためのシンプルな方法を提供します。 これらのコマンドを使うことにより最新のアクセス情報を保存したテンポラ リ・ファイルをユーザのワーキング・ディレクトリに作ります。これは なかなか嬉しい機能です。なぜならマシンから一度ログオフし、再度ログインして 中断したところから続行するときに、VMEbus の情報を再度入手する必要がない からです。 さらに、これらのファイルはカレント・ディレクトリに保存されるので、 アクセスしたい VME ボード毎に異なるディレクトリを設定すれば、 それぞれの VME アクセス設定を別々に保存しておけます。

シェル・プログラムと「vmeutils」プログラムが /usr/local/bin ディレクト リにあるなら、一般ユーザとしてログインし、それらを実行すること ができるでしょう。以下の記述では、このことを前提としています。

3.3 vmemap コマンド

一般ユーザとしてログインし、テスト用のディレクトリを作ります。 このディレクトリで以下のようにタイプします -

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 0
VMELinux ドライバを、 A16 ボードのベースアドレス 0x8000 から 0x100 バイトのメモリ領域に、 16 ビットのデータ幅、 USR/DATA モードでアクセスするように設定します。

カレント・ディレクトリに 2 つ新しいファイルができるはずです。

fa.vme は「固定アドレス」値を保存しています。このアドレス値は次に挙げる プログラムが後でアクセスを行う際に必ず加えられます。

map.vme は毎回上記のパラメータを入力しなくてもよいよう に、それらを保存しています。

以下の全てのシェル・ユーティリティは、 VME アクセスを実行する際、 これら 2 つのファイルから値を読みます。

3.4 バイト、ワード、ロング長のデータを読む

Syntax:

3.5 バイト、ワード、ロング長のデータを書く

Syntax:

3.6 ファイルで VMEbus のデータを読む

Syntax:

3.7 VMEbus のデータをファイルへ書く

Syntax:

3.8 パラメータ

これらのコマンドと共に使用するパラメータがいくつかあります - address, size, filename です。

3.9 オプション

使用できるオプションは、 - (ハイフン)をつけて明示します。 以下の任意の組合せが可能です。

3.10 DMA モードに関する注意

VMELinux は、Universe チップの機能への全てのアクセスを提供します。 特に有用なものは、チップ上の DMA エンジンへのアクセスです。この機能を 使うと、Universe チップは PCI マスターになって PCI bus 上でデータ を転送します。これも嬉しい機能ですが、しかし本当の利益は VMEbus アクセスに由来します。たとえ VMEbus インターフェイスがブロックモード 転送を使用していなくても、Universe チップは 400 ナノ秒で転送を完了し ます。これが Universe が PCI bus と VMEbus の両方を完全にコントロール したことによる直接の結果です。したがって古いテクノロジーのものより、 さらに速くノンブロック・モードの VMEbus 周辺機器へアクセスが可能なのです。


次のページ 前のページ 目次へ