Jul 2, 1999 onl50t: Solaris 2.6 cc ドライバのデバッグ. cc ドライバの実行、スピード測定 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/ onl50t-sol2.6/Desktop/camac-step04.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). 現状確認 (A). 株式会社ロジックハウスの白田様より SPARC CPU-50T を借用した。 (B). FORCE,CPU-50(UltraSPARC-IIi 300MHz)、に Solaris2.6 のシステムを インストールした。 (C). /etc の下の各設定、および /export/home の作成をやった。 (D). "Solaris2.6 Hardware: 5/98 SMCC Desktop 日本語版 SPARC版"では ディスクレス・クライアントを設定することはできないことを確認した。 (E). CPU-50T に Solaris2.6用の VMEドライバ、FRCvme-2.3.1 をインストール した。 (F). onl50t に ccドライバをインストールした。 (G). サンプル・プログラムを実行した。 (1). cam1、シングル・アクション 24ビット camac read/write の実行 NG. システムはパニックを起こしてリブートしてしまう。 (2). cam3、camac LAM割り込み処理の実行 NG. システムはパニックを起こしてリブートしてしまう。 (3). cam2、ブロック転送 16ビット read/write の実行 ok. 正常に実行できた。 (4). cam2、ブロック転送 24ビット read/write の実行 ok. 正常に実行できた。 (H). クラッシュ時の savecoreファイルを入手してデバッグを始めた。 (I). cam1プログラムのデバッグ、icc_ioctlルーチンを修正した。 ok. cam1プログラムは正常に実行できた。 (J). cam3プログラムのデバッグを始めた。 camac_s()ルーチンの中で "cc->k->dhr = *dat;" を実行したところでエラーになっている。 message構造体をcc_device構造体の中に入れてみたが改善されない。 (K). cam3プログラムは正常に動作できるようになった。 (L). cam3プログラムのデバッグ時に付加したゴミをはずして最終的な動作確認 をやった。 ok. (M). onl50t 上でデバッグしたcamacドライバをfrc7v-cl2 上で動作確認した。 ok. (N). onl50t 上でデバッグしたcamacドライバを onl7v2、スタンドアロン Solaris2.6 上で動作確認した。 ok. (O). onl50t 上でデバッグしたcamacドライバを frc8vt、ディスクレス・サーバ Solaris2.6 上で動作確認した。 ok. (P). onl50t 上でデバッグしたcamacドライバを onl8v1、スタンドアロン Solaris2.6 上で動作確認した。 ok. (Q). onl50t 上でデバッグしたcamacドライバを onl5v4、スタンドアロン Solaris2.6 上で動作確認した。 ok. (2). ここでやるべきこと スタンドアロン Solaris2.6、onl50t 上で、シングルアクション、割り込み、 ブロック転送を実行した時のデータ転送速度を調べる。 (3). データ転送速度測定プログラムのコンパイル データ転送速度測定には、安さん作成のテスト・プログラムを Solaris用に 修正したものを使うことにする。 (3-1). テスト・プログラムを入手する (3-1-1). シングルアクションのテスト用プログラムの入手 onl7v2 上で精度を上げて、シングルアクションの実行時間を測定した時の プログラムを入手する。 onl50t[51]% pwd /export/home/onl50t/inoue/CAMAC onl50t[52]% rcp -pr onlsun1:~/workstation/onl7v2/Solaris2.6/CAMAC-speed1 . onl50t[53]% ls -l total 6 drwxr-xr-x 8 inoue kek 512 Oct 27 1998 CAMAC-speed1/ drwxr-xr-x 6 inoue kek 512 Jun 28 13:53 Driver/ drwxr-xr-x 4 inoue kek 512 Jul 1 14:40 Old/ onl50t[54]% cd CAMAC-speed1 /export/home/onl50t/inoue/CAMAC/CAMAC-speed1 onl50t[55]% ls -l total 18 drwxr-xr-x 2 inoue kek 512 Oct 27 1998 Oct-21.98_onl7v2/ drwxr-xr-x 2 inoue kek 512 Oct 27 1998 camasm/ drwxr-xr-x 3 inoue kek 2560 Nov 4 1998 examples-Solaris2.x/ drwxr-xr-x 2 inoue kek 2048 Oct 27 1998 examples-hprt/ drwxr-xr-x 3 inoue kek 512 Oct 27 1998 includes/ drwxr-xr-x 3 inoue kek 512 Oct 27 1998 lib/ onl50t[56]% cd examples-Solaris2.x /export/home/onl50t/inoue/CAMAC/CAMAC-speed1/examples-Solaris2.x onl50t[57]% ls -l total 1384 -rw-r--r-- 1 inoue kek 4407 Oct 27 1998 Makefile -rw-r--r-- 1 inoue kek 4262 Oct 27 1998 Makefile.org drwxr-xr-x 2 inoue kek 512 Nov 2 1998 camblock.log-old/ -rw-r--r-- 1 inoue kek 3334 Nov 2 1998 camblock.log1 -rw-r--r-- 1 inoue kek 3852 Oct 27 1998 camblock_measure.c -rwxr-xr-x 1 inoue kek 17356 Oct 27 1998 camblock_measure1* -rw-r--r-- 1 inoue kek 4902 Oct 27 1998 camblock_measure1.c -rw-r--r-- 1 inoue kek 4885 Oct 27 1998 camblock_measure1.c.Oct-21.98 -rw-r--r-- 1 inoue kek 1367 Oct 27 1998 camblock_measure1.c.diff -rw-r--r-- 1 inoue kek 3859 Oct 27 1998 camblock_measure1.c.org -rw-r--r-- 1 inoue kek 4243 Oct 27 1998 camblock_measure1.c.step01 -rw-r--r-- 1 inoue kek 323 Nov 2 1998 camblock_measure1.log1 -rw-r--r-- 1 inoue kek 3937 Oct 27 1998 camint_measure.c -rwxr-xr-x 1 inoue kek 16936 Oct 27 1998 camint_measure1* -rw-r--r-- 1 inoue kek 5273 Oct 27 1998 camint_measure1.c -rw-r--r-- 1 inoue kek 3808 Oct 27 1998 camint_measure1.c.org -rw-r--r-- 1 inoue kek 4591 Oct 27 1998 camint_measure1.c.step01 -rw-r--r-- 1 inoue kek 4748 Oct 27 1998 camint_measure1.c.step02 -rw-r--r-- 1 inoue kek 6036 Oct 27 1998 camint_measure1.c.step03 -rw-r--r-- 1 inoue kek 5249 Oct 27 1998 camint_measure1.c.step04 -rw-r--r-- 1 inoue kek 607 Oct 27 1998 camint_measure1.log -rw-r--r-- 1 inoue kek 269 Oct 27 1998 camint_measure1.log1 -rw-r--r-- 1 inoue kek 6174 Oct 27 1998 camint_measure1.log2 -rw-r--r-- 1 inoue kek 6826 Oct 27 1998 camint_measure1.log3 -rw-r--r-- 1 inoue kek 6883 Oct 27 1998 camint_measure1.log4 -rw-r--r-- 1 inoue kek 7069 Oct 27 1998 camint_measure1.log5 -rw-r--r-- 1 inoue kek 8071 Oct 27 1998 camint_measure1.log6 -rw-r--r-- 1 inoue kek 6662 Oct 27 1998 camint_measure1.log7 -rw-r--r-- 1 inoue kek 6611 Oct 27 1998 camint_measure1.log8 -rwxr--r-- 1 inoue kek 313 Oct 28 1998 camsingle.sh* -rw-r--r-- 1 inoue kek 19507 Oct 28 1998 camsingle.sh.log1-1000 -rw-r--r-- 1 inoue kek 19577 Oct 28 1998 camsingle.sh.log1-500 -rw-r--r-- 1 inoue kek 19795 Oct 28 1998 camsingle.sh.log10-1000 -rw-r--r-- 1 inoue kek 19663 Oct 28 1998 camsingle.sh.log2-1000 -rw-r--r-- 1 inoue kek 19707 Oct 28 1998 camsingle.sh.log2-500 -rw-r--r-- 1 inoue kek 19532 Oct 28 1998 camsingle.sh.log3-1000 -rw-r--r-- 1 inoue kek 19579 Oct 28 1998 camsingle.sh.log3-500 -rw-r--r-- 1 inoue kek 19798 Oct 28 1998 camsingle.sh.log4-1000 -rw-r--r-- 1 inoue kek 19577 Oct 28 1998 camsingle.sh.log4-500 -rw-r--r-- 1 inoue kek 19664 Oct 28 1998 camsingle.sh.log5-1000 -rw-r--r-- 1 inoue kek 19705 Oct 28 1998 camsingle.sh.log5-500 -rw-r--r-- 1 inoue kek 19658 Oct 28 1998 camsingle.sh.log6-1000 -rw-r--r-- 1 inoue kek 19789 Oct 28 1998 camsingle.sh.log7-1000 -rw-r--r-- 1 inoue kek 19792 Oct 28 1998 camsingle.sh.log8-1000 -rw-r--r-- 1 inoue kek 19792 Oct 28 1998 camsingle.sh.log9-1000 -rw-r--r-- 1 inoue kek 2340 Oct 27 1998 camsingle_measure.c -rwxr-xr-x 1 inoue kek 75404 Oct 28 1998 camsingle_measure1* -rw-r--r-- 1 inoue kek 45398 Oct 28 1998 camsingle_measure1.c -rw-r--r-- 1 inoue kek 2718 Oct 27 1998 camsingle_measure1.c.Oct-21.98 -rw-r--r-- 1 inoue kek 2718 Oct 27 1998 camsingle_measure1.c.Oct-27.98 -rw-r--r-- 1 inoue kek 24344 Oct 28 1998 camsingle_measure1.c.Oct-28.98 -rw-r--r-- 1 inoue kek 2456 Oct 27 1998 camsingle_measure1.c.org -rw-r--r-- 1 inoue kek 3705 Oct 27 1998 camsingle_measure1.log -rw-r--r-- 1 inoue kek 1433 Oct 27 1998 camtest10c.c -rw-r--r-- 1 inoue kek 1459 Oct 27 1998 camtest11c.c -rw-r--r-- 1 inoue kek 1728 Oct 27 1998 camtest11c.o -rw-r--r-- 1 inoue kek 1435 Oct 27 1998 camtest12c.c -rw-r--r-- 1 inoue kek 1469 Oct 27 1998 camtest13c.c -rw-r--r-- 1 inoue kek 1453 Oct 27 1998 camtest14c.c -rw-r--r-- 1 inoue kek 2602 Oct 27 1998 camtest1c.c -rw-r--r-- 1 inoue kek 3548 Oct 27 1998 camtest2c.c -rw-r--r-- 1 inoue kek 2927 Oct 27 1998 camtest31c.c -rw-r--r-- 1 inoue kek 1999 Oct 27 1998 camtest3c.c -rw-r--r-- 1 inoue kek 3293 Oct 27 1998 camtest4.asm -rw-r--r-- 1 inoue kek 2178 Oct 27 1998 camtest41c.c -rw-r--r-- 1 inoue kek 2221 Oct 27 1998 camtest4c.c -rw-r--r-- 1 inoue kek 718 Oct 27 1998 camtest4dma.asm -rw-r--r-- 1 inoue kek 1821 Oct 27 1998 camtest4etc.asm -rw-r--r-- 1 inoue kek 699 Oct 27 1998 camtest4int.asm -rw-r--r-- 1 inoue kek 540 Oct 27 1998 camtest4single.asm -rw-r--r-- 1 inoue kek 2036 Oct 27 1998 camtest5c.c -rw-r--r-- 1 inoue kek 3250 Oct 27 1998 camtestc.c -rw-r--r-- 1 inoue kek 1493 Oct 27 1998 cmdump.c -rw-r--r-- 1 inoue kek 1992 Oct 27 1998 cregdump.c -rw-r--r-- 1 inoue kek 999 Oct 27 1998 creset.c -rwxr-xr-x 1 inoue kek 7044 Oct 27 1998 inoue* -rw-r--r-- 1 inoue kek 717 Oct 27 1998 inoue.c -rw-r--r-- 1 inoue kek 0 Nov 4 1998 lpr -rw-r--r-- 1 inoue kek 5227 Nov 4 1998 out -rw-r--r-- 1 inoue kek 4748 Oct 27 1998 test.c onl50t[58]% ls -l camsingle_* -rw-r--r-- 1 inoue kek 2340 Oct 27 1998 camsingle_measure.c -rwxr-xr-x 1 inoue kek 75404 Oct 28 1998 camsingle_measure1* -rw-r--r-- 1 inoue kek 45398 Oct 28 1998 camsingle_measure1.c -rw-r--r-- 1 inoue kek 2718 Oct 27 1998 camsingle_measure1.c.Oct-21.98 -rw-r--r-- 1 inoue kek 2718 Oct 27 1998 camsingle_measure1.c.Oct-27.98 -rw-r--r-- 1 inoue kek 24344 Oct 28 1998 camsingle_measure1.c.Oct-28.98 -rw-r--r-- 1 inoue kek 2456 Oct 27 1998 camsingle_measure1.c.org -rw-r--r-- 1 inoue kek 3705 Oct 27 1998 camsingle_measure1.log onl50t[59]% 測定の精度を上げるために測定方法は次のようにしてある。 シングル アクションRead の CAMAC コールを 1000回実行し、この1000回実行の前後で 時間を測り、その値を 1000 で割った。 (3-1-2). /usr/ucb/cc を使えるように設定する onl50t# pwd /usr/ccs/bin onl50t# ls -l total 3916 -rwxr-xr-x 1 bin bin 45928 May 3 1997 admin -r-xr-xr-x 1 bin bin 27500 Apr 11 1998 ar -rwxr-xr-x 1 bin bin 371420 Sep 20 1996 as -rwxr-xr-x 1 bin bin 41516 May 3 1997 cdc -rwxr-xr-x 1 bin bin 28892 May 3 1997 comb -rwxr-xr-x 1 bin bin 59044 May 3 1997 delta -r-xr-xr-x 1 bin bin 119924 Jul 16 1997 dis -r-xr-xr-x 1 bin bin 126620 Apr 11 1998 dump -r-xr-xr-x 1 bin bin 19332 Apr 11 1998 elfdump -r-xr-xr-x 1 bin bin 30936 Jul 16 1997 error -rwxr-xr-x 1 bin bin 51808 May 3 1997 get -r-xr-xr-x 1 bin bin 77504 Apr 11 1998 gprof -r--r--r-- 1 bin bin 3377 Jul 16 1997 gprof.callg.blurb -r--r--r-- 1 bin bin 1173 Jul 16 1997 gprof.flat.blurb -rwxr-xr-x 1 bin bin 4176 May 3 1997 help -rwxr-xr-x 1 bin bin 8468 Apr 11 1998 ld -r-xr-xr-x 1 bin bin 73124 Jul 16 1997 lex -r-xr-xr-x 1 bin bin 2454 Jul 16 1997 lorder -r-xr-xr-x 1 bin bin 31108 Jul 16 1997 m4 -rwxr-xr-x 1 bin bin 253648 Mar 5 1998 make -r-xr-xr-x 2 bin bin 26260 Apr 11 1998 mcs -rw-r--r-- 1 bin bin 8401 Jul 16 1997 nceucform -rw-r--r-- 1 bin bin 5862 Jul 16 1997 ncform -r-xr-xr-x 1 bin bin 103712 Apr 11 1998 nm -rw-r--r-- 1 bin bin 3198 Jul 16 1997 nrform -r-xr-xr-x 1 bin bin 58704 Jul 16 1997 prof -rwxr-xr-x 1 bin bin 36400 May 3 1997 prs -rwxr-xr-x 1 bin bin 18876 May 3 1997 prt -r-xr-xr-x 1 bin bin 375 Jul 16 1997 ranlib -r-xr-xr-x 1 bin bin 7120 Jul 16 1997 regcmp -rwxr-xr-x 1 bin bin 41516 May 3 1997 rmdel -rwxr-xr-x 1 bin bin 24044 May 3 1997 sact -rwxr-xr-x 1 bin bin 25276 May 3 1997 sccs -rwxr-xr-x 1 bin bin 2196 Feb 4 1997 sccsdiff -r-xr-xr-x 1 bin bin 9808 Jul 16 1997 size -r-xr-xr-x 2 bin bin 26260 Apr 11 1998 strip -r-xr-xr-x 1 bin bin 335 Jul 16 1997 symorder -r-xr-xr-x 1 bin bin 10216 Jul 16 1997 tsort lrwxrwxrwx 1 root other 45 Jun 4 15:24 ucbcc -> /kek/compilers/volume5/SUNWspro/SC4.2/bin/acc lrwxrwxrwx 1 root other 46 Jun 4 15:25 ucblint -> /kek/compilers/volume5/SUNWspro/SC4.2/bin/lint -rwxr-xr-x 1 bin bin 24044 May 3 1997 unget -r-xr-xr-x 1 bin bin 9860 Jul 16 1997 unifdef -rwxr-xr-x 1 bin bin 15560 May 3 1997 val -rwxr-xr-x 1 bin bin 14624 Feb 4 1997 vc -rwxr-xr-x 1 bin bin 7544 May 3 1997 what -r-xr-xr-x 1 bin bin 54608 Jul 16 1997 yacc -rw-r--r-- 1 bin bin 11848 Jul 16 1997 yaccpar onl50t# ok. すでに ucbcc、ucblint のシンボリック・リンクは作られている。 (3-4). /export/home/frc7v-cl1/inoue/CAMAC/CAMAC-speed1/examples-Solaris2.x の下をコンパイルする (3-4-1). デバッグ後の最新の camacドライバをインストールする onl50t# pwd /export/home/onl50t/inoue/CAMAC/Driver/FORCE-5V-sol2.5 onl50t# make install /usr/ucb/install -d /usr/local/vme/camac/include /usr/ucb/install -d /usr/local/vme/camac/lib /usr/ucb/install -m 644 camlib.h cc_config.h cc_common.h cc.h \ k2917.h /usr/local/vme/camac/include /usr/ucb/install -m 644 libcamac.a /usr/local/vme/camac/lib onl50t# ls -lR /usr/local/vme /usr/local/vme: total 2 drwxr-xr-x 4 root other 512 Jun 4 16:16 camac /usr/local/vme/camac: total 4 drwxr-xr-x 2 root other 512 Jul 1 14:57 include drwxr-xr-x 2 root other 512 Jul 1 14:57 lib /usr/local/vme/camac/include: total 26 -rw-r--r-- 1 root staff 1415 Jul 1 14:57 camlib.h -rw-r--r-- 1 root staff 2861 Jul 1 14:57 cc.h -rw-r--r-- 1 root staff 2288 Jul 1 14:57 cc_common.h -rw-r--r-- 1 root staff 876 Jul 1 14:57 cc_config.h -rw-r--r-- 1 root staff 4058 Jul 1 14:57 k2917.h /usr/local/vme/camac/lib: total 28 -rw-r--r-- 1 root staff 13868 Jul 1 14:57 libcamac.a onl50t# (3-4-2). シングルアクションのテスト用プログラムのコンパイル onl50t[84]% pwd /export/home/onl50t/inoue/CAMAC/CAMAC-speed1/examples-Solaris2.x onl50t[85]% rm camsingle_measure1 onl50t[86]% make camsingle_measure1 /usr/ucb/cc -DOSF1 -o camsingle_measure1 camsingle_measure1.c -I../includes -L../lib -lcamac onl50t[87]% ok. 正常にコンパイルできた。 (3-4-3). 割り込みのテスト用プログラムのコンパイル onl50t[87]% ls -l camint_measure1 -rwxr-xr-x 1 inoue kek 16936 Oct 27 1998 camint_measure1* onl50t[88]% rm camint_measure1 onl50t[89]% make camint_measure1 /usr/ucb/cc -DOSF1 -o camint_measure1 camint_measure1.c -I../includes -L../lib -lcamac onl50t[90]% ok. コンパイルは正常に実行できた。 (3-4-4). ブロック転送のテスト用プログラムのコンパイル onl50t[90]% ls -l camblock_measure1 -rwxr-xr-x 1 inoue kek 17356 Oct 27 1998 camblock_measure1* onl50t[91]% rm camblock_measure1 onl50t[92]% make camblock_measure1 /usr/ucb/cc -DOSF1 -o camblock_measure1 camblock_measure1.c -I../includes -L../lib -lcamac onl50t[93]% ok. コンパイルは正常に実行できた。 (4). データ転送速度測定プログラムの実行 上記でコンパイルしたデータ転送速度測定プログラムを実行する。 (4-1). 24 ビット camac シングルアクションのテスト用プログラムの実行 シェルスクリプトを使って、データ転送速度測定プログラムを 100回繰り返し ている。 さらにこのシェルスクリプトを 5回実行した。 onl50t# pwd /export/home/onl50t/inoue/CAMAC/CAMAC-speed1/examples-Solaris2.x onl50t# ls -l camsingle.sh -rwxr--r-- 1 inoue kek 313 Oct 28 1998 camsingle.sh onl50t# ./camsingle.sh program execution : loop count = 1 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 34000 microsec elapsed time 34 microsec CAMAC READ single action takes 33 microsec. program execution : loop count = 2 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 33948 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 3 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 33912 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 4 <---- k2917 Reset button ここで実行はフリーズしてしまった。 k2917 の resetボタンを押したら実行は再開した elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 205930 microsec elapsed time 205 microsec CAMAC READ single action takes 204 microsec. program execution : loop count = 5 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33839 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 6 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 33825 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 7 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33782 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 8 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33813 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 9 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 33872 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 10 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33877 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 11 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 33809 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 12 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33834 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 13 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 33957 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 14 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33835 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 15 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33807 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 16 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 33824 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 17 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33824 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 18 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33871 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 19 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33999 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 20 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33856 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 21 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 33836 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 22 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33811 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 23 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33835 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 24 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33805 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 25 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33816 microsec elapsed time 33 microsec CAMAC READ single action takes 32 microsec. program execution : loop count = 26 elapsed time 0 sec, 6 microsec overhead time 1 microsec elapsed time 0 sec, 33817 microsec elapsed time 33 microsec ここで実行はフリーズしてしまった。 k2917 の resetボタンを押ししても実行は再開しない。 この時コンソール上には "WARNING: vme: no interrupt vector for VME IRQ 4" のメッセージが延々と繰り返し表示されている。 ベクタなしでVMEから割り込みがかってしまったようだ。 WARNING: vme: no interrupt vector for VME IRQ 4 WARNING: vme: no interrupt vector for VME IRQ 4 W ここで CPU-50T の Abortボタンを押してシステムを強制終了した。 Watchdog Reset Externally Initiated Reset ok ok boot disk3 -r Resetting ... screen not found. Can't open input device. Keyboard not present. Using ttya for input and output. FORCE,CPU-50(UltraSPARC-IIi 300MHz), No Keyboard OpenBoot 3.10.6, 256 MB memory installed, Serial #9196200. Ethernet address 0:80:42:b:e2:a8, Host ID: 808c52a8. Executing last command: boot disk3 -r Boot device: /pci@1f,0/scsi@4/disk@3,0 File and args: -r SunOS Release 5.6 Version Generic_105181-05 [UNIX(R) System V Release 4.0] Copyright (c) 1983-1997, Sun Microsystems, Inc. configuring network interfaces: hme0. Hostname: onl50t The / file system (/dev/rdsk/c0t3d0s0) is being checked. /dev/rdsk/c0t3d0s0: 3975 files, 398590 used, 507270 free /dev/rdsk/c0t3d0s0: (382 frags, 63361 blocks, 0.0% fragmentation) The /usr file system (/dev/rdsk/c0t3d0s6) is being checked. /dev/rdsk/c0t3d0s6: 28673 files, 546572 used, 3798784 free /dev/rdsk/c0t3d0s6: (1904 frags, 474610 blocks, 0.0% fragmentation) Configuring the /devices directory FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x 0 and vme24d32 0x0 and vme32d32 0x0 and space 0x2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmedma0 at vme0 vmefdma0 at vme0 vmedvma0 at vme0 vmectl0 at vme0 Configuring the /dev directory Configuring the /dev directory (compatibility devices) The system is coming up. Please wait. checking ufs filesystems /dev/rdsk/c0t3d0s5: is stable. /dev/rdsk/c0t3d0s4: is stable. /dev/rdsk/c0t3d0s7: is stable. /dev/rdsk/c0t3d0s3: 906 files, 32263 used, 639411 free /dev/rdsk/c0t3d0s3: (211 frags, 79900 blocks, 0.0% fragmentation) checking for crash dump... add net default: gateway ICCFP1 NIS domainname is kek.jp starting rpc services: rpcbind keyserv done. Setting netmask of hme0 to 255.255.248.0 Setting default interface for multicast: add net 224.0.0.0: gateway onl50t syslog service starting. Print services started. starting Kana-Kanji converters: cssd. volume management starting. Wnn6: Key License Server started.... Nihongo Multi Client Server (Wnn6 R2.30) Finished Reading Files The system is ready. onl50t console login: システムが立ち上がった後で再度 camsingle.sh を実行してみた。 止まる場所 は一定ではないが症状は同じ。 onl50t[44]% vi cc.c : cc_intr(int unit) { /* register struct cc_device *cc = &ccdevice[0]; */ register struct cc_device *cc; /* register struct K_REG *k = cc->k; */ cc = ddi_get_soft_state(cc_state,unit); mutex_enter(&cc->mutex); /* start MUTEX */ /* E.Inoue: from */ cmn_err(CE_NOTE," cc_intr: debug step06. --- enter cc_intr()"); /* E.Inoue: end */ /* check K2917 register */ if ((cc->k->csr & CC_LAM) != 0) cc->interrupt |= CC_INT_LAM; if ((cc->k->csr & CC_DONE) != 0) : "cc.c" 3025 lines, 78156 characters onl50t[44]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o onl50t[45]% onl50t# make unload ./script/cc_unload.sh [Removing CAMAC device driver] [Removing CAMAC device driver from system] [Deleting CAMAC device files] onl50t# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] sun4u onl50t# ls -l /dev/cc lrwxrwxrwx 1 root other 37 Jul 1 16:36 /dev/cc -> /devices/pci@1f ,0/vme@5/cc@2d,ff00:cc onl50t# onl50t# camsingle.sh program execution : loop count = 1 elapsed time 0 sec, 7 microsec overhead time 1 microsec elapsed time 0 sec, 34092 microsec elapsed time 34 microsec CAMAC READ single action takes 33 microsec. : : program execution : loop count = 30 elapsed time 0 sec, 7 microsec overhead time 1 microsec <--- ここでフリーズ。 vmedvma0 at vme0 vmectl0 at vme0 WARNING: vme: no interrupt vector for VME IRQ 4 <--- cc_intr()には飛んでいない WARNING: vme: no interrupt vector for VME IRQ 4 camacシングルアクションを実行中に何かの原因でベクタのない割り込み信号が 発行されてしまっている。 このため CPUボードは対応できなくて動けなく なってしまっているようだ。 cc_intr()を元に戻す。 onl50t[44]% vi cc.c : static u_int cc_intr(int unit) { /* register struct cc_device *cc = &ccdevice[0]; */ register struct cc_device *cc; /* register struct K_REG *k = cc->k; */ cc = ddi_get_soft_state(cc_state,unit); mutex_enter(&cc->mutex); /* start MUTEX */ /* E.Inoue: from cmn_err(CE_NOTE," cc_intr: debug step06. --- enter cc_intr()"); E.Inoue: end */ : "cc.c" 3025 lines, 78152 characters onl50t[45]% onl50t[45]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o onl50t[46]% onl50t# make install /usr/ucb/install -d /usr/local/vme/camac/include /usr/ucb/install -d /usr/local/vme/camac/lib /usr/ucb/install -m 644 camlib.h cc_config.h cc_common.h cc.h \ k2917.h /usr/local/vme/camac/include /usr/ucb/install -m 644 libcamac.a /usr/local/vme/camac/lib onl50t# onl50t# make unload ./script/cc_unload.sh [Removing CAMAC device driver] [Removing CAMAC device driver from system] [Deleting CAMAC device files] onl50t# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] sun4u onl50t# cam1 実行のデバッグをやる。 ---xxxx ここまでやった(継続中) --- (6). セクション (6-1). サブセクション (6-1-1). サブサブセクション