Feb 5, 2001 onl50t: Solaris 7 cc ドライバのデバッグ. キットを使った最終的なテスト ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/ onl50t-sol7/Desktop/kit-test-50t.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). 現状確認 (A). SPARC CPU-50T、Solaris7 が届いた。 (B). FORCE,CPU-50(UltraSPARC-IIi 300MHz)、に Solaris 7 のシステムを インストールした。 (C). /etc の下のシステム設定の途中、同一SCSIケーブル上に narrow の ディスクと wide のディスクを混在してつないだらシステムが立ち 上がらなくなってしまった。 (D). wide のディスクを narrow のディスクに替えてもらった。 (E). FORCE,CPU-50(UltraSPARC-IIi 300MHz)、に Solaris 7 のシステムを 再インストールした。 (F). /etc の下の各設定、および /export/home の作成をやった。 (G). CPU-50T に Solaris7用の VMEドライバ、FRCvme-2.4.1 をインストール (H). onl50t に ccドライバを make load しようとしたが、64ビット対応に なっていないために組み込めない。 (I). Solaris7、32ビット・カーネルで onl50t を起動して camacドライバを 組み込んだ。 (J). onl50t、Solaris7 で 32ビット・カーネルの下での camacドライバの 動作確認をやった。 正常に実行できた。 (K). Solaris7、32ビット・カーネルの下で、シングルアクション、割り込み を実行した時のデータ転送速度は正常に測定できたが、ブロック転送の データ転送速度を測定時にシステムがフリーズしてしまった。 (L). 32ビットカーネルを使ってブロック転送を実行すると、複数ワードの データ転送時にフリーズすることがある、この時 camacドライバに制御 が移っていないことを確認した。 (M). ドライバプログラムを64ビット対応にするために必要な作業について調 べた。 (N). lintを使ってcamacドライバプログラムをチェック。 camacドライバを    ロード、アンロードできるようになった。 (O). 64ビット・カーネルの下での camacドライバの動作確認をやった。    シングルアクションR/W はNG。 LAM割り込み処理はNG。 ブロック転送は    確認していない。 (P). CGENC、CGENZ、CGENI、CREMIの実行は正常に実行できるようになった。 (Q). camac シングルアクション read/write の部分をデバッグ中にシステムを 壊してしまった。 (R). Solaris 7 のシステム再インストールした(その2)。 (S). /etc の下の各設定、および /export/home の作成をした(その2)。 (T). VMEドライバ、FRCvme-2.4.1 を再インストールした(その2)。 (U). ccドライバをインストールした(その2)。 (V). camac Z、C が正しく動作できるが、camacシングルアクションread/write がうまく実行できない状況に復旧できた。 (W). camac シングルアクション read/writeは正常に実行できた。 (X). camac LAM割り込み処理の部分をチェック(その1)。 cc_attach()ルーチンを修正した。 camac 割り込み処理は NG. (Y). camac LAM割り込み処理は正常に実行できた。 (Z). camacブロック転送readは正しく実行できた。 camacブロック転送writeはNG. DMAをスタートすると"DMA Buffer Empty" の割り込みがかかってDMAは実行されない。 (2-A). camacブロック転送writeの部分をチェック。 1camacワードの転送以外 は正常に実行できた。 ベータ版としてキットを公開する。 (2-B). 配布キットを作成した。 (2). ここでやるべきこと onl50t、デスクトップ・システム上で、配布キットを使って最終的なテストを やる。 (3). onl50t 上でデバッグした cc.cファイル一式を入手、再コンパイル、リロード (3-1). CAMACドライバ・キット FORCE-50T-sol7 を online.kek.jp から入手 onl50t[50]% pwd /export/home/onl50t/inoue/CAMAC/Driver/kit-test-sol7 onl50t[51]% ls -l total 0 onl50t[52]% ftp online.kek.jp Connected to onlax2.kek.jp. 220 onlax2.kek.jp FTP server (Compaq Tru64 UNIX Version 5.60) ready. Name (online.kek.jp:inoue): anonymous 331 Guest login ok, send ident as password. Password: 230 Guest login ok, access restrictions apply. ftp> cd pub/kek/camac 250 CWD command successful. ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls (130.87.219.209,33188). total 3560 -rw-r--r-- 1 0 10 1173 Apr 19 1995 122d_to_e.tar.gz -rw-r--r-- 1 0 10 89611 Oct 20 16:14 FORCE-50T-sol2.6-list.tar. Z -rw-r--r-- 1 0 10 48627 Oct 20 16:14 FORCE-50T-sol2.6-list.tar. gz -rw-r--r-- 1 0 10 24125 Jul 26 1999 FORCE-50T-sol2.6.tar.gz -rw-r--r-- 1 0 10 68477 Jan 31 10:02 FORCE-50T-sol7.tar.Z -rw-r--r-- 1 0 10 39629 Jan 31 10:02 FORCE-50T-sol7.tar.gz -rw-r--r-- 1 0 10 22160 Nov 19 1997 FORCE-5V-sol2.5.tar.gz -rw-r--r-- 1 0 10 2494 Dec 2 1994 README -rw-r--r-- 1 0 10 37083 Oct 27 11:19 SPARC-status.html -rw-r--r-- 1 0 10 21435 Dec 13 1994 camac.sol2-1.30.tar.gz -rw-r--r-- 1 0 10 169539 Aug 18 1993 camac.sparc-1.22b.tar.Z -rw-r--r-- 1 0 10 91662 Aug 18 1993 camac.sparc-1.22b.tar.gz -rw-r--r-- 1 0 10 198417 Aug 19 1993 camac.sparc-1.22c.tar.Z -rw-r--r-- 1 0 10 110755 Aug 19 1993 camac.sparc-1.22c.tar.gz -rw-r--r-- 1 0 10 199103 Sep 4 1993 camac.sparc-1.22d.tar.Z -rw-r--r-- 1 0 10 110752 Sep 4 1993 camac.sparc-1.22d.tar.gz -rw-r--r-- 1 0 10 287493 Apr 20 1995 camacv1.01_decs.tar.Z -rw-r--r-- 1 0 10 231505 Dec 2 1994 camacv1.01_hprt.tar.Z -rw-r--r-- 1 0 10 132002 Dec 2 1994 camacv1.01_hprt.tar.gz -rw-r--r-- 1 0 10 283202 Dec 2 1994 camacv1.0_decs.tar.Z -rw-r--r-- 1 0 10 159495 Dec 2 1994 camacv1.0_decs.tar.gz -rw-r--r-- 1 0 10 216777 Sep 13 1994 camacv1.0_hprt.tar.Z -rw-r--r-- 1 0 10 122114 Sep 13 1994 camacv1.0_hprt.tar.gz -rw-r--r-- 1 0 10 87379 Nov 30 1994 camlib-docs-1.0.tar.Z -rw-r--r-- 1 0 10 51118 Nov 30 1994 camlib-docs-1.0.tar.gz drwxr-xr-x 2 0 10 512 Jul 24 2000 doc -rw-r--r-- 1 0 10 13589 Jan 17 1995 sparc-3ce.tar.gz -rw-r--r-- 1 0 10 233395 Aug 18 1993 tdaq-1.00.tar.Z -rw-r--r-- 1 0 10 121288 Apr 2 1992 tdaq-1.00.tar.gz -rw-r--r-- 1 0 10 277799 Jan 20 1995 vme-3CE.tar.gz 226 Transfer complete. 2288 bytes received in 0.12 seconds (18.46 Kbytes/s) ftp> binary 200 Type set to I. ftp> get FORCE-50T-sol7.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for FORCE-50T-sol7.tar.gz (130.87.219.20 9,33189) (39629 bytes). 226 Transfer complete. local: FORCE-50T-sol7.tar.gz remote: FORCE-50T-sol7.tar.gz 39629 bytes received in 0.04 seconds (973.22 Kbytes/s) ftp> quit 221 Goodbye. onl50t[53]% onl50t[53]% ls -l total 78 -rw-r--r-- 1 inoue kek 39629 Jan 31 14:30 FORCE-50T-sol7.tar.gz onl50t[54]% gzip -d FORCE-50T-sol7.tar.gz onl50t[55]% ls -l total 464 -rw-r--r-- 1 inoue kek 223232 Jan 31 09:51 FORCE-50T-sol7.tar onl50t[56]% tar xvf FORCE-50T-sol7.tar x FORCE-50T-sol7, 0 bytes, 0 tape blocks x FORCE-50T-sol7/Makefile, 2102 bytes, 5 tape blocks x FORCE-50T-sol7/README, 4004 bytes, 8 tape blocks x FORCE-50T-sol7/cam1.c, 1170 bytes, 3 tape blocks x FORCE-50T-sol7/cam2.f, 2336 bytes, 5 tape blocks x FORCE-50T-sol7/cam3.c, 2055 bytes, 5 tape blocks x FORCE-50T-sol7/camlib.c, 9740 bytes, 20 tape blocks x FORCE-50T-sol7/camlib.h, 1415 bytes, 3 tape blocks x FORCE-50T-sol7/cc.c, 81531 bytes, 160 tape blocks x FORCE-50T-sol7/cc64.c, 82996 bytes, 163 tape blocks x FORCE-50T-sol7/cc.conf, 288 bytes, 1 tape blocks x FORCE-50T-sol7/cc.h, 2931 bytes, 6 tape blocks x FORCE-50T-sol7/cc_common.h, 2288 bytes, 5 tape blocks x FORCE-50T-sol7/cc_config.h, 876 bytes, 2 tape blocks x FORCE-50T-sol7/forlib.c, 3289 bytes, 7 tape blocks x FORCE-50T-sol7/k2917.h, 4058 bytes, 8 tape blocks x FORCE-50T-sol7/script, 0 bytes, 0 tape blocks x FORCE-50T-sol7/script/awk1.txt, 66 bytes, 1 tape blocks x FORCE-50T-sol7/script/awk2.txt, 37 bytes, 1 tape blocks x FORCE-50T-sol7/script/cc_build.gcc.sh, 233 bytes, 1 tape blocks x FORCE-50T-sol7/script/cc_build.sh, 470 bytes, 1 tape blocks x FORCE-50T-sol7/script/cc_link.sh, 833 bytes, 2 tape blocks x FORCE-50T-sol7/script/cc_load.sh, 949 bytes, 2 tape blocks x FORCE-50T-sol7/script/cc_unload.sh, 404 bytes, 1 tape blocks onl50t[57]% (3-2). camac ドライバのキットをコンパイルし直す onl50t[57]% which cc /kek/compilers/ws5.0/SUNWspro/bin/cc onl50t[58]% cc -V cc: WorkShop Compilers 5.0 98/12/15 C 5.0 usage: cc [ options] files. Use 'cc -flags' for details onl50t[59]% which f77 /kek/compilers/ws5.0/SUNWspro/bin/f77 onl50t[60]% f77 -V f77: WorkShop Compilers 5.0 98/12/15 FORTRAN 77 5.0 Usage: f77 [ options ] files. Use 'f77 -flags' for details onl50t[61]% pwd /export/home/onl50t/inoue/CAMAC/Driver/kit-test-sol7 onl50t[62]% ls -lR .: total 466 drwxr-xr-x 3 inoue kek 512 Jan 26 10:24 FORCE-50T-sol7/ -rw-r--r-- 1 inoue kek 223232 Jan 31 09:51 FORCE-50T-sol7.tar ./FORCE-50T-sol7: total 412 -rw-r--r-- 1 inoue kek 2102 Dec 18 10:12 Makefile -rw-r--r-- 1 inoue kek 4004 Jan 26 16:24 README -rw-r--r-- 1 inoue kek 1170 Nov 22 15:52 cam1.c -rw-r--r-- 1 inoue kek 2336 Nov 22 15:52 cam2.f -rw-r--r-- 1 inoue kek 2055 Nov 22 15:52 cam3.c -rw-r--r-- 1 inoue kek 9740 Dec 18 15:19 camlib.c -rw-r--r-- 1 inoue kek 1415 Nov 22 15:52 camlib.h -rw-r--r-- 1 inoue kek 81531 Dec 28 10:32 cc.c -rw-r--r-- 1 inoue kek 288 Nov 22 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 Nov 22 15:52 cc.h -rw-r--r-- 1 inoue kek 82996 Jan 12 16:16 cc64.c -rw-r--r-- 1 inoue kek 2288 Nov 22 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 Nov 22 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 Nov 22 15:52 forlib.c -rw-r--r-- 1 inoue kek 4058 Nov 22 15:52 k2917.h drwxr-xr-x 2 inoue kek 512 Dec 6 11:33 script/ ./FORCE-50T-sol7/script: total 14 -rw-r--r-- 1 inoue kek 66 Nov 22 15:52 awk1.txt -rw-r--r-- 1 inoue kek 37 Nov 22 15:52 awk2.txt -rwxr-xr-x 1 inoue kek 233 Nov 22 15:52 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 470 Jan 18 09:58 cc_build.sh* -rwxr-xr-x 1 inoue kek 833 Jan 19 10:20 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 Nov 22 15:52 cc_load.sh* -rwxr-xr-x 1 inoue kek 404 Nov 22 15:52 cc_unload.sh* onl50t[63]% onl50t[43]% pwd /export/home/onl50t/inoue/CAMAC/Driver/kit-test-sol7/FORCE-50T-sol7 onl50t[44]% make clean \rm -f cc cc64 *.o libcamac.a cam1 cam2 cam2a cam3 *~ core onl50t[45]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o cc64.o cc -xarch=v9 -O -c camlib.c -o camlib.o -I. cc -xarch=v9 -O -c forlib.c -o forlib.o -I. rm -f libcamac.a ar rcv libcamac.a camlib.o forlib.o a - camlib.o a - forlib.o ar: writing libcamac.a cc -xarch=v9 -O cam1.c -o cam1 -I. -L. -lcamac f77 -xarch=v9 -fast -O3 -u cam2.f -o cam2 -I. -L. -lcamac cam2.f: MAIN: cc -xarch=v9 -O cam3.c -o cam3 -I. -L. -lcamac onl50t[46]% onl50t# pwd /export/home/onl50t/inoue/CAMAC/Driver/kit-test-sol7/FORCE-50T-sol7 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# (3-3). ccドライバをロードし直す 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] drvconfig: Driver (cc) failed to attach Warning: Driver (cc) successfully added to system but failed to attach [Configuring CAMAC device driver] [Making CAMAC device files] sun4u onl50t# ls -l /dev/cc lrwxrwxrwx 1 root other 3 Feb 1 11:18 /dev/cc -> :cc onl50t# コンソール上のメッセージは以下のとおり。 Feb 1 11:29:38 onl50t su: 'su root' succeeded for inoue on /dev/pts/2 Feb 1 11:29:50 onl50t unix: /kernel/drv//sparcv9/cc: undefined symbol 'Mutex_en ter' Feb 1 11:29:50 onl50t unix: WARNING: mod_load: cannot load module 'cc' Feb 1 11:30:05 onl50t unix: /kernel/drv//sparcv9/cc: undefined symbol 'Mutex_en ter' Feb 1 11:30:05 onl50t unix: WARNING: mod_load: cannot load module 'cc' NG. ドライバを正常にロードできなかった。 キット作りの段階でミスをしてしまったようだ。 チェックする。 バックアップしておいたキットのセットを使って調べたところ、 drwxr-xr-x 3 inoue kek 512 Jan 9 14:48 FORCE-50T-sol7-bak3/ drwxr-xr-x 3 inoue kek 512 Jan 9 17:05 FORCE-50T-sol7-Jan10-2001/ "FORCE-50T-sol7-bak3" のキットでは正常にロードできるが、"FORCE-50T-sol7 -Jan10-2001" のキットではエラーになることを確認した。 この間の修正個所 に間違いがあるようだ。 チェックする。 (3-4). 修正個所の見直し onl50t[123]% pwd /export/home/onl50t/inoue/compile-check onl50t[124]% ls Check/ FORCE-50T-sol7-Jan19-2001/ FORCE-50T-sol7/ FORCE-50T-sol7-Jan22-2001/ FORCE-50T-sol7-Jan10-2001/ FORCE-50T-sol7-Jan25-2001/ FORCE-50T-sol7-Jan10a2001/ FORCE-50T-sol7-Jan26-2001/ FORCE-50T-sol7-Jan11-2001/ FORCE-50T-sol7-bak/ FORCE-50T-sol7-Jan11a2001/ FORCE-50T-sol7-bak1/ FORCE-50T-sol7-Jan11b2001/ FORCE-50T-sol7-bak2/ FORCE-50T-sol7-Jan11c2001/ FORCE-50T-sol7-bak3/ FORCE-50T-sol7-Jan12-2001/ tmp-sol7-bak-OK/ FORCE-50T-sol7-Jan12a2001/ tmp1-Jan12-NG/ FORCE-50T-sol7-Jan12b2001/ tmp2-sol7-bak3-OK/ FORCE-50T-sol7-Jan12c2001/ tmp3-Jan11-NG/ FORCE-50T-sol7-Jan17-2001/ tmp4-Jan10-NG/ onl50t[125]% ls -lR FORCE-50T-sol7-bak3 > bak3.ls onl50t[126]% ls -lR FORCE-50T-sol7-Jan10-2001 > Jan10.ls onl50t[127]% onl50t[124]% cat bak3.ls FORCE-50T-sol7-bak3: total 1110 -rw-r--r-- 1 inoue kek 2102 Dec 18 10:12 Makefile -rw-r--r-- 1 inoue kek 3624 Nov 22 15:52 README -rwxr-xr-x 1 inoue kek 20712 Jan 9 14:48 cam1* -rw-r--r-- 1 inoue kek 1170 Nov 22 15:52 cam1.c -rwxr-xr-x 1 inoue kek 93984 Jan 9 14:48 cam2* -rw-r--r-- 1 inoue kek 2336 Nov 22 15:52 cam2.f -rwxr-xr-x 1 inoue kek 20872 Jan 9 14:48 cam3* -rw-r--r-- 1 inoue kek 2055 Nov 22 15:52 cam3.c -rw-r--r-- 1 inoue kek 9740 Dec 18 15:19 camlib.c -rw-r--r-- 1 inoue kek 1415 Nov 22 15:52 camlib.h -rw-r--r-- 1 inoue kek 23112 Jan 9 14:48 camlib.o -rw-r--r-- 1 inoue kek 44484 Jan 9 14:47 cc -rw-r--r-- 1 inoue kek 81531 Dec 28 10:32 cc.c -rw-r--r-- 1 inoue kek 288 Nov 22 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 Nov 22 15:52 cc.h -rw-r--r-- 1 inoue kek 48608 Jan 9 14:48 cc64 -rw-r--r-- 1 inoue kek 98301 Jan 9 14:52 cc64.c -rw-r--r-- 1 inoue kek 49676 Dec 28 10:41 cc64.diff -rw-r--r-- 1 inoue kek 2288 Nov 22 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 Nov 22 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 Nov 22 15:52 forlib.c -rw-r--r-- 1 inoue kek 5072 Jan 9 14:48 forlib.o -rw-r--r-- 1 inoue kek 4058 Nov 22 15:52 k2917.h -rw-r--r-- 1 inoue kek 29044 Jan 9 14:48 libcamac.a -rw-r--r-- 1 inoue kek 2579 Dec 27 16:39 out drwxr-xr-x 2 inoue kek 512 Dec 6 11:33 script/ FORCE-50T-sol7-bak3/script: total 14 -rw-r--r-- 1 inoue kek 66 Nov 22 15:52 awk1.txt -rw-r--r-- 1 inoue kek 37 Nov 22 15:52 awk2.txt -rwxr-xr-x 1 inoue kek 233 Nov 22 15:52 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 596 Nov 22 15:52 cc_build.sh* -rwxr-xr-x 1 inoue kek 833 Nov 22 15:52 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 Nov 22 15:52 cc_load.sh* -rwxr-xr-x 1 inoue kek 404 Nov 22 15:52 cc_unload.sh* onl50t[125]% onl50t[125]% onl50t[125]% cat Jan10.ls FORCE-50T-sol7-Jan10-2001: total 1106 -rw-r--r-- 1 inoue kek 2102 Dec 18 10:12 Makefile -rw-r--r-- 1 inoue kek 3624 Nov 22 15:52 README -rwxr-xr-x 1 inoue kek 20712 Jan 9 17:04 cam1* -rw-r--r-- 1 inoue kek 1170 Nov 22 15:52 cam1.c -rwxr-xr-x 1 inoue kek 93984 Jan 9 17:05 cam2* -rw-r--r-- 1 inoue kek 2336 Nov 22 15:52 cam2.f -rwxr-xr-x 1 inoue kek 20872 Jan 9 17:05 cam3* -rw-r--r-- 1 inoue kek 2055 Nov 22 15:52 cam3.c -rw-r--r-- 1 inoue kek 9740 Dec 18 15:19 camlib.c -rw-r--r-- 1 inoue kek 1415 Nov 22 15:52 camlib.h -rw-r--r-- 1 inoue kek 23112 Jan 9 17:04 camlib.o -rw-r--r-- 1 inoue kek 44484 Jan 9 17:04 cc -rw-r--r-- 1 inoue kek 81531 Dec 28 10:32 cc.c -rw-r--r-- 1 inoue kek 288 Nov 22 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 Nov 22 15:52 cc.h -rw-r--r-- 1 inoue kek 48640 Jan 9 17:04 cc64 -rw-r--r-- 1 inoue kek 96227 Jan 9 17:09 cc64.c -rw-r--r-- 1 inoue kek 49676 Dec 28 10:41 cc64.diff -rw-r--r-- 1 inoue kek 2288 Nov 22 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 Nov 22 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 Nov 22 15:52 forlib.c -rw-r--r-- 1 inoue kek 5072 Jan 9 17:04 forlib.o -rw-r--r-- 1 inoue kek 4058 Nov 22 15:52 k2917.h -rw-r--r-- 1 inoue kek 29044 Jan 9 17:04 libcamac.a -rw-r--r-- 1 inoue kek 2579 Dec 27 16:39 out drwxr-xr-x 2 inoue kek 512 Dec 6 11:33 script/ FORCE-50T-sol7-Jan10-2001/script: total 14 -rw-r--r-- 1 inoue kek 66 Nov 22 15:52 awk1.txt -rw-r--r-- 1 inoue kek 37 Nov 22 15:52 awk2.txt -rwxr-xr-x 1 inoue kek 233 Nov 22 15:52 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 596 Nov 22 15:52 cc_build.sh* -rwxr-xr-x 1 inoue kek 833 Nov 22 15:52 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 Nov 22 15:52 cc_load.sh* -rwxr-xr-x 1 inoue kek 404 Nov 22 15:52 cc_unload.sh* onl50t[126]% これら2つのキットの中の各ファイルのファイルサイズおよび更新日をチェック したところ、この間で変更されたのは cc64.cファイルのみであることが確認 できた。 FORCE-50T-sol7-bak3: -rw-r--r-- 1 inoue kek 98301 Jan 9 14:52 cc64.c FORCE-50T-sol7-Jan10-2001: -rw-r--r-- 1 inoue kek 96227 Jan 9 17:09 cc64.c これら2つのファイルの差分をとる。 onl50t[127]% diff FORCE-50T-sol7-bak3/cc64.c FORCE-50T-sol7-Jan10-2001/cc64.c > cc64.diff onl50t[128]% onl50t[130]% cat cc64.diff 1027,1037d1026 < /* E.Inoue < if ((cc->k->csr & CC_LAM) != 0) < cc->interrupt |= CC_INT_LAM; < if ((cc->k->csr & CC_DONE) != 0) < cc->interrupt |= CC_INT_DONE; < if ((cc->k->empc & CC_INT_ENABLE) == 0) < cc->interrupt |= CC_INT_EMPTY; < if ((cc->k->aboc & CC_INT_ENABLE) == 0) < cc->interrupt |= CC_INT_ABORT; < end */ < /* E.Inoue */ 1041d1029 < /* cmn_err(CE_NOTE," cc_intr: CC_INT_LAM: step02."); */ 1046d1033 < /* cmn_err(CE_NOTE," cc_intr: CC_INT_DONE: step02."); */ 1051d1037 < /* cmn_err(CE_NOTE," cc_intr: CC_INT_EMPTY: step02."); */ 1056d1041 < /* cmn_err(CE_NOTE," cc_intr: CC_INT_ABORT: step02."); */ 1059,1060d1043 < /* end */ < 1063,1066d1045 < /* < cmn_err(CE_NOTE," cc_intr: size of ddi_get16(cc->kreg_handle, &cc->kreg->cs r) is %lu bytes\n", sizeof(ddi_get16(cc->kreg_handle, &cc->kreg->csr))); < cmn_err(CE_NOTE," cc_intr: size of CC_DONE is %lu bytes\n", sizeof(CC_DONE) ); < */ 1078,1080d1056 < /* < cmn_err(CE_NOTE," cc_intr: freeze check: step01."); < */ 1092d1067 < /* cmn_err(CE_NOTE," cc_intr: cc->executing_dma_flag != 0: step03."); */ 1106,1110d1080 < /* cmn_err(CE_NOTE," cc_intr: cc->interrupt != 0: step04."); */ < /* < cmn_err(CE_NOTE," cc_intr: exit intrrupt: cc->kreg->csr = 0x%x\n", cc->kre g->csr); < cmn_err(CE_NOTE," cc_intr: cc->kreg->mtc(wc) = 0x%x \n", ddi_get16(cc->kre g_handle, &cc->kreg->mtc)); < */ 1121,1123d1090 < /* E.Inoue < cc_ioctl(dev_t dev, int cmd, int arg, int flag, cred_t *cred_p, int *rval_p) < end */ 1130,1132d1096 < /* E.Inoue < int idat, data; < end */ 1158,1161d1121 < /* < cmn_err(CE_NOTE,"CCIOC_SET_BRANCH: cc->kreg->lamv = 0x%x \n", ddi_get1 6(cc->kreg_handle,&cc->kreg->lamv)); < */ < 1170,1172d1129 < /* < cmn_err(CE_NOTE,"CCIOC_SET_CRATE: cc->kreg->lamv = 0x%x \n", ddi_get16 (cc->kreg_handle,&cc->kreg->lamv)); < */ 1178c1135 < mutex_enter(&cc->mutex); /* start MUTEX */ --- > Mutex_enter(&cc->mutex); /* start MUTEX */ 1180,1182d1136 < /* E.Inoue < cc->k->lamc = CC_INT_AUTO_CLEAR | CC_INT_ENABLE | intrpri; < end */ 1187,1201d1140 < /* E.Inoue */ < /* < cmn_err(CE_NOTE," cc->kreg->lamc = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->lamc)); < */ < /* < cc->dev_kreg = 0xff; < ddi_put16(cc->kreg_handle, &cc->kreg->lamv, cc->dev_kreg); < */ < /* < ddi_put16(cc->kreg_handle, &cc->kreg->lamv, 0xff); < */ < /* < cmn_err(CE_NOTE,"cc_ioctl: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg _handle, &cc->kreg->lamv)); < */ < /* end */ onl50t[131]% この差分ファイルの中に示された部分を修正する時にミスをしてしまった可能性 がある。 チェック。 (3-4-1). cc64.cファイルの修正 onl50t[47]% pwd /export/home/onl50t/inoue/compile-check onl50t[48]% cd FORCE-50T-sol7 /export/home/onl50t/inoue/compile-check/FORCE-50T-sol7 onl50t[49]% ls Makefile cam2.f camlib.o cc64 forlib.o README cam3* cc cc64.c k2917.h cam1* cam3.c cc.c cc_common.h libcamac.a cam1.c camlib.c cc.conf cc_config.h script/ cam2* camlib.h cc.h forlib.c onl50t[50]% vi cc64.c : 1006 /****************************************************** 1007 * cc_intr * 1008 ******************************************************/ 1009 static u_int 1010 cc_intr(caddr_t unit) 1011 { : 1134 case CCIOC_WAIT_LAM : 1135 Mutex_enter(&cc->mutex); /* start MUTEX */ 1136 cc->interrupt = 0; : mutex_enter() と記述すべきところを Mutex_enter() としてしまっている。 修正する。 : 1134 case CCIOC_WAIT_LAM : 1135 mutex_enter(&cc->mutex); /* start MUTEX */ 1136 cc->interrupt = 0; : "cc64.c" 3102 lines, 82996 characters onl50t[51]% (3-4-2). コンパイルし直して make load をやってみる onl50t[52]% pwd /export/home/onl50t/inoue/compile-check/FORCE-50T-sol7 onl50t[53]% make clean \rm -f cc cc64 *.o libcamac.a cam1 cam2 cam2a cam3 *~ core onl50t[54]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o cc64.o cc -xarch=v9 -O -c camlib.c -o camlib.o -I. cc -xarch=v9 -O -c forlib.c -o forlib.o -I. rm -f libcamac.a ar rcv libcamac.a camlib.o forlib.o a - camlib.o a - forlib.o ar: writing libcamac.a cc -xarch=v9 -O cam1.c -o cam1 -I. -L. -lcamac f77 -xarch=v9 -fast -O3 -u cam2.f -o cam2 -I. -L. -lcamac cam2.f: MAIN: cc -xarch=v9 -O cam3.c -o cam3 -I. -L. -lcamac onl50t[55]% onl50t[55]% su Password: # csh onl50t# source /.cshrc 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# onl50t# ls -l /dev/cc lrwxrwxrwx 1 root other 37 Feb 5 09:44 /dev/cc -> /devices/pci@1f ,0/vme@5/cc@2d,ff00:cc onl50t# ok. 正常にロードできた。 (3-4-3). online.kek.jp に置いてあるキットを修正しておく onlsun1[44]% pwd /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit/FORCE-50T-sol7 onlsun1[45]% ls -l 合計 412 -rw-r--r-- 1 inoue kek 2102 12月 18日 10:12 Makefile -rw-r--r-- 1 inoue kek 4004 1月 26日 16:24 README -rw-r--r-- 1 inoue kek 1170 11月 22日 15:52 cam1.c -rw-r--r-- 1 inoue kek 2336 11月 22日 15:52 cam2.f -rw-r--r-- 1 inoue kek 2055 11月 22日 15:52 cam3.c -rw-r--r-- 1 inoue kek 9740 12月 18日 15:19 camlib.c -rw-r--r-- 1 inoue kek 1415 11月 22日 15:52 camlib.h -rw-r--r-- 1 inoue kek 81531 12月 28日 10:32 cc.c -rw-r--r-- 1 inoue kek 288 11月 22日 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 11月 22日 15:52 cc.h -rw-r--r-- 1 inoue kek 82996 1月 12日 16:16 cc64.c -rw-r--r-- 1 inoue kek 2288 11月 22日 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 11月 22日 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 11月 22日 15:52 forlib.c -rw-r--r-- 1 inoue kek 4058 11月 22日 15:52 k2917.h drwxr-xr-x 2 inoue kek 512 12月 6日 11:33 script/ onlsun1[46]% vi cc64.c : 1086 /****************************************************** 1087 * ccioctl * 1088 ******************************************************/ 1089 static int 1090 cc_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cred_p, int *rval_p) 1091 { : 1134 case CCIOC_WAIT_LAM : 1135 Mutex_enter(&cc->mutex); /* start MUTEX */ 1136 cc->interrupt = 0; : この部分のMutex_enter() を mutex_enter() に修正する。 : 1134 case CCIOC_WAIT_LAM : 1135 mutex_enter(&cc->mutex); /* start MUTEX */ 1136 cc->interrupt = 0; : "cc64.c" 3102 行、82996 バイト onlsun1[47]% onlsun1[47]% cd .. /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit onlsun1[48]% ls Backup/ cam2a.f cc64.c-bak FORCE-50T-sol7/ cam2b* forlib.o FORCE-50T-sol7.tar.Z cam2b.c libcamac.a FORCE-50T-sol7.tar.gz cam3* out1 Makefile-Nov1-2000 camlib.c-org out2 Makefile-org camlib.o out3 Makefile.diff cc out4 cam1* cc.c-org out5 cam2* cc.h-org script/ cam2a* cc64 tmp1/ onlsun1[49]% rm FORCE-50T-sol7.tar.Z FORCE-50T-sol7.tar.gz onlsun1[50]% tar cvf FORCE-50T-sol7.tar FORCE-50T-sol7 a FORCE-50T-sol7/ 0K a FORCE-50T-sol7/Makefile 3K a FORCE-50T-sol7/README 4K a FORCE-50T-sol7/cam1.c 2K a FORCE-50T-sol7/cam2.f 3K a FORCE-50T-sol7/cam3.c 3K a FORCE-50T-sol7/camlib.c 10K a FORCE-50T-sol7/camlib.h 2K a FORCE-50T-sol7/cc.c 80K a FORCE-50T-sol7/cc64.c 82K a FORCE-50T-sol7/cc.conf 1K a FORCE-50T-sol7/cc.h 3K a FORCE-50T-sol7/cc_common.h 3K a FORCE-50T-sol7/cc_config.h 1K a FORCE-50T-sol7/forlib.c 4K a FORCE-50T-sol7/k2917.h 4K a FORCE-50T-sol7/script/ 0K a FORCE-50T-sol7/script/awk1.txt 1K a FORCE-50T-sol7/script/awk2.txt 1K a FORCE-50T-sol7/script/cc_build.gcc.sh 1K a FORCE-50T-sol7/script/cc_build.sh 1K a FORCE-50T-sol7/script/cc_link.sh 1K a FORCE-50T-sol7/script/cc_load.sh 1K a FORCE-50T-sol7/script/cc_unload.sh 1K onlsun1[51]% gzip FORCE-50T-sol7.tar onlsun1[52]% onlsun1[51]% tar cf FORCE-50T-sol7.tar FORCE-50T-sol7 onlsun1[53]% compress FORCE-50T-sol7.tar onlsun1[54]% ls Backup/ cam2a.f cc64.c-bak FORCE-50T-sol7/ cam2b* forlib.o FORCE-50T-sol7.tar.Z cam2b.c libcamac.a FORCE-50T-sol7.tar.gz cam3* out1 Makefile-Nov1-2000 camlib.c-org out2 Makefile-org camlib.o out3 Makefile.diff cc out4 cam1* cc.c-org out5 cam2* cc.h-org script/ cam2a* cc64 tmp1/ onlsun1[55]% ls -l FORCE-50T-sol7.tar* -rw-r--r-- 1 inoue kek 68445 2月 5日 10:08 FORCE-50T-sol7.tar.Z -rw-r--r-- 1 inoue kek 39620 2月 5日 10:06 FORCE-50T-sol7.tar.gz onlsun1[56]% このキットを online.kek.jp に置いておく。 : ftp> get FORCE-50T-sol7.tar.Z 200 PORT command successful. 150 Binary data connection for FORCE-50T-sol7.tar.Z (130.87.223.23,2782) (68445 bytes). 226 Binary Transfer complete. 68445 bytes received in 0.13 secs (0.13 secs, 507.00 Kbytes/s) ftp> get FORCE-50T-sol7.tar.gz 200 PORT command successful. 150 Binary data connection for FORCE-50T-sol7.tar.gz (130.87.223.23,2784) (39620 bytes). 226 Binary Transfer complete. 39620 bytes received in 0.03 secs (0.03 secs, 1467.42 Kbytes/s) ftp> quit : (3-4-4). 再度 online.kek.jp に置いてあるキットを入手してテストする (3-4-4a). CAMACドライバ・キット FORCE-50T-sol7 を online.kek.jp から入手 onl50t[66]% pwd /export/home/onl50t/inoue/CAMAC/Driver/kit-test-sol7#2 onl50t[67]% ls -l total 0 onl50t[68]% ftp online.kek.jp Connected to onlax2.kek.jp. 220 onlax2.kek.jp FTP server (Compaq Tru64 UNIX Version 5.60) ready. Name (online.kek.jp:inoue): anonymous 331 Guest login ok, send ident as password. Password: 230 Guest login ok, access restrictions apply. ftp> cd pub/kek/camac 250 CWD command successful. ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls (130.87.219.209,32915). total 3560 -rw-r--r-- 1 0 10 1173 Apr 19 1995 122d_to_e.tar.gz -rw-r--r-- 1 0 10 89611 Oct 20 16:14 FORCE-50T-sol2.6-list.tar. Z -rw-r--r-- 1 0 10 48627 Oct 20 16:14 FORCE-50T-sol2.6-list.tar. gz -rw-r--r-- 1 0 10 24125 Jul 26 1999 FORCE-50T-sol2.6.tar.gz -rw-r--r-- 1 0 10 68445 Feb 5 10:14 FORCE-50T-sol7.tar.Z -rw-r--r-- 1 0 10 39620 Feb 5 10:14 FORCE-50T-sol7.tar.gz -rw-r--r-- 1 0 10 22160 Nov 19 1997 FORCE-5V-sol2.5.tar.gz -rw-r--r-- 1 0 10 2494 Dec 2 1994 README -rw-r--r-- 1 0 10 37083 Oct 27 11:19 SPARC-status.html -rw-r--r-- 1 0 10 21435 Dec 13 1994 camac.sol2-1.30.tar.gz -rw-r--r-- 1 0 10 169539 Aug 18 1993 camac.sparc-1.22b.tar.Z -rw-r--r-- 1 0 10 91662 Aug 18 1993 camac.sparc-1.22b.tar.gz -rw-r--r-- 1 0 10 198417 Aug 19 1993 camac.sparc-1.22c.tar.Z -rw-r--r-- 1 0 10 110755 Aug 19 1993 camac.sparc-1.22c.tar.gz -rw-r--r-- 1 0 10 199103 Sep 4 1993 camac.sparc-1.22d.tar.Z -rw-r--r-- 1 0 10 110752 Sep 4 1993 camac.sparc-1.22d.tar.gz -rw-r--r-- 1 0 10 287493 Apr 20 1995 camacv1.01_decs.tar.Z -rw-r--r-- 1 0 10 231505 Dec 2 1994 camacv1.01_hprt.tar.Z -rw-r--r-- 1 0 10 132002 Dec 2 1994 camacv1.01_hprt.tar.gz -rw-r--r-- 1 0 10 283202 Dec 2 1994 camacv1.0_decs.tar.Z -rw-r--r-- 1 0 10 159495 Dec 2 1994 camacv1.0_decs.tar.gz -rw-r--r-- 1 0 10 216777 Sep 13 1994 camacv1.0_hprt.tar.Z -rw-r--r-- 1 0 10 122114 Sep 13 1994 camacv1.0_hprt.tar.gz -rw-r--r-- 1 0 10 87379 Nov 30 1994 camlib-docs-1.0.tar.Z -rw-r--r-- 1 0 10 51118 Nov 30 1994 camlib-docs-1.0.tar.gz drwxr-xr-x 2 0 10 512 Jul 24 2000 doc -rw-r--r-- 1 0 10 13589 Jan 17 1995 sparc-3ce.tar.gz -rw-r--r-- 1 0 10 233395 Aug 18 1993 tdaq-1.00.tar.Z -rw-r--r-- 1 0 10 121288 Apr 2 1992 tdaq-1.00.tar.gz -rw-r--r-- 1 0 10 277799 Jan 20 1995 vme-3CE.tar.gz 226 Transfer complete. 2288 bytes received in 0.31 seconds (7.10 Kbytes/s) ftp> binary 200 Type set to I. ftp> get FORCE-50T-sol7.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for FORCE-50T-sol7.tar.gz (130.87.219.20 9,32916) (39620 bytes). 226 Transfer complete. local: FORCE-50T-sol7.tar.gz remote: FORCE-50T-sol7.tar.gz 39620 bytes received in 0.028 seconds (1388.18 Kbytes/s) ftp> quit 221 Goodbye. onl50t[69]% onl50t[69]% ls -l total 78 -rw-r--r-- 1 inoue kek 39620 Feb 5 10:22 FORCE-50T-sol7.tar.gz onl50t[70]% gzip -d FORCE-50T-sol7.tar.gz onl50t[71]% ls -l total 464 -rw-r--r-- 1 inoue kek 223232 Feb 5 10:06 FORCE-50T-sol7.tar onl50t[72]% tar xvf FORCE-50T-sol7.tar x FORCE-50T-sol7, 0 bytes, 0 tape blocks x FORCE-50T-sol7/Makefile, 2102 bytes, 5 tape blocks x FORCE-50T-sol7/README, 4004 bytes, 8 tape blocks x FORCE-50T-sol7/cam1.c, 1170 bytes, 3 tape blocks x FORCE-50T-sol7/cam2.f, 2336 bytes, 5 tape blocks x FORCE-50T-sol7/cam3.c, 2055 bytes, 5 tape blocks x FORCE-50T-sol7/camlib.c, 9740 bytes, 20 tape blocks x FORCE-50T-sol7/camlib.h, 1415 bytes, 3 tape blocks x FORCE-50T-sol7/cc.c, 81531 bytes, 160 tape blocks x FORCE-50T-sol7/cc64.c, 82996 bytes, 163 tape blocks x FORCE-50T-sol7/cc.conf, 288 bytes, 1 tape blocks x FORCE-50T-sol7/cc.h, 2931 bytes, 6 tape blocks x FORCE-50T-sol7/cc_common.h, 2288 bytes, 5 tape blocks x FORCE-50T-sol7/cc_config.h, 876 bytes, 2 tape blocks x FORCE-50T-sol7/forlib.c, 3289 bytes, 7 tape blocks x FORCE-50T-sol7/k2917.h, 4058 bytes, 8 tape blocks x FORCE-50T-sol7/script, 0 bytes, 0 tape blocks x FORCE-50T-sol7/script/awk1.txt, 66 bytes, 1 tape blocks x FORCE-50T-sol7/script/awk2.txt, 37 bytes, 1 tape blocks x FORCE-50T-sol7/script/cc_build.gcc.sh, 233 bytes, 1 tape blocks x FORCE-50T-sol7/script/cc_build.sh, 470 bytes, 1 tape blocks x FORCE-50T-sol7/script/cc_link.sh, 833 bytes, 2 tape blocks x FORCE-50T-sol7/script/cc_load.sh, 949 bytes, 2 tape blocks x FORCE-50T-sol7/script/cc_unload.sh, 404 bytes, 1 tape blocks onl50t[73]% (3-4-4b). camac ドライバのキットをコンパイルし直す onl50t[75]% which cc /kek/compilers/ws5.0/SUNWspro/bin/cc onl50t[76]% cc -V cc: WorkShop Compilers 5.0 98/12/15 C 5.0 usage: cc [ options] files. Use 'cc -flags' for details onl50t[77]% which f77 /kek/compilers/ws5.0/SUNWspro/bin/f77 onl50t[78]% f77 -V f77: WorkShop Compilers 5.0 98/12/15 FORTRAN 77 5.0 Usage: f77 [ options ] files. Use 'f77 -flags' for details onl50t[79]% onl50t[88]% ls -l total 466 drwxr-xr-x 3 inoue kek 512 Jan 26 10:24 FORCE-50T-sol7/ -rw-r--r-- 1 inoue kek 223232 Feb 5 10:06 FORCE-50T-sol7.tar onl50t[89]% cd FORCE-50T-sol7 /export/home/onl50t/inoue/CAMAC/Driver/kit-test-sol7#2/FORCE-50T-sol7 onl50t[90]% ls -lR .: total 412 -rw-r--r-- 1 inoue kek 2102 Dec 18 10:12 Makefile -rw-r--r-- 1 inoue kek 4004 Jan 26 16:24 README -rw-r--r-- 1 inoue kek 1170 Nov 22 15:52 cam1.c -rw-r--r-- 1 inoue kek 2336 Nov 22 15:52 cam2.f -rw-r--r-- 1 inoue kek 2055 Nov 22 15:52 cam3.c -rw-r--r-- 1 inoue kek 9740 Dec 18 15:19 camlib.c -rw-r--r-- 1 inoue kek 1415 Nov 22 15:52 camlib.h -rw-r--r-- 1 inoue kek 81531 Dec 28 10:32 cc.c -rw-r--r-- 1 inoue kek 288 Nov 22 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 Nov 22 15:52 cc.h -rw-r--r-- 1 inoue kek 82996 Feb 5 10:04 cc64.c -rw-r--r-- 1 inoue kek 2288 Nov 22 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 Nov 22 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 Nov 22 15:52 forlib.c -rw-r--r-- 1 inoue kek 4058 Nov 22 15:52 k2917.h drwxr-xr-x 2 inoue kek 512 Dec 6 11:33 script/ ./script: total 14 -rw-r--r-- 1 inoue kek 66 Nov 22 15:52 awk1.txt -rw-r--r-- 1 inoue kek 37 Nov 22 15:52 awk2.txt -rwxr-xr-x 1 inoue kek 233 Nov 22 15:52 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 470 Jan 18 09:58 cc_build.sh* -rwxr-xr-x 1 inoue kek 833 Jan 19 10:20 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 Nov 22 15:52 cc_load.sh* -rwxr-xr-x 1 inoue kek 404 Nov 22 15:52 cc_unload.sh* onl50t[91]% nl50t[91]% pwd /export/home/onl50t/inoue/CAMAC/Driver/kit-test-sol7#2/FORCE-50T-sol7 onl50t[92]% ls -l total 412 -rw-r--r-- 1 inoue kek 2102 Dec 18 10:12 Makefile -rw-r--r-- 1 inoue kek 4004 Jan 26 16:24 README -rw-r--r-- 1 inoue kek 1170 Nov 22 15:52 cam1.c -rw-r--r-- 1 inoue kek 2336 Nov 22 15:52 cam2.f -rw-r--r-- 1 inoue kek 2055 Nov 22 15:52 cam3.c -rw-r--r-- 1 inoue kek 9740 Dec 18 15:19 camlib.c -rw-r--r-- 1 inoue kek 1415 Nov 22 15:52 camlib.h -rw-r--r-- 1 inoue kek 81531 Dec 28 10:32 cc.c -rw-r--r-- 1 inoue kek 288 Nov 22 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 Nov 22 15:52 cc.h -rw-r--r-- 1 inoue kek 82996 Feb 5 10:04 cc64.c -rw-r--r-- 1 inoue kek 2288 Nov 22 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 Nov 22 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 Nov 22 15:52 forlib.c -rw-r--r-- 1 inoue kek 4058 Nov 22 15:52 k2917.h drwxr-xr-x 2 inoue kek 512 Dec 6 11:33 script/ onl50t[93]% make clean \rm -f cc cc64 *.o libcamac.a cam1 cam2 cam2a cam3 *~ core onl50t[94]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o cc64.o cc -xarch=v9 -O -c camlib.c -o camlib.o -I. cc -xarch=v9 -O -c forlib.c -o forlib.o -I. rm -f libcamac.a ar rcv libcamac.a camlib.o forlib.o a - camlib.o a - forlib.o ar: writing libcamac.a cc -xarch=v9 -O cam1.c -o cam1 -I. -L. -lcamac f77 -xarch=v9 -fast -O3 -u cam2.f -o cam2 -I. -L. -lcamac cam2.f: MAIN: cc -xarch=v9 -O cam3.c -o cam3 -I. -L. -lcamac onl50t[95]% onl50t# pwd /export/home/onl50t/inoue/CAMAC/Driver/kit-test-sol7#2/FORCE-50T-sol7 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# (3-4-4c). ccドライバをロードし直す 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 Feb 5 10:37 /dev/cc -> /devices/pci@1f ,0/vme@5/cc@2d,ff00:cc onl50t# ドライバをロードした時のコンソール上のメッセージ。 Feb 5 14:24:17 onl50t unix: CAMAC device driver V3.0x, 1991-1993 by Y.TAKEUCHI (T.I.T.) ok. 正常にロードできた。 (4). 例題プログラムの実行 (4-1). cam1、シングル・アクション 24ビット camac read/write の実行 onl50t[92]% pwd /export/home/onl50t/inoue/CAMAC/Driver/kit-test-sol7#2/FORCE-50T-sol7 onl50t[93]% cam1 5 Input n a f (data)>3 0 0 N=3 A=0 F=0 Q=1 X=1 Data:000000(Hex) 00000000(Dec) Input n a f (data)>3 0 16 5555 N=3 A=0 F=16 Q=1 X=1 Data:0015B3(Hex) 00005555(Dec) Input n a f (data)>3 0 0 N=3 A=0 F=0 Q=1 X=1 Data:0015B3(Hex) 00005555(Dec) Input n a f (data)>3 0 16 777 N=3 A=0 F=16 Q=1 X=1 Data:000309(Hex) 00000777(Dec) Input n a f (data)>3 0 0 N=3 A=0 F=0 Q=1 X=1 Data:000309(Hex) 00000777(Dec) onl50t[94]% onl50t[94]% onl50t[94]% cam1 Input n a f (data)>3 0 16 123 N=3 A=0 F=16 Q=1 X=1 Data:00007B(Hex) 00000123(Dec) Input n a f (data)>3 0 0 N=3 A=0 F=0 Q=1 X=1 Data:00007B(Hex) 00000123(Dec) Input n a f (data)>3 0 16 8877 N=3 A=0 F=16 Q=1 X=1 Data:0022AD(Hex) 00008877(Dec) Input n a f (data)>3 0 0 N=3 A=0 F=0 Q=1 X=1 Data:0022AD(Hex) 00008877(Dec) Input n a f (data)>3 0 16 567 N=3 A=0 F=16 Q=1 X=1 Data:000237(Hex) 00000567(Dec) Input n a f (data)>3 0 0 N=3 A=0 F=0 Q=1 X=1 Data:000237(Hex) 00000567(Dec) Input n a f (data)>^Conl50t[95]% ok. cam1、シングル・アクション 24ビット camac read/write は正常に 実行できた。 (4-2). cam3、camac LAM割り込み処理の実行 onl50t[95]% cam3 *** Now waiting LAM ... N=3 Loop=10 Timeout=0 sec Interrupted !! count=1 Interrupted !! count=2 Interrupted !! count=3 Interrupted !! count=4 Interrupted !! count=5 Interrupted !! count=6 Interrupted !! count=7 Interrupted !! count=8 Interrupted !! count=9 Interrupted !! count=10 *** cam3 nomal end. onl50t[96]% onl50t[96]% onl50t[96]% cam3 *** Now waiting LAM ... N=3 Loop=10 Timeout=0 sec Interrupted !! count=1 Interrupted !! count=2 Interrupted !! count=3 Timeout !! count=4 <-- ここで、故意にタイムアウトを起こしてみた。 Timeout !! count=5 <-- ここで、故意にタイムアウトを起こしてみた。 Interrupted !! count=6 Interrupted !! count=7 Timeout !! count=8 <-- ここで、故意にタイムアウトを起こしてみた。 Interrupted !! count=9 Interrupted !! count=10 *** cam3 nomal end. onl50t[97]% onl50t[97]% onl50t[97]% cam3 *** Now waiting LAM ... N=3 Loop=10 Timeout=0 sec Timeout !! count=1 <-- ここで、故意にタイムアウトを起こしてみた。 Interrupted !! count=2 Timeout !! count=3 <-- ここで、故意にタイムアウトを起こしてみた。 Interrupted !! count=4 Timeout !! count=5 <-- ここで、故意にタイムアウトを起こしてみた。 Interrupted !! count=6 Interrupted !! count=7 Timeout !! count=8 <-- ここで、故意にタイムアウトを起こしてみた。 Interrupted !! count=9 Timeout !! count=10 <-- ここで、故意にタイムアウトを起こしてみた。 *** cam3 nomal end. onl50t[98]% ok. cam3、camac LAM割り込み処理は timeout処理も含めて正常に実行できた。 (4-3). cam2プログラムの実行 (4-3-1). cam2、ブロック転送 16ビット read/write の実行 onl50t[98]% cam2 Input transfer mode (1:word 2:long word) >1 Input loop >5 Input mode (0:QSTOP 1:QIGNORE 2:QREPEAT 3:QSCAN) >1 Input data counts >5 Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 0 0x 0(Hex) Data( 2)= 0 0x 0(Hex) Data( 3)= 0 0x 0(Hex) Data( 4)= 0 0x 0(Hex) Data( 5)= 0 0x 0(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 16 Input data >1234 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 1234 0x 4D2(Hex) Data( 2)= 1234 0x 4D2(Hex) Data( 3)= 1234 0x 4D2(Hex) Data( 4)= 1234 0x 4D2(Hex) Data( 5)= 1234 0x 4D2(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 1234 0x 4D2(Hex) Data( 2)= 1234 0x 4D2(Hex) Data( 3)= 1234 0x 4D2(Hex) Data( 4)= 1234 0x 4D2(Hex) Data( 5)= 1234 0x 4D2(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 16 Input data >9876 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 9876 0x 2694(Hex) Data( 2)= 9876 0x 2694(Hex) Data( 3)= 9876 0x 2694(Hex) Data( 4)= 9876 0x 2694(Hex) Data( 5)= 9876 0x 2694(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 9876 0x 2694(Hex) Data( 2)= 9876 0x 2694(Hex) Data( 3)= 9876 0x 2694(Hex) Data( 4)= 9876 0x 2694(Hex) Data( 5)= 9876 0x 2694(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Note: Nonstandard floating-point mode enabled See the Numerical Computation Guide, ieee_sun(3M) onl50t[99]% onl50t[99]% cam2 Input transfer mode (1:word 2:long word) >1 Input loop >5 Input mode (0:QSTOP 1:QIGNORE 2:QREPEAT 3:QSCAN) >1 Input data counts >5 Input n a f >3 0 16 Input data >6578 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 6578 0x 19B2(Hex) Data( 2)= 6578 0x 19B2(Hex) Data( 3)= 6578 0x 19B2(Hex) Data( 4)= 6578 0x 19B2(Hex) Data( 5)= 6578 0x 19B2(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 6578 0x 19B2(Hex) Data( 2)= 6578 0x 19B2(Hex) Data( 3)= 6578 0x 19B2(Hex) Data( 4)= 6578 0x 19B2(Hex) Data( 5)= 6578 0x 19B2(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 16 Input data >777 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 777 0x 309(Hex) Data( 2)= 777 0x 309(Hex) Data( 3)= 777 0x 309(Hex) Data( 4)= 777 0x 309(Hex) Data( 5)= 777 0x 309(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 16 Input data >8888 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 8888 0x 22B8(Hex) Data( 2)= 8888 0x 22B8(Hex) Data( 3)= 8888 0x 22B8(Hex) Data( 4)= 8888 0x 22B8(Hex) Data( 5)= 8888 0x 22B8(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 8888 0x 22B8(Hex) Data( 2)= 8888 0x 22B8(Hex) Data( 3)= 8888 0x 22B8(Hex) Data( 4)= 8888 0x 22B8(Hex) Data( 5)= 8888 0x 22B8(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Note: Nonstandard floating-point mode enabled See the Numerical Computation Guide, ieee_sun(3M) onl50t[100]% ok. cam2、ブロック転送 16ビット read/write は正常に実行できた。 (4-3-2). cam2、ブロック転送 24ビット read/write の実行 onl50t[100]% cam2 Input transfer mode (1:word 2:long word) >2 Input loop >5 Input mode (0:QSTOP 1:QIGNORE 2:QREPEAT 3:QSCAN) >1 Input data counts >5 Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= -16777216 0x FF000000(Hex) Data( 2)= -16777216 0x FF000000(Hex) Data( 3)= -16777216 0x FF000000(Hex) Data( 4)= -16777216 0x FF000000(Hex) Data( 5)= -16777216 0x FF000000(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 16 Input data >6636321 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 6636321 0x 654321(Hex) Data( 2)= 6636321 0x 654321(Hex) Data( 3)= 6636321 0x 654321(Hex) Data( 4)= 6636321 0x 654321(Hex) Data( 5)= 6636321 0x 654321(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= -10140895 0x FF654321(Hex) Data( 2)= -10140895 0x FF654321(Hex) Data( 3)= -10140895 0x FF654321(Hex) Data( 4)= -10140895 0x FF654321(Hex) Data( 5)= -10140895 0x FF654321(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 16 Input data >66666 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 66666 0x 1046A(Hex) Data( 2)= 66666 0x 1046A(Hex) Data( 3)= 66666 0x 1046A(Hex) Data( 4)= 66666 0x 1046A(Hex) Data( 5)= 66666 0x 1046A(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= -16710550 0x FF01046A(Hex) Data( 2)= -16710550 0x FF01046A(Hex) Data( 3)= -16710550 0x FF01046A(Hex) Data( 4)= -16710550 0x FF01046A(Hex) Data( 5)= -16710550 0x FF01046A(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Note: Nonstandard floating-point mode enabled See the Numerical Computation Guide, ieee_sun(3M) onl50t[101]% onl50t[101]% onl50t[101]% cam2 Input transfer mode (1:word 2:long word) >2 Input loop >5 Input mode (0:QSTOP 1:QIGNORE 2:QREPEAT 3:QSCAN) >1 Input data counts >5 Input n a f >3 0 16 Input data >77777 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 77777 0x 12FD1(Hex) Data( 2)= 77777 0x 12FD1(Hex) Data( 3)= 77777 0x 12FD1(Hex) Data( 4)= 77777 0x 12FD1(Hex) Data( 5)= 77777 0x 12FD1(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= -16699439 0x FF012FD1(Hex) Data( 2)= -16699439 0x FF012FD1(Hex) Data( 3)= -16699439 0x FF012FD1(Hex) Data( 4)= -16699439 0x FF012FD1(Hex) Data( 5)= -16699439 0x FF012FD1(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= -16699439 0x FF012FD1(Hex) Data( 2)= -16699439 0x FF012FD1(Hex) Data( 3)= -16699439 0x FF012FD1(Hex) Data( 4)= -16699439 0x FF012FD1(Hex) Data( 5)= -16699439 0x FF012FD1(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 16 Input data >777 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 777 0x 309(Hex) Data( 2)= 777 0x 309(Hex) Data( 3)= 777 0x 309(Hex) Data( 4)= 777 0x 309(Hex) Data( 5)= 777 0x 309(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= -16776439 0x FF000309(Hex) Data( 2)= -16776439 0x FF000309(Hex) Data( 3)= -16776439 0x FF000309(Hex) Data( 4)= -16776439 0x FF000309(Hex) Data( 5)= -16776439 0x FF000309(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Note: Nonstandard floating-point mode enabled See the Numerical Computation Guide, ieee_sun(3M) onl50t[102]% ok. cam2、ブロック転送 24ビット read/write は正常に実行できた。 配布キット "FORCE-50T-sol7"を使ってonl50t 上で camacのサンプル プログラムのテストを行った。 o cam1、シングル・アクション 24ビット camac read/write の実行 o cam3、camac LAM割り込み処理の実行 o cam2、ブロック転送 16ビット read/write の実行 o cam2、ブロック転送 24ビット read/write の実行 は、すべて正常に実行できた。 注. このバージョンのcamacドライバでは、1データのみのwriteブロック転送は 実行できないので注意。 1データのみのReadブロック転送は問題なく実行 できる。 ---xxxx ここまでやった(継続中) --- (6). セクション (6-1). サブセクション (6-1-1). サブサブセクション