Locked History Actions

Diff for "NBBQ_Babirl"

Differences between revisions 49 and 50
Deletions are marked like this. Additions are marked like this.
Line 472: Line 472:
 . http://localhost/~nebula/babipm.php で プロセスマネージャが見えるか確認。babimo が立ち上がっていない場合、以下のようなメッセージが出る。  . http://localhost/~nebula/babipm.php で プロセスマネージャが見えるか確認。# ps aux | grep babi というコマンドを打ってみて babimo が立ち上がっていない場合、以下のようなメッセージが出る。
Line 477: Line 477:
 . babimo が立ち上がってても、SELinux が有効になっているとこのメッセージが出る。(2017年11月21日追記。)
Line 487: Line 487:
# ps aux | grep babi* # ps aux | grep babi

NBBQ/Babirl

Memo

SAMURAI Memo

  • 各 DAQ の event number が合わない
    • HODP の Event number が他の DAQ の Event number より少なかった。
      • --> GTO で busy がかかってなかった。

  • GTO に入る Busy end signals のうち、1つがクロックになっていると、各 sub DAQ の EVTN がばらばらになる。(ただし、早く進む sub DAQ と遅くなる sub DAQ がある。)
    • データの転送が終わってから End of Busy が出されるので、データ転送が遅れると、End of Busy も遅れるらしい?よってデータの転送は問題にならない。
    • --> STOROBE はちゃんとかかっている?打ち直ししないと、イベントビルドの整合性がとれず、event builder のメモリがいっぱいになる?

    • --> 各 sub DAQ の veto の width を確認し、変なものがいないか確認。

    • --> trigger が無い状態で、どこかの sub DAQ から end of busy が来ていないか確認。

    • Ethernet switch のランプが異常にチカチカしているところを確認。
  • SAMURAI DAQ
    • EVT が 0
      • --> オフラインなのに STROBE (LeCroy 365AL) が入っていると DAQ がスタートしない

  • スケーラIDが重複していると、Scaler Monitor でスケーラのデータがちゃんと読めない。

