[KEK Online Group][Nakayoshi's Page][PCI-VME adaptor] -> [How to use]


PC/Linux から SBS Bit3 616/617/618/620 経由で VMEbus へアクセスする方法

仲吉一男, kazuo.nakayosi@kek.jp

Ver.2, 20 July 2004
VMEbus-PCI bus ブリッジ SBS Bit3 616/617/618/620 とそのドライバー vmedrv を使って Linux から VMEbus へアクセスするための方法を説明します.

1. はじめに

Linux がインストールされたデスクトップ PCから,VMEbus の各種モジュールを制御 する方法としてSBS Bit3 616/617/618/620 を利用した方法について説明します。 このハードウエアはデスクトップ PC の PCI スロットに差すための PCI カードと VME クレートに入れるための VME モジュールと両者をつなぐケーブルから構成されて います. Linux のカーネルが 2.0.x, 2.2.x の頃に Bit3 616/617 とそのLinux用デバイス ドライバ vmehb(NIKEF, Natalia)および vmelib(KEK, 仲吉)を用いて Linuxから VMEbus へアクセスする方法を紹介していたが,現在 vmehb はその開発が止まって おりカーネル 2.4.x 以降は利用できないこと,また Bit3 製品のラインナップ も変化があったため文章をリニューアルすることにした.

2. システムの特徴

3. システムの構成

4. システムの性能

システムの性能をつぎのような環境で測定した.

PC :PenII 300 MHz

OS :Linux 2.4.18

Driver: vmedrv-0.4.3

Slave: Chrislin CIVME64(Memory Board)

Data Width: 32bit

4.1 PIO 性能(PIO = Programmed I/O)

4.2 DMA 性能(DMA = Direct Memory Access)

5. インストール方法

5.1 ハードウエアのセットアップ

PCI Adaptor Card のインストール

VME Adaptor Card のインストール

ケーブルの接続

LED の確認

PC と VME Crate の電源を入れ,両システムのアダプターの LED が光っていることを確認する.

5.2 ソフトウエアのセットアップ(vmedrv)

ソフトウエアの設定について説明します.本文中で % typewriterとあった 場合, typewriterとタイプしてリターンキーを押すことを意味します. % は一般ユーザ,# はスーパユーザのときの Shell のプロンプトを表します.

デバイスドライバ(vmedrv)のダウンロード

vmedrv のファイルをダウンロードし,展開する

デバイスドライバ(vmedrv)のインストール

デバイスドライバ(vmedrv)のロード

root になり # insmod vmedrv を実行後,dmesgコマンドでドライバーのロードが正常に行われたか確認する.

以下に成功した場合の出力例(618の場合)を示す.

# insmod vmedrv

# dmesg

vmedrv: SBS(Bit3) Model 618/620 VME-PCI Bus Adapter is detected at ioport 0xb800 on irq 9.
  I/O Mapped Node at 0xb800.
  Memory Mapped Node at 0xe0800000.
  Mapping Register at 0xe0000000.
  Remote Memory at 0xde000000.
remapping pci memories...
  memory mapped node: --> 0xcc8e2000
  mapping regs: --> 0xce91a000
  window base: --> 0xce92b000
  Adapter ID (I/O): 0x83
  Adapter ID (mem): 0x83
vmedrv: successfully installed at 0xb800 on irq 9 (major = 254).

proc ファイルを見て確認を行う

以下に成功例を示す.

% cat /proc/devices

Character devices:
  1 mem
  2 pty
  3 ttyp
  4 ttyS
  5 cua
  7 vcs
 10 misc
 29 fb
 36 netlink
128 ptm
129 ptm
130 ptm
131 ptm
132 ptm
133 ptm
134 ptm
135 ptm
136 pts
137 pts
138 pts
139 pts
140 pts
141 pts
142 pts
143 pts
162 raw
180 usb
254 vmedrv <=== OK

% cat /proc/ioports

0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
02f8-02ff : serial(auto)
03c0-03df : vga+
03f8-03ff : serial(auto)
0cf8-0cff : PCI conf1
b400-b47f : Digital Equipment Corporation DECchip 21140 [FasterNet]
  b400-b47f : tulip
b800-b81f : Bit3 Computer Corp. VME Bridge Model 618
  b800-b81f : vmedrv                                     <=== OK
d000-d0ff : Adaptec AIC-7880U
d400-d41f : Intel Corp. 82371AB PIIX4 USB
  d400-d41f : usb-uhci
d800-d80f : Intel Corp. 82371AB PIIX4 IDE
  d800-d807 : ide0
  d808-d80f : ide1
e400-e43f : Intel Corp. 82371AB PIIX4 ACPI
e800-e81f : Intel Corp. 82371AB PIIX4 ACPI

% cat /proc/interrupts

           CPU0       
  0:   17513272          XT-PIC  timer
  1:        663          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  8:          1          XT-PIC  rtc
  9:      82786          XT-PIC  aic7xxx, usb-uhci, vmedrv <=== OK
 10:   12753210          XT-PIC  eth0
 12:       1932          XT-PIC  PS/2 Mouse
NMI:          0 
ERR:          0