KiNOKO-DAQ 関連情報 掲示板

このスレッドに記事を投稿する
前のスレッド | 次のスレッド | 掲示版ホーム

VME slave address
2002-10-16 01:27
投稿者: 松本偉史

筑波大学の松本です。

bit3 の向こう側(VME のモジュール側)から
bit3 へデータを DMA 転送しようとしています。
その際に、bit3 の VME slave address が必要らしい
のですが、それがなんのことなのか分からないでいます。

いろいろ試してみましたが、
Local DMA VMEbus Address Register の中身を
見ればよいのではないか、と思い立ちました。
ところが、こいつの見方が分かりません。
やってみたのをおおざっぱに書くと、

1) fd=open(/dev/vmedrv32d32, O_RDWR);
2) lseek(fd, 0x????, SEEK_SET);
3) read(fd, &buf, 4, sizeof(buf));

で、0x???? のところを 0x2012 とか
0x14 ( = 0x02 + 0x12 ) とかいろいろに
して見てみたのですが、
それらしい値は返ってきませんでした。
ジャンパは初期設定のままなので HI も LO も
2 になっているのですが、、、

あと、hardware manual によると
これに似たやつで I/O base というのも
あるようですが、それもやっぱり見えません。
そもそも何か勘違いしているのでしょうか?

すみませんが、教えてください。
よろしくお願いします。



2002 年 10 月 16 日 11 時 9 分
投稿者: 榎本 三四郎

Bit3 で VME 側からの(VME の他のモジュールがマスタになっての)データ転送を
行なうには,Remote RAM Window を使います.これは VME 側から見える Bit3
カードのアドレス領域で,Bit3 内部の VMEbus to PCI Bus Mapping Registers
を適切に設定すると,この領域へのアクセスが対応する PCI のアクセスに変換されます.

アダプタカードにしてみれば,VME 側のアクセスが DMA でも PIO でも違いはありません.
通常 DMA というのはデータ転送をコントロールするバスマスタ側の問題で,このケース
では Bit3 アダプタはマスタの転送命令に従うだけのスレーブになるからです.
従って,Bit3 の DMA 関係のレジスタは,この場合は関係ありません.

だた,現在の vmedrv では,この Remote RAM Window を使用する機能は実装されていません.
最大の理由は,手持の器機でテストできないことです.vmedrv では PCI から VME
のアクセスに PCI Bus to VMEbus Mapping Registers を使っているので,このへんを
ちょっと編集すれば,VME から PCI のアクセスも比較的容易に実装できそうな気もします.

この機能が実装されていないもう一つの理由は,多分この機能を使うことはそんなにないだろう
という読みがあったからです.ほとんどの VME から PCI への転送は, CPU のある PCI 側
から計測器のある VME 側を読むという形で行なわれていて,外部から PCI のメモリに直接
書き込むことは,同期やユーザ領域への転送も含めて,何かと使いにくそうに見えます.
(VME 側に CPU を置いて,PCI のカードからデータを読む場合は,もちろん逆になりますが,
Linux PC で動作する vmedrv の場合はこの情况はちょっと考えにくいです)
そして,マスタ機能を持ったモジュールというのは,大体は高級品で,おそらくスレーブ
としても使えるに違いないという思い込みもあります.

使用しているモジュールでは,そこから普通にデータを読むことはできないでしょうか?
普通にデータ読みだしができれば,DMA 読みだしもできるはずです.この場合はモジュール
がスレーブになるからです.

捕捉ですが,vmedrv では,Bit3 内部のレジスタに直接アクセスすることは一切できません.
これらのレジスタは PCI にマップされていて,Linux カーネルの機能によりアクセス
できます.マニュアルにのっているレジスタのアドレスは全て PCI 上のアドレスです.
vmedrv の役割は,このカーネルの機能を利用してレジスタをコントロールし,
ユーザに VME への直接アクセスを提供することです.PCI 上のアドレスを読み書きしたいなら,
自分でデバイスドライバを書くことになります.



2002 年 10 月 16 日 11 時 9 分
投稿者: 松本偉史

筑波大の松本です。

やっぱり普通は使わないですか。
ちらっとそうかなあとは思ったのですが、、、

今のところ、read/write/mmap はちゃんと動いています。
だからもうちょっと違う方法があるのでしょう。
と思いたいです。

いろいろ調べてみます。
アドバイスありがとうございます。



2002 年 10 月 16 日 11 時 11 分
投稿者: 松本 偉史

なんだか変なところに書き込んでしまったようで、、、

これから気をつけます。
(といってもこの文もちゃんとしたところに書けるかどうか分かりませんが)



2002 年 10 月 16 日 11 時 13 分
投稿者: 松本

あれ?
ちゃんとできてますね。
たびたび申し訳ありません。



2002 年 10 月 16 日 11 時 15 分
投稿者: 榎本 三四郎

ちょうど掲示板のシステムをいじっていたところだったので,順番が混乱してしまったようです.
完全にこっちの問題です.すいません.手で直しておきました.


このスレッドに記事を投稿する