NBBQ インストール

  • $ mkdir daq_20110426
    $ cd daq_20110426
    $ wget http://rarfaxp.riken.go.jp/~baba/acquisition/system/nbbq/nbbq-dec08-2010.tar.gz
    $ tar zxvf nbbq-dec08-2010.tar.gz 
    $ cd nbbq-dec08-2010
    $ ./config 
    ***********  NBBQ Configure ***********
      Version Dec 14, 2007          H.Baba
    
    
    Kernel 2.6? [y] : y
    
    Use Debian? [n] : n
    
    Use default settings? [y] : y
    
    
    Use CAMAC? [y] : n
    
    
    Use VME? [y] : y
    Choose VME Controllers.
    Bit3 SBS 618/620? [y] : y
    Wiener VMEMM? [y] : n
    Advanet Advme 8001? [y] : n
    CAEN V2718? [y] : n
    VMIVME 7807? [y] : n
    
    Use NBBQVIO (driver for cmdvme)? [y] : y
    
    Use on-line analys? [y] : y
    
    $ make
    $ su
    pass word
    # make install
    mknod -m 0666 /dev/nbbqvio c 126 0
    mknod -m 0666 /dev/nbbqdrv c 122 0
    mkdir /usr/nbbq
    cp -dpR * /usr/nbbq/
    chown -R root:root /usr/nbbq/*
    chmod +s /sbin/insmod
    chmod +s /sbin/rmmod
    cp -f /usr/nbbq/nbbq /etc/rc.d/init.d/
    ln -sf /etc/rc.d/init.d/nbbq /etc/rc.d/rc2.d/S99nbbq
    ln -sf /etc/rc.d/init.d/nbbq /etc/rc.d/rc3.d/S99nbbq
    ln -sf /etc/rc.d/init.d/nbbq /etc/rc.d/rc5.d/S99nbbq
    # chmod 666 /usr/nbbq/Module.symvers
    # # ON-LINE でANAPAW を使うために analyzer をインストール 
    # cd analyzer
    # chmod +x install-analyzer
    # ./install-analyzer

  • ここで PC を 再起動
  • cmdvme が使えるかチェック。
    • $  cmdvme -wr 0x000a1000
      -wr 0x000a1000 : 0904 (2308)
  • この例では、Base Adress が 0x000a の V792 の Firmware Revision (0x1000)を読んでいる。Base Adress とはアクセスしたいモジュールを指定する数字のことで、モジュールの側面に付いているダイヤルの値を読んで調べる。V792 の場合、下から 0, 0, 0, a となっていれば、Base Adress が 0x000a であることを示している。 V792 のマニュアルを見ると、アドレスが 0x1000 の部分にモジュールの Firmware Revision が格納されていることがわかる。よって、0x000a1000 というアドレスの値を読んでくれば Base Adress が 0x000a の V792 の Firmware Revision (0x1000)を読むことになる。

  • ただし、なにもしないと以下のメッセージが出る。直し方は下記参照。
    • $ cmdvme -wr 0x000a1000
      Can't open /dev/nbbqvio
      Can't open nbbqvio
  • 最後に $HOME/.cshrc に以下の行を追加
  • setenv PATH ${PATH}:/usr/babirl/bin:/usr/nbbq/bin

NBBQ 再インストール

  • $ mkdir daq_recompile
    $ cd daq_recompile
    $ wget http://rarfaxp.riken.go.jp/~baba/acquisition/system/nbbq/nbbq-dec08-2010.tar.gz
    $ tar zxvf nbbq-dec08-2010.tar.gz 
    $ cd nbbq-dec08-2010
    $ ./config 
    ***********  NBBQ Configure ***********
      Version Dec 14, 2007          H.Baba
    
    
    Kernel 2.6? [y] : y
    
    Use Debian? [n] : n
    
    Use default settings? [y] : y
    
    
    Use CAMAC? [y] : n
    
    
    Use VME? [y] : y
    Choose VME Controllers.
    Bit3 SBS 618/620? [y] : y
    Wiener VMEMM? [y] : n
    Advanet Advme 8001? [y] : n
    CAEN V2718? [y] : n
    VMIVME 7807? [y] : n
    
    Use NBBQVIO (driver for cmdvme)? [y] : y
    
    Use on-line analys? [y] : y
    
    $ make
    $ su
    pass word
    # rm /dev/nbbq*
    # rm /usr/nbbq -rf
    # make update
    rm -rf /usr/nbbq
    mkdir /usr/nbbq
    cp -dpR * /usr/nbbq/
    chown -R root:root /usr/nbbq/*
    cp -f /usr/nbbq/nbbq /etc/rc.d/init.d/
    # chmod 666 /usr/nbbq/Module.symvers

Can't open /dev/nbbqvio

  • cmdvme が使えない場合、馬場さんのページを参考に対処する。

  • $ cmdvme -wr 0x000a1000
    Can't open /dev/nbbqvio
    Can't open nbbqvio
  • そもそも /dev/nbbqvio がない
  • $ ls /dev | grep nbbq
  • 馬場さんのページ

  • 再起動したときに cmdvmeやnbbqcomでCan't open /dev/nbbqccioや/dev/nbbqdrv が出てくる場合はudevに問題があります。udevの設定で解決するか、起動した後にrootで /usr/nbbq/mkdev.sh を走らせてください。
  • とあるので、そのようにする。
  • $ su 
    # cd /usr/nbbq
    # chmod +x mkdev.sh
    # ./mkdev.sh
    ./mkdev.sh: line 3: /sbin/mknod: そのようなファイルやディレクトリはありません
    ./mkdev.sh: line 4: /sbin/mknod: そのようなファイルやディレクトリはありません
    ./mkdev.sh: line 5: /sbin/mknod: そのようなファイルやディレクトリはありません
    ./mkdev.sh: line 6: /sbin/mknod: そのようなファイルやディレクトリはありません
  • エラーが出るので、mkdev.sh の中身の /sbin/mknod を /bin/mknod に変更し、再び実行。
  • # emacs mkdev.sh &
    # ./mkdev.sh
    # ls /dev | grep nbbq # 確認
    nbbqccio
    nbbqdrv
    nbbqvio
    # ls /dev | grep babi # 確認
    babildrv
    # /etc/init.d/nbbq start
  • これで cmdvme が使える
  • $  cmdvme -wr 0x000a1000
    -wr 0x000a1000 : 0904 (2308)
  • 毎回実行するのは面倒なので、/etc/init.d/nbbq の start() 関数の部分を以下のように書く。
  • start() {
            if [ ! -e /dev/nbbqccio ]; then
                    /bin/mknod -m 0666 /dev/nbbqccio c 127 0
            fi
            if [ ! -e /dev/nbbqvio ]; then
                    /bin/mknod -m 0666 /dev/nbbqvio c 126 0
            fi
            if [ ! -e /dev/nbbqdrv ]; then
                    /bin/mknod -m 0666 /dev/nbbqdrv c 122 0
            fi
            if [ ! -e /dev/babildrv ]; then
                    /bin/mknod -m 0666 /dev/babildrv c 124 0
            fi
            daemon /usr/nbbq/analyzer/analyzer -D
            $INSM $DIR/bb-sbs620/bb-sbs620.ko
            $INSM $DIR/nbbqvio/nbbqvio.ko
    }

nbbq ドライバコンパイル

  • make -C /lib/modules/2.6.18-238.9.1.el5/build SUBDIRS=/home/nebula/daq_20110426/sunao modules
    make[1]: ディレクトリ `/usr/src/kernels/2.6.18-238.9.1.el5-i686' に入ります
      CC [M]  /home/nebula/daq_20110426/sunao/nbbqdrv.o
    In file included from /home/nebula/daq_20110426/sunao/nbbqdrv.c:100:
    /home/nebula/daq_20110426/sunao/startup.c: In function ‘startup’:
    /home/nebula/daq_20110426/sunao/startup.c:7: error: implicit declaration of function ‘rpv130_clear’
    /home/nebula/daq_20110426/sunao/startup.c:10: error: implicit declaration of function ‘rpv130_output’
    /home/nebula/daq_20110426/sunao/startup.c:17: error: implicit declaration of function ‘rpv130_write’
    /home/nebula/daq_20110426/sunao/startup.c:17: error: ‘RPV130_LEVEL’ undeclared (first use in this function)
    /home/nebula/daq_20110426/sunao/startup.c:17: error: (Each undeclared identifier is reported only once
    /home/nebula/daq_20110426/sunao/startup.c:17: error: for each function it appears in.)
    make[2]: *** [/home/nebula/daq_20110426/sunao/nbbqdrv.o] エラー 1
    make[1]: *** [_module_/home/nebula/daq_20110426/sunao] エラー 2
    make[1]: ディレクトリ `/usr/src/kernels/2.6.18-238.9.1.el5-i686' から出ます
    make: *** [default] エラー 2
  • nbbqdrv.c の 98 行目あたりを以下のように変更。
  • #ifdef VME
    #include "rpv130.c"
    #ifndef VMIVME
    #include "v775.c"
    #include "v792.c"
    #include "v785.c"
    #include "v767.c"
    #include "sis3300.c"
    #else
    #include "babirldrvcaen.c"
    #endif
    #endif

ユーティリティー コンパイル

  • totalsca コンパイル
  • $ cd totalsca
    $ make
    gcc -O2 -o totalsca  totalsca.c
    totalsca.c: In function ‘main’:
    totalsca.c:52: 警告: incompatible implicit declaration of built-in function ‘exit’
    totalsca.c:67: 警告: incompatible implicit declaration of built-in function ‘exit’
    totalsca.c:85: 警告: incompatible implicit declaration of built-in function ‘exit’
    totalsca.c:109: 警告: incompatible implicit declaration of built-in function ‘exit’
  • 上記の警告を消すには、totalsca.c の先頭部分を次のように書き変える。
  • #include <stdio.h>
    #include <stdlib.h>  // <- 追加
    #include <string.h>
    #include <math.h>

Babirl

babirl インストール

  • $ su
    パスワード:
    # cd /usr
    # wget http://ribf.riken.jp/RIBFDAQ/index.php?plugin=attach\&refer=DAQ%2FDownload\&openfile=babirl101220.tar.gz
    # mv index.php\?plugin\=attach\&refer\=DAQ%2FDownload\&openfile\=babirl101220.tar.gz babirl101220.tar.gz
    # tar zxvf babirl101220.tar.gz
    # cd babirl101220
    # make clean
    # make
  • babimo と babian がコンピュータ起動時に、自動で立ち上がるように、 Makefile に 以下の部分を追加して、 make install。
  • # emacs Makefile &
    以下の部分を Makefile に追加
    install :
            cp -f /usr/babirl/rcd/babimo /etc/init.d/
            cp -f /usr/babirl/rcd/babian /etc/init.d/
            ln -sf /etc/init.d/babimo /etc/rc2.d/S99babimo
            ln -sf /etc/init.d/babimo /etc/rc3.d/S99babimo
            ln -sf /etc/init.d/babimo /etc/rc5.d/S99babimo
            ln -sf /etc/init.d/babian /etc/rc2.d/S99babian
            ln -sf /etc/init.d/babian /etc/rc3.d/S99babian
            ln -sf /etc/init.d/babian /etc/rc5.d/S99babian
    
    # make install
    # emacs /etc/init.d/babian
    stop の部分に1行加え、以下のようにすると stop がうまくいく。
    
    stop() { 
            killproc babian
            rm -f /var/run/babian
    }
  • babinfo 等の自動起動
  • babild, babinfo, babies は web ツールの babipm.php から制御すれば良いが、スタンドアローンで babirl を使うときなどは自動で立ち上がるようにすると楽。S98babinfo として、S99babild より先に実行されるようにした。さらに、S99nbbq をS97nbbq にして、/etc/init.d/babies より先に /etc/init.d/nbbq が実行されるようにした。(nbbq は実行しなくてもよいかも?むしろ nbbq が起動してると babirl がうまく動かないときがあったかも?忘れた。)

  • # cd /etc/init.d
    # cp babian babinfo
    # cp babian babild
    # cp babian babies
    # ln -sf /etc/init.d/babinfo /etc/rc2.d/S98babinfo
    # ln -sf /etc/init.d/babinfo /etc/rc3.d/S98babinfo
    # ln -sf /etc/init.d/babinfo /etc/rc5.d/S98babinfo
    # ln -sf /etc/init.d/babild /etc/rc2.d/S99babild
    # ln -sf /etc/init.d/babild /etc/rc3.d/S99babild
    # ln -sf /etc/init.d/babild /etc/rc5.d/S99babild
    # ln -sf /etc/init.d/babies /etc/rc2.d/S99babies
    # ln -sf /etc/init.d/babies /etc/rc3.d/S99babies
    # ln -sf /etc/init.d/babies /etc/rc5.d/S99babies
    # mv /etc/rc2.d/S99nbbq /etc/rc2.d/S97nbbq
    # mv /etc/rc3.d/S99nbbq /etc/rc3.d/S97nbbq
    # mv /etc/rc5.d/S99nbbq /etc/rc5.d/S97nbbq
    # perl -i -pe "s/babian/babinfo/g" babinfo
    # perl -i -pe "s/babian/babild/g" babild
    # perl -i -pe "s/babian/babies/g" babies
    # emacs babild &
    
    以下の様に、EFN (Event Fragment Number) を 1 にして、Normal Linux Mode のオプション  -l を付ける。
    
    start() {
            /usr/babirl/babild/babild -l 1
    }
    
    # emacs babies &
    
    以下の様に、EFN (Event Fragment Number) を 28 にして、Normal Linux Mode のオプション  -l を付ける。
    さらに、vmestat を自動で実行するようにする。
    
    start() {
            /usr/babirl/babild/babies -l 28
            for str in /home/nebula/daq_20110426/vmestat/*.vsta
            do
              /usr/nbbq/bin/vmestat $str
            done
    }
    
  • babimocli(?) インストール
  • $ su
    # cd /usr/babirl/babimo
    # ./babimo
    # exit
    $ cd /home/nebula
    $ rsync -av -e ssh sunday@ribfdaq:public_html/ public_html/
  • public_html/hostlist.xml で babimo が起動している host として、localhost を指定。
  • <?xml version="1.0"?>
    <hostlist>
      <host>
      <name>localhost</name>
      <babild/>
      </host>
    </hostlist>
  • http://localhost/~nebula/babipm.php で プロセスマネージャが見えるか確認。# ps aux | grep babi というコマンドを打ってみて babimo が立ち上がっていない場合、以下のようなメッセージが出る。

  • Server = localhost
    Can't connect to localhost
  • babimo が立ち上がってても、SELinux が有効になっているとこのメッセージが出る。(2017年11月21日追記。)
  • プロセスを KILL
  • # kill  `cat /var/run/babinfo`
    # kill  `cat /var/run/babild`
    # kill  `cat /var/run/babies`
    # kill  `cat /var/run/babian`
  • または、
  • # ps aux | grep babi
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    ~~~
    root     28443  0.0  0.3  20652  6760 ?        S<sl 23:01   0:00 /usr/babirl/babinfo/babinfo
    root     28447  0.0  0.0  24652   820 ?        S<sl 23:01   0:00 /usr/babirl/babild/babild -l 1
    root     28452  0.0  0.0   2012   608 ?        S<s  23:01   0:00 /usr/babirl/babies/babies -l 28
    root     28471  0.0  0.3   7844  6484 ?        Ss   23:01   0:00 /usr/babirl/babian/babian
    ~~~
    # kill 28443
    # kill 28447
    # kill 28452
    # kill 28471

babicon

  • delscr が効かない?
    • /usr/babirl/scr/scr**.dat を削除。** はスケーラ ID 。
  • 初期設定ファイル
    • /usr/babirl/init にある

babinfo

  • babinfo 起動

    1. PID file /var/run/babinfo があったら停止( exit(0); )
    2. DEBUG が定義されてなければデーモンになる( daemon(1, 0); )?これ以降の printf は標準出力に出力されない?どこに出力される?とりあえず、daemon(1, 0); をコメントアウトしてデバッグできる。
    3. babicon (など?)からのコマンドを受け取るソケットを作る。
      •   if((comfd = mktcpsock(INFCOMPORT)) == -1){
            printf("Can't make command and oneshot port\n");
            quit();
          }
    4. babild からの EA (Event Assembly: Event Build されたデータ) を受け取るソケットを作る。
      •   if((earecvfd = mktcpsock(INFEAPORT)) == -1){
            printf("Can't make earecv\n");
            quit();
          }
    5. EA recv thread が走る? EA recv thread でデコードされた情報は、babinfo.h で宣言された構造体などに格納。
      •   /* Create thread */
          pthread_create(&eathread, NULL, (void *)earecv, NULL);
          pthread_detach(eathread);
    6. babicon からのコマンド待ちの状態となり、コマンドが来たら commain() を実行
    7. EA recv thread で デコードされた情報は commain() から参照され、 babicon などからの要求に応じて送り返される。同じソケットを使ってる?
  • int earecv(void)

    • thread の int earecv(void){} が Event Sender からのデータをデコードしている?以下の部分はスケーラ部分。int anascr(char *pt, int classid) に eabuff のポインタを渡している。
    •         switch(rhd.classid){
              case RIDF_EF_BLOCK:
              case RIDF_EA_BLOCK:
              case RIDF_EAEF_BLOCK:
                idx += sizeof(hd);
                break;
              case RIDF_SCALER:
              case RIDF_CSCALER:
              case RIDF_NCSCALER32:
                idx -= sizeof(hd);
                idx += sizeof(unsigned int);
                anascr(eabuff[eaflag]+idx, rhd.classid);
                idx += rhd.blksize*WORDSIZE;
                break;
              default:
                idx += rhd.blksize*WORDSIZE;
                break;
              }
  • int anascr(char *pt, int classid)

    • 構造体 scr に eabuff のスケーラデータを格納。scr は babinfo.h で以下のように宣言されている。
    •  struct ridf_scr_contst *scr[MAXSCRANA];
  • int commain(void)

    • babicon からのコマンドを combuff に受け取り、コマンドに応じていろいろ実行する。
    •   switch(com){
        case INF_GET_DAQINFO:
        ~~~
        case INF_GET_SCRDATA:
        ~~~
    • INF_GET_SCRDATA の場合、構造体 scr の情報などが sndbuff に格納され、同じソケットを通して送り返される?
    • int commain(void){
           ~~~
        if((sock = accept(comfd, (struct sockaddr *)&caddr, (socklen_t *)&clen)) < 0){
          perror("babinfo: Error in accept commain\n");
          return 0;
        }
           ~~~
        recv(sock, combuff, len, MSG_WAITALL);
        memcpy((char *)&com, combuff, sizeof(com));
           ~~~
        switch(com){
           ~~~
        case INF_GET_SCRDATA:
           ~~~
            for(i=0;i<scrana[tid].scrn;i++){
              memcpy(sndbuff+len, (char *)&scr[tid][i], sizeof(scr[tid][id]));
              len += sizeof(scr[tid][id]);
            } 
            com_get(sock, sndbuff, len);
          }
          break;
           ~~~
        }
      }
  • void com_get(int sock, char *src, int len)

    • void com_get(int sock, char *src, int len){
        send(sock, (char *)&len, sizeof(len), 0);
        send(sock, src, len, 0);
      }

