stand alone check

cmdvme(手動で命令する)

まずはVMEコントローラからcmdvmeというコマンドを使って直にmoduleにアクセスしてみる。
ここで必要なのはnbbqがVMEコントローラにちゃんとインストールされていることで、その中のnbbqvioというドライバーを使う。
このnbbqvioがdev以下に見えていない場合は何とかしないといけない。
V7768のOS imageは初期状態でちゃんとこれらのドライバーが動いているのでいきなりcmdvmeが使えるはず。

基本的には4byte(32bit)のアドレス空間に全てのmoduleが静的に配置されていて、
上位16bitはbase addressと呼ばれ、普通は基盤の上のロータリースイッチとかで手動で設定する。
下位16bitはmodule内の特定のregisterに割り当てられており、
base address + registerのaddress
でアクセスすることができる。
グローバルIPとローカルIP、固定IPの概念とかと似ている。

もう一つ知識が必要で、アドレスのアクセス方法?にはA16,A24,A32というのがあり、
REPICのRPV130はA16,CAENのV775,V792,V895はA32でアクセスする必要がある。
上で書いた話はA32の場合で、A16の場合は4桁の16進数でアクセスすることになる。

rpv130(repicのi/o register)は8bitのi/oのregisterを持っていて、それにしたがって8個の入出力端子からシグナルを入出力する。
スイッチで8ff0とアドレスを設定したとすると、
daq@d02 $ cmdvme -am 0x29 (A16でアクセスすることをコントローラに設定)
daq@d02 $ cmdvme -wr 0x8ff8 0x05
0x8のregisterはoutput用のregisterで、そこに書き込まれた値にしたがって20nsのパルスを出力する。
0x8ff0+0x8=0x8ff8ということ。
最後の0x05はregisterに書き込む値で、2進数で書くと0b00000101なのでch1とch3の端子からシグナルが出る。

V775やV792の動作チェックは面倒なので、通信できているかだけ確かめる。
V775のベースアドレスを1000(一番上のスイッチが一番上の位に対応する。V895はエンディアン?が逆なので注意)とした場合、
daq@d02 $ cmdvme -am 0x09 (A32でアクセス)
daq@d02 $ cmdvme -wr 0x20001000
0x0804  / 2052
とファームウェアが読み出せる。
V895は書き込まれてるregisterが違うのでマニュアル参照のこと。
なぜかV775は1回目とそれ以降で読み出される値が異なるがとりあえず気にしないことにする。

/usr/nbbq/vmestatの中にあるファイルを見るとマニュアルを読まなくてもどのregisterが何の役割かある程度わかる。

vmestat(cmdvmeのラッパー)

cmdvmeがわかってしまえば次はvmestatを使って便利に設定する。
vmestatはcmdvmeのラッパーなので何にも難しいことはない。
説明は馬場さんの昔のDAQのページに書いてある。
http://rarfaxp.riken.jp/~baba/acquisition/system/nbbq/vmeutil.html
例えばv792.vstaはこんな感じ。
CTRL 0x0000 AMSR A32
V792 0x2000 GEO 14
V792 0x2000 RST
V792 0x2000 SUP NOVR ZERO LOW
V792 0x2000 IPD 240
V792 0x2000 THE 0  00
V792 0x2000 THE 1  00
V792 0x2000 THE 2  00
V792 0x2000 THE 3  00
V792 0x2000 THE 4  00
V792 0x2000 THE 5  00
V792 0x2000 THE 6  00
V792 0x2000 THE 7  00
V792 0x2000 THE 8  00
V792 0x2000 THE 9  00
V792 0x2000 THE 10 00
V792 0x2000 THE 11 00
V792 0x2000 THE 12 00
V792 0x2000 THE 13 00
V792 0x2000 THE 14 00
V792 0x2000 THE 15 00
V792 0x2000 THE 16 0x1FF
V792 0x2000 THE 17 0x1FF
V792 0x2000 THE 18 0x1FF
V792 0x2000 THE 19 0x1FF
V792 0x2000 THE 20 0x1FF
V792 0x2000 THE 21 0x1FF
V792 0x2000 THE 22 0x1FF
V792 0x2000 THE 23 0x1FF
V792 0x2000 THE 24 0x1FF
V792 0x2000 THE 25 0x1FF
V792 0x2000 THE 26 0x1FF
V792 0x2000 THE 27 0x1FF
V792 0x2000 THE 28 0x1FF
V792 0x2000 THE 29 0x1FF
V792 0x2000 THE 30 0x1FF
V792 0x2000 THE 31 0x1FF
このファイルを準備したら、
$ vmestat v792.vsta
とすればv792の上の方のledが光るはず。
/usr/nbbq/vmestatの中にhoge.pmが置かれていないものについては使えない。
v895は近藤さんが作っていたはず。
標準状態から最小限の変更に止めたいので、v895はcmdvmeで書くかなー。

babirlの立ち上げ

ここまで問題なくきたらもうdata takingできるはず。
vmeコントローラに入っているOS imageではbabildまわりは全てrootで立ち上げるのが吉。
$ vmestat v792.vsta
$ su
# babinfo
# babild -l 1 (この1はよくわかっていない)
# babies -l 82 (この82はEFN。要はvmeコントローラごとに数字を割り当てる。)
正常に立ち上がって入れば、
# ps aux | grep babi
したときにbabinfo,babild,babiesがいるはず。
babildまわりがちゃんと立ち上がったか分からないときは、babildのインストールのエントリに書いてあるように
common.mkの中のDBMODEを1にして再度コンパイルするとよい。
問題なければ、
# babicon
でDAQのコントローラを起動。
babiconはhost名を引数に取れるが、デフォルトではlocalhostが渡される。

babirlの立ち下げ

babirlの終了は普通には行ない。babildのインストールのエントリを参照。

babiconでの設定

babiconを立ち上げたら、http://ribf.riken.jp/~kondo/nebula/daq/daq-memo-babirl.htmlにあるように、seteflistとsetesconfigを行う。
seteflistでは、立ち上げたbabiesのhostとEFN(ここでは82)を指定してあげる。
setesconfigではbabildrvの場所とかを指定できる。
localhost> seteflist 82 add localhost localhost
localhost> setesconfig 82 rtdrv /home/daq/exp/hime (自分で作ったbabildrvのpath)


動作check

設定を正しく行ったら、
localhost> nssta
localhost> stop
これでなんかイベント数が増えてればとりあえずok。回路でtriggerを作るのを忘れてあせらないように。

ちゃんとデータ来ているかのチェックは
wth,start,stopしてできたridfを生成し、chkridfというコマンドでridfファイルを開けばよい。
localhost> wth
localhost> start
localhost> stop
# chkridf data0001.ridf
ひたすらenterを押していくと何かデータが見えてくる。これを解読すれば良い。
http://ribf.riken.jp/~kondo/nebula/daq/blkmonitor/blkmonitor.html
ここを見れば分かるかも。


何か挙動がおかしい(システムが落ちるとか)ときは、
babildrvに問題がある場合が多い。
これのDEBUGはtriggerを1Hzぐらいにして、1回だけtriggerかけたり、
printkを使って各関数(startup.cとかevt.cとか)が呼ばれているか見たりすることで何とかする。