CAMAC Device Driver on SPARC のインストール 1992年 3月29日 Version 1.00 1993年 1月25日 Version 1.21 東京工業大学大学院 竹内 康雄 ◇はじめに  近年、安価で高速なRISC/UNIXワークステーションが続々製品化されてきています。 これらのUNIXワークステーションは、高エネルギー物理実験分野をはじめ様々な分野 で新しいポータブルデータ収集、分散データ収集等を可能にするものと期待されてい ます。我々は、UNIXワークステーションの1つであるSun SPARCstationから汎用性の高 いVMEbusを経由してCAMACを操作する、「UNIXデータ収集システム」を構築しました。 そしてその基本性能を定量的に評価しました。(参考文献1) 今回、このCAMACデバイス ドライバ、ライブラリを中心としたプログラム配布キットをまとめましたので、その 簡単なインストール方法について説明します。 このCAMACライブラリの主な特徴としては以下のことが挙げられます。 o C言語、FORTRAN言語から使用できる。 o KEK online groupによるDECstation用CAMACライブラリと互換。(共同開発) o KEK online groupによるVAX用CAMACライブラリと互換性が高い。 o KEK版のCAMACリスト処理(CAMASM、CAMEXE)を装備。(ほぼ互換) o 処理速度はMicroVAXIIと同程度以上。(SPARCstation IPCで) o K2917のリスト処理(ハードウェアシーケンサ)も可能。(テスト版) o デバイスドライバは全てC言語で書かれているため、改造が容易。 ライブラリ関数の詳しい使用法などは vme/camac/doc/* を参照して下さい。 バグレポート、改良情報、質問、使用感、要望等は後述の連絡先までお寄せ下さい。 ◇配布キットの入手方法 ANONYMOUS FTP (onlnews.kek.jp 130.87.97.1) でコピーできます。 コピーされた 方は後述の連絡先までE-mailでご一報いただければ幸いです。(返信は出さないかも しれませんが...) PROMPT% ftp 130.87.97.1 Name (onlnews.kek.jp:????): ftp Password: (your E-mail address) ftp> cd pub/kek/camac ftp> binary ftp> get camac.sparc-1.20.tar.Z ftp> bye ◇動作環境 計算機: Sun SPARCstation 1+, 2, IPC, IPX等 OS: SunOS 4.1.1 JLE, SunOS 4.1.2 JLE SBus-VMEbus interface: Solflower SFVME-100, SFVME-116 VMEbus-CAMAC interface: Kinetic model 2917, 3922 必要なハードディスク空き容量: 2Mbyte程度 (さらに必要に応じて/vmunix保存用3Mbyte程度?) ◇インストールの概要  デバイスドライバとは、通常のプログラムから計算機のハードウェア等を操作する ためのソフトウェアです。UNIXではデバイスドライバはカーネルに組み込まれます。 よって、CAMACデバイスドライバを利用するためにはカーネルの再構成等が必要です。 この説明書では各機器のセットアップ、SFVME付属デバイスドライバ、CAMACデバイス ドライバのインストール、動作テストプログラムの利用法について説明します。必要 に応じてSPARC、SFVME、K2917、K3922のマニュアル等も参照して下さい。  この説明書中には、SPARCで入力するコマンドも示されています。それらのコマンド は例えば以下のように表されています。 PROMPT% su PROMPT# make kernel PROMPT# exit PROMPT% ls -al  この例中の"PROMPT% "等はシェルのプロンプトを表し、それぞれの環境によって異 なる文字列がシステムにより表示されます。この部分はタイプする必要はありません。 その後に続く文字列がタイプすべきコマンドです。明示的には示されていませんが、 各コマンドの最後には等を入力して下さい。プロンプト中の%と#については、 #は特権モード(rootの権限を持つ)を表し、%は通常の状態を表します。ここで説明す る例は安全のため2つのモードを使い分けています。全ての操作をrootでloginして行 う場合にはsu,exit等のコマンドは省略しても良く、%のコマンドもそのまま入力でき ます。なお、suコマンドの後にはrootのパスワードを入力して下さい。 ◇ハードウェアのセットアップ 1. まずSPARCstationをshutdownし、全ての機器の電源を切ります。 PROMPT% su PROMPT# shutdown -h now 2. SPARCstation背面の2箇所のネジをはずしカバーをはずします。 3. 適当なSBusスロットを選び、ふたをはずしてSFVMEのSBusボードを差し込み ます。SBusボードはデフォルトの状態で使用します。 (ただしSBus Slot3は避けて下さい。) 4. SPARCstationのカバーを元に戻します。 5. 次にK2917をSFVME-116のVMEラックに挿入します。まず、SFVMEのVMEボードが 向かって一番左端のVMEスロットに挿入されていることを確かめて下さい。こ のボードの設定はデフォルトで良いので特にはずす必要はありません。そし てVMEラック前面に電源選択スイッチがある場合、110Vに設定してあるか確認 して下さい。 6. 左から2番目のVMEスロット(SFVMEのボードのとなり)のネジをはずし、アルミ のカバーを開けて下さい。ここにK2917を挿入しますが、他のスロットでも可 能です。そしてそのスロットのVMEバックプレーン上の上下2つの96pinコネク タのうち、上側のコネクタの向かって左側にある5つのジャンパーピンを全て はずします。 7. K2917のジャンパーピンの設定をします。K2917のマニュアルを参照して、DMA 転送時のLO/HIの設定をHI/LOに変えて下さい。(1箇所) あとはデフォルトの 設定であることを確認して下さい。 8. 先ほどVMEラックのジャンパーピンをはずしたスロットにK2917を差し込みま す。 9. SFVME付属のケーブルで2つのボードを接続します。(このケーブルは1mまで延 長できるようです。詳しくは日商エレクトロニクス、Solflower等に問い合わ せて下さい。) 10. 次にK2917とK3922を接続します。ステップ9まででとりあえずデバイスドライ バはインストールできるので、ステップ10以降はあとまわしにしても構いま せん。 11. K3922をマニュアルに従い設定します。典型的な設定の例は、K3922付属のタ ーミネータとLEMOケーブルをマニュアルを参照しながらK3922に接続し、そし てK3922のアドレスを0に設定するだけです。 12. K3922とK2917を接続します。このケーブルはどの製品にも付属していないた め、自作するか別に購入する必要があります。このケーブルの長さは最長90m まで可能なようです。詳しくは東洋テクニカ、Kinetic等に問い合わせて下さ い。 13. K3922をCAMACクレートの向かって右端に挿入します。 14. 次の注意に従って順に機器の電源を入れ、SunOSを起動します。 ◇電源に関する注意  ハードウェアのセットアップが終了したら電源をいれます。基本的なことですが、 電源を入れる順序は周辺機器(SFVME-116を含む) -> CPUの順にして下さい。そして、 SunOSが動作している間はSFVME-116の電源を切らないように注意して下さい。たとえ CAMACをアクセスしていない時であっても、SunOSの動作中にSFVME-116の電源を切る とシステムエラーが起こり、リブートされてしまいます。また、SunOSの起動時にハ ードウェアのチェックが行われます。この時、SFVME-116の電源が入っていない場合や K2917がVMEbus上に存在しない場合にはCAMACデバイスドライバは組み込まれません。 一方、CAMACクレートの電源はアクセスしていない時ならばいつでもOn/Offできます。 ◇デバイスドライバのインストール 1. まず、自分のアカウントでログインします。ここでは例としてユーザーIDを takeuchiとします。タイプする時はそれぞれのIDに置き換えて下さい。好み によりウィンドウ等を開いても結構です。 2. デバイスドライバのファイルを作業用ディレクトリにロードします。ここ では /home/takeuchi/vme にロードしますが、他のディレクトリでも結構で す。 (FDを使う場合) (FDを入れる) PROMPT% tar xvf /def/rfd0 PROMPT% eject (Networkを使う場合1) PROMPT% ftp onlnews.kek.jp (Anonymous FTP) FTP> cd pub/kek/camac FTP> binary FTP> get camac.sparc-1.20.tar.Z FTP> bye (Networkを使う場合2) PROMPT% ftp kekvax.kek.jp FTP> cd user$disk1:[take.vme] FTP> binary FTP> get camac-sparc-120.taz camac.sparc-1.20.tar.Z FTP> bye PROMPT% zcat camac.sparc-1.20.tar.Z | tar xvf - 3. SFVME付属のフロッピーディスクから、ファイルを作業用ディレクトリにロー ドします。 PROMPT% cd /usr/home/takeuchi/vme/sfvme (FDを入れる) PROMPT% tar xvf /def/rfd0 PROMPT% eject 4. まず、SFVME関係のファイルのインストールをします。必要に応じてSFVMEの マニュアルを参照して下さい。 PROMPT% cd /usr/home/takeuchi/vme/sfvme 5. 修正が必要なファイルのオリジナルを残します。さらにinstall.shの内容を 確認してコピー先のファイルが上書きされないように退避した後install.sh を実行します。必要に応じてMakefileを書き変えて下さい。 PROMPT% cat install.sh PROMPT% su PROMPT# make backup PROMPT# sh install.sh 6. SFVMEのヘッダファイルをシンボリックリンクします。 PROMPT# make header PROMPT# exit 7. /sys/sun/conf.c.original の内容を確認します。以前に変更がなければ以下 のような部分があるはずです。この右端のコメント中の番号は(102, 103等) 各デバイスドライバに1対1に対応しています。SunOS 4.1.1の場合、インスト ールするSFVMEデバイスドライバは104(SunOS 4.1.2では105)になります。 この番号はSFVME.MAKEDEV中で指定します。vi等でSFVME.MAKEDEVを確認・ 修正して下さい。 ============================================================================ START OF conf.c.original (SunOS 4.1.1の例) ============================================================================ . . (省略) . . { cgtwelveopen, cgtwelveclose, nodev, nodev, /*102*/ cgtwelveioctl, nodev, nodev, cgtwelvemmap, 0, cgtwelvesegmap, }, { gaoneopen, gaoneclose, nodev, nodev, /*103*/ gaoneioctl, nodev, nodev, gaonemmap, 0, gaonesegmap, }, }; int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); . . (省略) . . ============================================================================ END OF conf.c.original ============================================================================ PROMPT% vi /sys/sun/conf.c <- デバイスドライバ番号の 最後はいくつか確認する PROMPT% vi SFVME.MAKEDEV <- sfvmemajor=104 の部分を 必要に応じて変更する PROMPT% su PROMPT# cd /dev PROMPT# ls -al sfvme* <- ファイルがない事を確認 PROMPT# sh /home/takeuchi/vme/sfvme/SFVME.MAKEDEV PROMPT# chmod 666 sfvme* PROMPT# ls -al sfvme* <- つくられたはず PROMPT# exit 8. 次にCAMAC関係のファイルのインストールをして、カーネルを再構成します。 PROMPT% cd /home/takeuchi/vme/camac/dev 9. カレントディレクトリに、システムのオリジナルファイルを参照して./CAMAC ./conf.c ./files を作成します。(ステップ5.でファイル名が変更されている ことに注意。ここではそのファイル名で検索します。) PROMPT% make newfiles 10. ./CAMAC ./conf.c ./filesを修正します。我々のファイルシステムの変更前 と変更後の例を、それぞれ ../titech/4.1.x/org/* と ../titech/4.1.x/mod/* にあげたので、それを参考にして修正して下さい。 (CAMACの修正) PROMPT% diff CAMAC ../titech/4.1.x/org/GENERIC (同じ場合) PROMPT% cp ../titech/4.1.x/mod/CAMAC . (異なる場合) PROMPT% vi CAMAC (../titech/4.1.x/org/GENERIC と ../titech/4.1.x/mod/CAMACを参照しながら修正する。) (conf.cの修正) PROMPT% diff conf.c ../titech/4.1.x/org/conf.c (同じ場合) PROMPT% cp ../titech/4.1.x/mod/conf.c . (異なる場合) PROMPT% vi conf.c (filesの修正) 変更箇所は最後の数行。 11. CAMACのデバイスファイル(/dev/cc)を作成します。デフォルトのデバイス 番号は105です。ステップ7.のsfvmemajor=XXXに合わせて下さい。 PROMPT% vi Makefile <- 最後の行の105を変更する場合 PROMPT% su PROMPT# make node PROMPT# exit 12. 現在のカーネルを保存した後、カーネルを再構成しリブートします。 コンパイルには少々時間がかかります。エラーメッセージに注意して下さい。 PROMPT% df <- /のディスク容量に注意 PROMPT% su PROMPT# mv /vmunix /vmunix.original PROMPT# make kernel PROMPT# fastboot 13. システムの起動時のメッセージに注意して下さい。 vme0 at SBus slot 1 0x7ff000 ... cc0 at vme16d16 0xff00 vec 0xff ... 等の表示があるはずです。(アドレスは異なる場合があります。) 14. ログインしてCAMACのディレクトリに移動します。 PROMPT% cd /home/takeuchi/vme/camac 15. Makefileを書き換えてCAMACライブラリ等をインストールするディレクトリを 指定します。デフォルトでは DISTDIR = /usr/local/vme に設定されていま す。DISTDIRを変更した場合、他のMakefileも書き換えて下さい。 そしてライブラリを構築し、インストールします。 PROMPT% vi Makefile <- DISTDIRを変更したい場合 PROMPT% make library PROMPT% su PROMPT# make install PROMPT# exit 16. テストプログラム等をコンパイルします。 PROMPT% make sample ◇動作テスト  ここでは配布アーカイブに含まれるサンプル兼テストプログラムを用いて、CAMAC デバイスドライバ等の動作テストを行う一例について示します。 1. SFVMEのレジスタ読みだし試験 (vme/tools/sreg1.c) このプログラムはSPARCのシステム関数のみで作られています。よってボード が正常にインストールされているかがわかります。SPARCのboot時のシステム からのメッセージから、SFVMEがSBusのどのslotに差し込まれているかがわか ります。(dmesgコマンドでもわかる。)そのスロットをここでは仮に1としま す。まず、SBus1デバイスにアクセスできるようにします。 PROMPT% su PROMPT# chmod 666 /dev/sbus1 PROMPT# exit 次にsfvme_config.hを修正し、sreg1.cをコンパイルします。SFVME-100の 場合は"#define SFVME116"をコメントアウトして下さい。 PROMPT% cd vme/tools PROMPT% vi sfvme_config.h <- commentをはずす。 PROMPT% make sreg1 そしてsreg1を実行し、正常に動作すればOKです。 PROMPT% sreg1 2. K2917のレジスタ読みだし試験 (vme/tools/kreg1.c) このプログラムは、SPARCの関数とSFVME付属のデバイスドライバの機能のみ を利用しています。このプログラムにより、K2917の動作確認とSFVMEのデバ イスドライバの動作確認ができます。 PROMPT% cd vme/tools PROMPT% make kreg1 PROMPT% kreg1 3. CAMACシングルアクション試験 (vme/camac/examples/cam1.c) このプログラムは、SPARCの関数とCAMACデバイスドライバの機能を利用して います。このプログラムを実行する前にK2917とK3922を接続し、CAMACクレー トの電源を入れておいて下さい。 PROMPT% cd vme/camac/examples PROMPT% make cam1 PROMPT% cam1 4. CAMACブロック転送試験 (vme/camac/fortran/cam2.f) このプログラムは、SPARCの関数とCAMACデバイスドライバの機能を利用して います。このプログラムによりDMAが正常に動くか確認できます。 PROMPT% cd vme/camac/fortran PROMPT% make cam2 PROMPT% cam2 5. LAM割り込み試験 (vme/camac/examples/cam3.c) このプログラムは、SPARCの関数とSFVMEの割り込み機能とCAMACデバイスドラ イバの機能を利用しています。このプログラムにより割り込み操作が正常に 動くか確認できます。このプログラムはデフォルトではCAMAC N=11にスイッ チレジスタモジュール等のLAMソースがあることを仮定しています。必要に応 じてプログラムを修正して下さい。 PROMPT% cd vme/camac/examples PROMPT% make cam3 PROMPT% cam3 6. CAMACリスト処理試験 (vme/camac/examples/cam4.c) このプログラムにより、CAMACリスト処理機能が正常に動作するか確認できま す。必要に応じてCAMACリストcam4.asmを変更して下さい。 PROMPT% cd vme/camac/examples PROMPT% make cam4 PROMPT% cam4 ◇配布に関する条件 o 改造、複製等は自由です。 o 致命的なバグフィクス等の改善を施した場合にはできるだけ フィードバックして下さい。 o 商利用の際は必ず事前にご連絡下さい。 o 販売等はしないで下さい。 o この説明書の内容、プログラムの動作、バグフィクス等に関しての保証は  しません。全て使用者の責任において処理して下さい。 ◇参考文献 1. 竹内康雄、UNIX-VME高速データ収集システムの開発、 修士論文、1992年 2. Y.YASU and M.NOMACHI, CAMAC Device Driver on VAX/VMS version 1.0, KEK Internal 90-2, 1990 3. M.Nomachi, CAMEXE (a virtual machine which execute CAMAC operations) and CAMASM (a macro assembler for CAMEXE machine code), KEK on-line group, 1987 等 ◇連絡先 〒152 東京都目黒区大岡山 2-12-1 東京工業大学 理学部 物理 渡辺・谷森研 竹内 康雄 TEL 03-3726-1111 ext.2388, 2081 FAX 03-3720-9083 E-mail DECnet KEKVAX::TAKE, TITHEP::TAKEUCHI Internet take@kekvax.kek.jp