メモ

  • Waiting for run end... (stat=2)

  • babicon で以下のようにストップしないとき
  • localhost> stop
    Waiting for run end... (stat=2)
    Waiting for run end... (stat=2)
    Waiting for run end... (stat=2)
    Waiting for run end... (stat=2)
    Waiting for run end... (stat=2)
    ...
  • いくつか原因が考えられる。
    1. ファイアーウォールでポートが遮断されている
    2. babies の erhost の設定が違う
    3. babies プロセスが死んだ(?)
    4. 通常ならば、インタラプトがなくイベントの数が 0 でもちゃんとストップする。インタラプト云々の話は、まず DAQ がちゃんと止まるようになってから考えたほうがよさそう?それぞれの原因についてもう少し詳しく書くと以下のようになる。
    5.  

  • 原因その1:ファイアーウォールでポートが遮断されている場合

    • この場合、esconnect コマンドを打ってみても connect : 0 のままである。ただし、setesconfig で host の設定や、ドライバのディレクトリの変更はできる。
    • localhost> esconnect 42
      localhost> getesconfig 42
      ID      : 42
      erport  : 17601
      erhost  : 133.11.162.41
      hd1     : 0
      hd1dir  : ./
      hd2     : 0
      hd2dir  : ./
      isdrv   : 1
      rtdrv   : /home/daq/b4exp2014/drv_b4exp
      connect : 0 <----- ファイアーウォールが切れていれば 1 になる
    • 安全なネットワークの場合、ファイアーウォールを切る。切りたくない場合は、対象のポートを開放する。ポート番号は忘れた。正しく設定すれば、esconnect のあとに getesconfig を打つと下記のように connect : 1 となる。ただし、erhost が正しく設定されていないと、connect : 1 にならない。
    • localhost> esconnect 42
      localhost> getesconfig 42
      ID      : 42
      erport  : 17601
      erhost  : 133.11.162.40
      hd1     : 0
      hd1dir  : ./
      hd2     : 0
      hd2dir  : ./
      isdrv   : 1
      rtdrv   : /home/daq/b4exp2014/drv_b4exp
      connect : 1
  • 原因その2:erhost が正しくない

    • erhost とは babinfo (や babild) が走っているコンピュータのこと。babinfo が babies からのメッセージを受け取れなかったときにこのメッセージが表示される。babies に babinfo が走っているコンピュータのホストネームを教えればよい。 以下のように setesconfig コマンドで erhost を変更。erhost には babies プロセスが走っているコンピュータのホストネームではなく、babinfo (or babild) プロセスが走っているコンピュータのホストネームを指定する。
    • localhost> setesconfig 47 host ggdaq04 <-- babinfo の場所を指定
      ID      : 47
      erport  : 17601
      erhost  : localhost
      hd1     : 0
      hd1dir  : ./
      hd2     : 0
      hd2dir  : ./
      isdrv   : 1
      rtdrv   : /home/samurai/exp/sm_dayone/babirl
      connect : 0
      
      ID      : 47
      erport  : 17601
      erhost  : ggdaq04
      hd1     : 0
      hd1dir  : ./
      hd2     : 0
      hd2dir  : ./
      isdrv   : 1
      rtdrv   : /home/samurai/exp/sm_dayone/babirl
      connect : 0
  • 原因その3:ドライバー正しく書かれていない

    • ドライバーが正しく書かれていないと、babies が死に、とまらないかも?特に、stop.c で map をちゃんと開放しなかったりすると、ダメっぽい。
  • EVTN = 0

    • evt.c を書かないと、event build されない(EVTN = 0)。インタラプトはかかる。
    • Last event number
      EFN Nickname   EVTN
       28 localhost     0
  • sis3800 の関数が見えない

    • ドライバコンパイルの時、sis3800 の関数が見えず以下のエラーが出る。
    • $ make
      rm -f babildrv.ko
      make -C /lib/modules/2.6.18-238.9.1.el5/build SUBDIRS=/home/daq/daqconfig/himac/test modules
      make[1]: ディレクトリ `/usr/src/kernels/2.6.18-238.9.1.el5-i686' に入ります
        CC [M]  /home/daq/daqconfig/himac/test/babildrv.o
      In file included from /home/daq/daqconfig/himac/test/babildrv.c:98:
      /home/daq/daqconfig/himac/test/startup.c: In function ‘startup’:
      /home/daq/daqconfig/himac/test/startup.c:25: error: implicit declaration of function ‘rpv130_clear’
      /home/daq/daqconfig/himac/test/startup.c:28: error: implicit declaration of function ‘rpv130_output’
      /home/daq/daqconfig/himac/test/startup.c:35: error: implicit declaration of function ‘rpv130_write’
      /home/daq/daqconfig/himac/test/startup.c:35: error: ‘RPV130_LEVEL’ undeclared (first use in this function)
      /home/daq/daqconfig/himac/test/startup.c:35: error: (Each undeclared identifier is reported only once
      /home/daq/daqconfig/himac/test/startup.c:35: error: for each function it appears in.)
      /home/daq/daqconfig/himac/test/startup.c:11: 警告: unused variable ‘val’
      In file included from /home/daq/daqconfig/himac/test/babildrv.c:100:
      /home/daq/daqconfig/himac/test/stop.c: In function ‘stop’:
      /home/daq/daqconfig/himac/test/stop.c:8: 警告: unused variable ‘val’
      make[2]: *** [/home/daq/daqconfig/himac/test/babildrv.o] エラー 1
      make[1]: *** [_module_/home/daq/daqconfig/himac/test] エラー 2
      make[1]: ディレクトリ `/usr/src/kernels/2.6.18-238.9.1.el5-i686' から出ます
      make: *** [default] エラー 2
    • -> /usr/babirl/modules から rpv130.c, rpv130.h をコピーし、babildrv.c を以下のように変更。

      • babildrv.c
      •      66 #ifdef VME
             67 #include "babirldrvcaen.c"
             68 #include "rpv130.c"
             69 #include "sis3800.c"
             70 #endif
  • スケーラ情報が見えない

    • 新しい babirl (babirl101220.tar.gz) では、babidrv ディレクトリ内に sca.c がなく、sca() が babildrv.c 内に書かれていない。evt.c 内でスケーラ情報を読むようにすると、printncscr コマンド と babirl DAQ Scaler Monitor でスケーラ情報が見えない。(RAW DATA MONITOR では見える。)
    • -> sca.c を新たに作り、babildrv.c を変更。

      • sca.c
      • void sca(void){
          init_ncscaler(SCRID);
          sis3800_ridf_ncscaler(SCRADDR);
          end_ncscaler();
        }
      • babildrv.c
      •      76 #include "segidlist.h"
             77 #include "sca.c"
             78 #include "startup.c"
             79 #include "evt.c"
             80 #include "stop.c"
             81 #include "clear.c"
        
            323 #ifdef DBUFF
            324     stopflag = 1;
            325 #endif
            326     if(chkblk == 1){
            327       sca();
            328       end_block();
        
            445     evt();
            446     if(end_event() > MAXBUFF){
            447       sca();
            448       end_block();
  • Can't connect to hostname
    • Firewall ?
    • open the ports
      • babild : 17511
      • babimo : 17518
      • babinfo : 17516