KiNOKO-DAQ 関連情報 掲示板

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

Kinetic2917 - Kinetic3922
2003 年 7 月 10 日 13 時 27 分
投稿者: 市原 佳代子

SBS (Bit3) Model-620 +
Kinetic System: K-BUS INYERFACE 2917 +
Kinetic System: PARALLEL BUS CRATE CONTROLLER 3922 +
Repic: CSADC RPC-022

データ収集することに挑戦しています。新しいバージョンのkinokoを早速試し
てみましたが、つまずいてしまいました。

VMEを使うのは初めてで分らないことが多く,細かいことや当たり前のことを
ごちゃごちゃ書きますが,なにとぞお許し下さい。

VmeCamacBridge.ktsをそのまま使ってみるため,CrateNumber8 に
CSADC(RPC-022)を差しました.ただし、5Hz 幅 250nsecのgateのみを入力して
います。また、CSADC(RPC-022)内蔵のジャンパーSWは LAM-En にしました。

すでにインストールしていたkinokoのディレクトリー名をkinoko1として,
KiNOKO Version 1.0 Release 2 (V1.0R2)を展開し,コンパイルしました。こ
のkinokoの中のvmedrvをコンパイルして,インストールしました。

ここで,転送モードの選択など,何かしなければいけないような気がしますが,
良くわからないので,とにかく,TinyKinokoを起動させました。

% cd kinoko/local/samples
% tinykinoko-tcltk

Readout Script (.kts): VmeCamacBridge.kts
Data File (.kdf): test01.kdf
# of events: 10

すると,viが起動して,
---------------------------
Press Ctrl-c to stop
K2917: Initialize()
---------------------------
と言ったまま,止まってしまいます。

根気良く待っていると,viは消えましたが.データはとれませんでした。

-----------------------------------------------------------
操作している間、モジュールのようすを眺めていました。

SBS (Bit3) Model-620はLOCALだけが点灯したままで,変化がありません。

Kinetic System: PARALLEL BUS CRATE CONTROLLER 3922 は
NO-Q,NO-X,INHIBITがそれぞれ転倒しています。これも変化はありません。

LAM のEn or Disをチェックするため,CrateNumber1
に 8ch 12bit Scaler を差しています.LAMはdisenableのままでした。
--------------------------------------------------------------

kernel/lib-common/room/bridge-Kinetic_2917.ccを見ていると.

>
> int TVmeCamacBridge_Kinetic_2917::Initialize(void) throw(THardwareException)
> {
> (cout << "K2917: Initialize()" << endl);
>
> WordAt(regCSR) = bitCSR_RST;
>
> // Enable LAM //
> int N, F, A, Data, Q, X;
> ExecuteSingleTransfer(
> _CrateNumber, N = 30, F = 17, A = 13, Data = 0xffffff, Q, X
> );
>

N=30とありますが,私はいまハーフクレートを使っていて,
Kinetic System: PARALLEL BUS CRATE CONTROLLER 3922は11にささっています.
N=11とするべきでしょうか?

それとも,他にするべきことがあるのでしょうか?



2003 年 7 月 11 日 5 時 49 分
投稿者: 榎本 三四郎


詳細な説明,ありがとうございます.ほとんどの場合は情報が足りなく,情况を把握するのが難しいので,これくらい詳しく書いてもらえると,とても助かります.

完全に書き忘れていたのですが,VmeCamacBridge.kts を使う場合は K3922 のフロントパネルにある Crate Address を 1 に設定してください.Kinoko の他の部分ではクレートアドレスに 0 を使うことが多いのですが,K3922 のマニュアルに,"This is generally '1' for a single-crate system" と書いてあったので,それに従いました.Kinoko では,工場設定値をデフォルトの値として使うようにしています.

vmedrv に関しては,適切にインストールされていれば,ドライバ自体としてはそれ以外の設定は必要ありません.K2917 は割り込みを使うので,VME のクレートのバックプレーンのジャンパ (IACK-IN/IACK-OUT) を設定しなければならないことに注意してください(これを自動で行なうクレートもあります).

K3922 へのコマンドに N30 を使うことは,コントローラが実際にどこに入っているかには関係ないはずです.N30 に対しては,コントローラが自分でそれを処理して,バックプレーンのデータウェイとは何の入出力もしません.実際,フルクレートでもスロットは 24 個しかありませんし,K3922 を補助コントローラとして使った場合には,そもそもどのスロットに入っているかをコントローラが知ることはできません.たぶん.

K2917: Initialize() というメッセージは,デバッグ用のもので,消し忘れていました.すいません.特に害はありませんが,目障りなら削除してコンパイルしなおしてください.

動かない原因は,たぶん K3922 のクレートアドレスの設定が 1 になっていないことだと思います.あと,K3922 のフロントパネルの REQUEST と GRANT-IN が接続されていること,スイッチが ONLINE になっていること,K3922 と K2917 の接続ラインがターミネートされていること(K3922 の DB2 にターミネータがさされていること)も一応確認してください.


SBS (Bit3) Model-620が動作してないかもしれません。
2003 年 7 月 20 日 19 時 20 分
投稿者: 市原佳代子

早速のご丁寧なご返事本当にありがとうございます。

K3922 のフロントパネルにある Crate Address を 0 に設定して使用して
いました。すぐに、Crate Address を 1 に設定しました。TinyKinokoを
起動させ,コントロールパネルの [start] ボタンをクリックしました。しかし、
viが起動して,
---------------------------
Press Ctrl-c to stop
K2917: Initialize()
---------------------------
と言ったまま,止まってしまいました。

K3922 のフロントパネルの REQUEST と GRANT-IN は接続されていました。
スイッチは ONLINE になっていました。

K3922 の DB2 に差すターミネータとは約1辺が5cmの四角い緑色(3922 BUS
TERMINATOR)のものでしょうか? K3922 を後ろから見ると左からP1、P4、P5
(P4とP5は同じ基板上にあります。)と3つのコネクターが見えます。私は
3922 BUS TERMINATOR をJ5に差しています。

また、J4のコネクターとK2917をフラットケーブルで接続しています。このフ
ラットケーブルはガイドの突起がないため、差す方向に2つ解があります。常
識的にK3922 と K2917の両方のコネクターでフラットケーブルの赤いラインが
下に来るようにして使用しています。

やっている手順に間違いはないようでしたので、各モジュールが正常に働いて
いるか確認してみました。

Kinetic System: PARALLEL BUS CRATE CONTROLLER 3922、
Repic: CSADC RPC-022
はもう1台ありましたので、交換しましたが、改善は見られませんでした。

だた、
Kinetic System: K-BUS INYERFACE 2917、
Kinetic System: PARALLEL BUS CRATE CONTROLLER 3922、
Repic: CSADC RPC-022
についてはそれぞれシステムで使用していた時は動作していたようです。

次に、SBS (Bit3) Model-620が動作しているのかを確認しました。読み書き
ができるモジュールとして、C.A.E.NのI/O Register(Mod V262)を用いました。

C.A.E.NのI/O Register(Mod V262)はA24,D16 modeで、

BASE addredd bit <11..8> は 4
BASE addredd bit <15..12> は 0
BASE addredd bit <19..16> は 1
BASE addredd bit <23..20> は 0

と rotary switchesで決められています。

Manualに

A reading cycle to the BASE+$0A address reads in the NIM level
register. The VME reading of the NIM levels register at bass
address+$0A can be made a word size.

また、BASE+$FE BASE+$FC and BASE+$FA are used to identify the
module. などと書いていますので、~/kinoko/drv/vmedrv/vmeget
を使って、SBS (Bit3) Model-620が動作しているのか確認してみました。

まず、vmeget.cの
#define DEV_FILE "/dev/vmedrv32d32"を
#define DEV_FILE "/dev/vmedrv24d16"に書き換えて、

% make

とコンパイルしました。そして、

% ./vmeget 0x01040a を実行すると 0xefdfefdf
次に、
% ./vmeget 0x0104fe を実行すると 0x2f572f57
% ./vmeget 0x0104fc を実行すると 0x2f572f57
% ./vmeget 0x01040a を実行すると 0x2f572f57

というようになりました。0x0104feは決まった値だと思うのですが、必ず同じ
値が返ってくるわけではありませんでした。
BASE+$FE は Version / Module's serial N'
BASE+$FC は Manufacturer N' / Type of module
ですから、同じ値なはずはないと思います。

SBS (Bit3) Model-620は動作していないのでしょうか?
私のチェック方法が正しくないのでしょうか?

----------------------------------------------------

最後に少し、気になることがありますので、付け加えておきます。
実は、この数週間、PCが非常に不安定でした。

機種: Aptiva(IBM)
CPU Pentium: (200MHz)
Hard Disc: 4.2GB (増設)
Memory: 32MB

と言う性能ですので、フリーズしても性能が低いことが原因であろうとはじめ
は全然、気に止めていませんでした。

また、vmedrvのインストールがうまくいかないことが何度もありました。はじ
めはVME のモジュールをさしたり、ぬいたり、PCを再起動させたりすると何度
かに一回はmake installのあとエラーを言わずinstallに成功していました。
しかし、最終的にPCを再起動するだけで、3回に1回はvmedrvのインストールに
成功することがわかりました。

しかし、この状況でtinykinoko-tcltk を起動さたり、vmegetを実行したりし
ていると10分も使用しないうちに、フリーズしてctr+alt+delも受け付けない
状態になります。主電源で電源を落して使用していましたが、とうとう、最後
にはPC自体は起動すらしなくなりました。

即、再インストールを行ないましたが不安定なままで、SBS (Bit3) Model-620
の動作確認が進まないので、もう少し性能が良いPCを導入しました。CPU は
1400MHzで、Memoryは120MBです。このPCを導入してからは、ctr+alt+delも受
け付けない状態は1度あっただけです。しかし、make installのあとエラーを
言わずプロンプトが戻ってくるまでに、PCを数回再起動させる必要があります。

私はRed Had Linux 7.0Jにkernel 2.2.24をインストールしています。カーネ
ル再構築がうまくいっていないのかもしれません。kernel 2.2.24をインストー
ルしただけで、何も設定していません。カーネル再構築がうまくいっていない
とSBS (Bit3) Model-620は正しく動作しないのでしょうか?

-------------------------------------------------------
make installのあとのエラーです。

# make install
vmedrv.o: init_module: デバイスもしくはリソースがビジー状態です
Hint: insmod errors can be caused by incorrect module parameters, including in
lid IO or IRQ parameters

または、

# make install
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
mknod: 引数の数が違います
詳しくは `mknod --help' を実行して下さい.
chmod: /dev/vmedrv: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv16d16: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv16d32: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv24d16: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv24d32: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv32d16: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv32d32: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv24d16dma: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv24d32dma: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv32d16dma: そのようなファイルやディレクトリはありません
chmod: /dev/vmedrv32d32dma: そのようなファイルやディレクトリはありません
make: *** [install] エラー 1



2003 年 7 月 22 日 15 時 31 分
投稿者: 榎本 三四郎

遅くなってすいません.

たぶん vmedrv が正しく動作していないと思います.
make install をしたあとの dmesg の出力はどうなっているでしょうか.
それ以外でも,たまに dmesg をしてみると,何かメッセージが出ているかも
しれません.

原因としていちばん考えられるのは,IRQ の競合です.vmedrv は一応 IRQ
の共有ができるようにしてありますが,私の環境では IRQ の競合が起きないので,
テストをしたことがありません(ソースコード上では大した違いはないのですが...).
また,競合しているデバイスが IRQ の共有を許していなければ,make install
で device busy のエラーが出ますし,IRQ の共有を禁止していなくても,
ハンドリングが適切になされていなければ,カーネルの停止などを引き起こします.
理由は知りませんが,IRQ の割り当ては起動するたびに変わることがあるので,
この類の問題は再現性がないことが多いです.

現在割り当てられている IRQ は,/sbin/lspci -v で調べることができます.
もし SBS-620 と同じ IRQ が別のデバイスにも割り当てられているなら,
不要なデバイスを外すとか,BIOS で手動で割り当てるとか,使っている
PCI のスロットを変えてみるなどすると,IRQ の割り当てを変えることができます.

あと,確認したいのですが,PC が固まるというのは,VME にアクセスした
瞬間でしょうか.それとも,ドライバをインストールすると不安定になって,
使っているうちに固まる,というのでしょうか.また,固まったときに
画面に Oops などのクラッシュメッセージが表示されるでしょうか.
あと,固まったときに PC はそのままで VME の電源を切ってみて,
PC が回復するかも調べてみてください.



2003 年 7 月 29 日 17 時 22 分
投稿者: 市原 佳代子


/sbin/lspci -v で調べたところ、IRQの競合が原因ではありませんでした。

% /sbin/lspci -v
00:0a.0 Bridge: Bit3 Computer Corp. VME Bridge Model 618 (rev 42)
    Flags: bus master, slow devsel, latency 32, IRQ 3
    I/O ports at dc00
    Memory at da000000 (32-bit, non-prefetchable)
    Memory at da010000 (32-bit, non-prefetchable)
    Memory at d4000000 (32-bit, non-prefetchable)

とVME-PCIアダプターのIRQは3と割り当てられていますが、他にIRQが3と割り
当てられているものは表示されませんでした。

カーネル再構築がうまくいっていないのかもしれないと思い、vmedrvをそのま
まコンパイルできるVine Linux 2.1.5をCPU:1400MHz、Memory:120MBのPCにイ
ンストールしました。しかし、以前とよく似た症状を示しています。

現状で固まるパターンはmake installを実行したあとが最も多く、プロンプト
が戻る前にマウスのポインターが消え、画面上の時計の秒針が止まり数分待っ
てもそのままです。このときは ctr+alt+del を受け付けない状態です。他に
vmedrvのインストールに成功し、vmegetを実行した後もmake installを実行し
たあとと同様の状況になるときがあります。いずれの時もクラッシュメッセー
ジは表示されず、VME の電源を切っても PC は回復しません。

インストールに成功した時は# dmesg を実行すると以下ように表示されます。

vmedrv: SBS(Bit3) Model 618/620 VME-PCI Bus Adapter was detected at ioport 0xdc00 on irq 3.
   I/O Mapped Node at 0xdc00.
   Memory Mapped Node at 0xda000000.
   Mapping Register at 0xda010000.
   Remote Memory at 0xd4000000.
   Adapter ID (I/O): 0x00
   Adapter ID (mem): 0x00
 vmedrv: successfully installed at 0xdc00 on irq 3 (major = 254).

このとき、vmegetでC.A.E.NのI/O Register(Mod V262)の定数を読んでも正し
い値は返ってきません。バスに信号が流れているか確認してみました。一番左
の1スロット目にはVME-PCIアダプタを2スロット目にはVMEテストアダプタを3
スロット目にはI/O Registerを差しました。vmegetのコマンドを実行した際、
VMEテストアダプタの as に信号が流れるかをオシロを使って観察しました。
信号を見ることはできませんでした。もしかしたら、バスのasに信号が流れて
いない状況かも知れません。方法が悪いのかもしれません。

インストールに失敗した時の # dmesg の表示を添付しておきます。


添付ファイル: dmesg (4.5 kb)

2003 年 7 月 31 日 6 時 22 分
投稿者: 榎本 三四郎


この VME のインターフェースは全く動作していないように見えます.
インストールに失敗した場合の dmesg にある LocalStatusRegister の値 (0x91) は
嘘っぽいです.手元のシステムでファイバを抜いてドライバをインストールしたところ,0x11 が
返ってきました.0x91 という値を素直に解釈するなら,Fiber-Optic Interface
Data Error とマニュアルには書いてありますが,値そのものがでたらめで,インストールの
失敗ごとに異なった値になっている可能性もあります(できたら確認してみてください).
インストールに成功した場合の dmesg にある,Adapter ID の値 (0x00) も正しくないです.
これは本来 0x83 となるべきものです.

2つのレジスタしか見ていませんが,印象としては,インターフェースカード上の
レジスタの読み書きがめちゃくちゃになっているように見えます.これらはドライバが
一番最初にアクセスする,読み込みだけのレジスタなので,ドライバの問題というのは
ちょっと考えにくいです.ドライバには正しく制御が渡っているので,ソフトウェア設定の
問題でもないです.このレベルの障害で,カーネルの構築の失敗というのも,普通はないです
(カーネルのソースコードを自分で編集していなければ).

システムのトラブルを安易にハードウェアのせいにするのは好きではないのですが,
そろそろハードウェアの動作不良を疑ってみてもいいかもしれません.以前他のグループで
似たような問題があったときは,ジャンパの一つがちゃんとささっていなかったというのが
原因でした.私が以前使っていた Model-617 (銅線接続のもの)では,ケーブルの接触が悪く,
手で絶妙な角度を保たないと PC がクラッシュするということもありました.また,
未だに原因は分かりませんが,ある特定の PC では全く動作しないという例もあります.

ハードウェアの問題を見分ける一番簡単な方法は,全く別のソフトウェアを使ってみることです.
同じ PC に Windows 領域があるなら,製品に付属する Windows 用のソフトウェアが
すぐに利用できます.今回の障害は初期化の段階で起きているので,もしこれがハードウェアの
問題なら,Windows でも複雑なことをする前にエラーになるはずです (上記のハードウェア
障害の例では全て,製品付属のソフトウェアを立ち上げてすぐにエラーが出ました).



2003 年 7 月 31 日 18 時 35 分
投稿者: 市原 佳代子


業者の方に状況を説明しましたところ、VMEの電源を入れた後にSBS (Bit3)
Model-620のフロントパネルにあるREADYのLEDが点灯していないので、FPGAに
プログラムをロードするのに失敗している可能性があるようです。業者さんの
ほうでボードのチェックをして故障しているかどうか確認して頂けるようです
ので、発送しました。

ご丁寧なアドバイスを頂き、本当に助かりました。

ありがとうございました。


SBS他にも動かない原因があるようです。
2003 年 8 月 7 日 16 時 32 分
投稿者: 市原 佳代子

SBS (Bit3) Model-620の代替品が届き早速作業を再開しました。

始めに、SBS (Bit3) Model-620とC.A.E.NのI/O Register(Mod V262)をラック
に差し、vmeget で定数が読みとれることを確認しました。

ラックの電源を入れるとSBS (Bit3) Model-620のLOCALが一瞬点灯し、
すぐにREADYが点灯します。

#define DEV_FILE "/dev/vmedrv32d32" を
#define DEV_FILE "/dev/vmedrv24d16" と書き換え。
printf("0x%08x\n", word); を   printf("0x%04x\n", word); 
と書き換えました。

make して ./vmegeを実行すると、

./vmeget 0x1000fe  =>  0x10461046
./vmeget 0x1000fc  =>  0x10460801
./vmeget 0x1000fa  =>  0x1046faf5 となります。

なぜ、8桁で表示するのか良くわかりませんが、後半の4桁分は正しい値を示し
ていました。

ここで
Kinetic System: K-BUS INYERFACE 2917 VMEラックを3スロット目、
Kinetic System: PARALLEL BUS CRATE CONTROLLER 3922、
Repic: CSADC RPC-022 をCrateNumber 2 にインストールし、

VmeCamacBridge.kts の  
int adc_station = 8; を int adc_station = 2; としました。

% cd kinoko/local/samples
% tinykinoko-tcltk

Readout Script (.kts): VmeCamacBridge.kts
Data File (.kdf): test01.kdf
# of events: 10

start をクリックすると,viが起動して,
---------------------------
Press Ctrl-c to stop
K2917: Initialize()
---------------------------

となります。この時、Kinetic System: K-BUS INYERFACE 2917はADD RECのみ
がとても速く点滅し、しばらくするとRUN、M2、M1が点灯します。他のランプ
は消えています。後に、ADD RECは大体1秒間隔で点滅します。これらは数分か
かって変化します。

ただし、1秒間隔で点滅し始めると、SBS (Bit3) Model-620のREMOTEも同期し
て、点滅します。

Kinetic System: PARALLEL BUS CRATE CONTROLLER 3922 は
NO-Q,NO-X,INHIBITがそれぞれ点灯しています。
LAM のEn or Disをチェックするため,CrateNumber1
に 8ch 12bit Scaler を差しています.LAMはdisenableのままでした。

このような状況でADCからデータはとれませんでした。

tinykinoko-tcltk パネルの stop をクリックするか、tinykinokoのウィンド
ウ上で ctr+c をするかして、tinykinokoのウィンドウを閉じ、再び、startを
クリックしました。Camac側は同じままですが、ADD REC,RUN ,M1,M2が同時に
つくこともあります。Kinetic System: K-BUS INYERFACE 2917のRUN , M1,M2
のパターンはその時々によります。データ収集を始めようとするとADD
REC,RUN ,M1,M2が同時につくこともあります。他は消えたままです。

CAMACの電源を切っても同じような状況を示します。
フラットケーブル以降は交換してみましたが、状況は同じです。
Kinetic System: K-BUS INYERFACE 2917は1台しか手元にないため、
交換していません。
ハードの設定もここで、教えて頂いたようになっています。
他に何かチェックする方法はありますでしょうか?


RPC-022について
2003 年 8 月 8 日 11 時 3 分
投稿者: 林栄精器:石渡

だいぶお困りの様子で?
RPC-022について不安でしたら無償でチェックいたします。
ishiwata@repic.co.jp


データがとれました.
2003 年 8 月 8 日 12 時 0 分
投稿者: 市原 佳代子

やっと,ADCのデータがとれました.Kinetic System: K-BUS INYERFACE 2917
の接触がわるいことが原因でした.ねじが壊れていたため,しっかりささって
いなかったようです.ラックの電源を入れた時,フロントパネルのランプが点
灯するからといって,十分ささっているわけではなっかたようです.ねじを交
換し,しっかりさしなおすと,データがとれました.

何度も丁寧な御回答を頂き本当にありがとうございました.

これからもよろしくお願いします。

林栄精器の石渡さまも御心配頂きありがとうございました.



2003 年 8 月 8 日 13 時 15 分
投稿者: 榎本 三四郎

うまくいったみたいで良かったです。

ちなみに,vmeget で 32bit 表示されるのは,たぶん vmeget.c の typedef unsigned word_t を変えていないからだと思います.unsigned は今のところ 32bit なので,vmedrv の read() は 16bit の読み出しを 2 回行なって,32bit として word 変数に代入します.unsigned を unsigned short にすれば,期待どおりの振舞いをするはずです.


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