Feb 5, 2002 onl50t: Solaris 8 cc ドライバのデバッグ. cc ドライバの実行(リスト処理)#2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/ onl50t-sol8/Desktop/debug-list-step01.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). 現状確認 (A). Solaris8 6/00 が届いた。 (B). "SOLARIS 8 INSTALLATION 6/00" でインストール時にエラー。 (C). "SOLARIS 8 SOFTWARE 1,2" のメディアを使ってインストールした。 インストール時の指定ミスにより、"couldn't set locale correctly"の メッセージがブート時等にコンソールに表示されてしまう。 (D). "SOLARIS 8 SOFTWARE 1,2" のメディアを使って再インストールした。 (E). /etc の下の各設定、および /export/home の作成をやった。 (F). CPU-50TにSolaris8用の VMEドライバ、FRCvme-2.5 をインストールした、 直後にシステムが起動できなくなった。 (G). "SOLARIS 8 SOFTWARE 1,2" のメディアを使って再インストールした (その2)。 (H). /etc の下の各設定、および /export/home の作成をやった(その2)。 (I). CPU-50TにSolaris8用の VMEドライバ、FRCvme-2.5 をインストールした。 (J). onl50t に ccドライバをインストールした(その2)。 (K). 基本処理の動作は正常にできることを確認した。 -------------------- リスト処理 (A). 公開版のcamacドライバ、"FORCE-50T-sol7-list" を使ってリスト処理の テストを始める。 (2). ここでやるべきこと KEKリスト処理で camacシングルアクション read/write、LAM割り込み処理、 DMA camacブロック転送の動作確認をする。 Kineticリスト処理で camacシングルアクション read/write、DMA camac ブロック転送の動作確認をする。 (3). テスト環境整備 camac ドライバは FORCE-50T-sol7-list をベースにした。 テストのための 場所はホスト onl50t の以下のディレクトリとする。 /export/home/onl50t/inoue/CAMAC-list (3-1). 上記ディレクトリに FORCE-50T-sol7-list キットを展開する onl50t[40]% pwd /export/home/onl50t/inoue/CAMAC-list onl50t[41]% ls -l total 0 onl50t[42]% 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,32804). total 3850 -rw-r--r-- 1 0 10 1173 Apr 19 1995 122d_to_e.tar.gz -rw-r--r-- 1 0 10 1153 Mar 16 2001 8vt-sol2.6-driver.html -rw-r--r-- 1 0 10 89611 Oct 20 2000 FORCE-50T-sol2.6-list.tar. Z -rw-r--r-- 1 0 10 48627 Oct 20 2000 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 98477 Jan 17 15:57 FORCE-50T-sol7-list.tar.Z -rw-r--r-- 1 0 10 53177 Jan 17 15:57 FORCE-50T-sol7-list.tar.gz -rw-r--r-- 1 0 10 68469 Feb 7 2001 FORCE-50T-sol7.tar.Z -rw-r--r-- 1 0 10 39636 Feb 7 2001 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 76149 Mar 22 2001 FORCE-5V-sol7-list.tar.Z -rw-r--r-- 1 0 10 39333 Mar 22 2001 FORCE-5V-sol7-list.tar.gz -rw-r--r-- 1 0 10 2494 Dec 2 1994 README -rw-r--r-- 1 0 10 48076 Jan 21 11:18 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. 2690 bytes received in 0.35 seconds (7.52 Kbytes/s) ftp> binary 200 Type set to I. ftp> get FORCE-50T-sol7-list.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for FORCE-50T-sol7-list.tar.gz (130.87.2 19.209,32805) (53177 bytes). 226 Transfer complete. local: FORCE-50T-sol7-list.tar.gz remote: FORCE-50T-sol7-list.tar.gz 53177 bytes received in 0.042 seconds (1251.13 Kbytes/s) ftp> quit 221 Goodbye. onl50t[43]% ls -l total 104 -rw-r--r-- 1 inoue kek 53177 Jan 31 10:12 FORCE-50T-sol7-list.tar.gz onl50t[44]% gzip -d FORCE-50T-sol7-list.tar.gz onl50t[45]% ls -l total 656 -rw-r--r-- 1 inoue kek 322560 Jan 17 15:52 FORCE-50T-sol7-list.tar onl50t[46]% tar xvf FORCE-50T-sol7-list.tar x FORCE-50T-sol7-list, 0 bytes, 0 tape blocks x FORCE-50T-sol7-list/Makefile, 2102 bytes, 5 tape blocks x FORCE-50T-sol7-list/README, 4692 bytes, 10 tape blocks x FORCE-50T-sol7-list/cam1.c, 1170 bytes, 3 tape blocks x FORCE-50T-sol7-list/cam2.f, 2336 bytes, 5 tape blocks x FORCE-50T-sol7-list/cam3.c, 2055 bytes, 5 tape blocks x FORCE-50T-sol7-list/camlib.c, 9740 bytes, 20 tape blocks x FORCE-50T-sol7-list/camlib.h, 1415 bytes, 3 tape blocks x FORCE-50T-sol7-list/cc.c, 81531 bytes, 160 tape blocks x FORCE-50T-sol7-list/cc64.c, 93881 bytes, 184 tape blocks x FORCE-50T-sol7-list/cc.conf, 288 bytes, 1 tape blocks x FORCE-50T-sol7-list/cc.h, 2931 bytes, 6 tape blocks x FORCE-50T-sol7-list/cc_common.h, 2288 bytes, 5 tape blocks x FORCE-50T-sol7-list/cc_config.h, 876 bytes, 2 tape blocks x FORCE-50T-sol7-list/forlib.c, 3289 bytes, 7 tape blocks x FORCE-50T-sol7-list/k2917.h, 4058 bytes, 8 tape blocks x FORCE-50T-sol7-list/script, 0 bytes, 0 tape blocks x FORCE-50T-sol7-list/script/awk1.txt, 66 bytes, 1 tape blocks x FORCE-50T-sol7-list/script/awk2.txt, 37 bytes, 1 tape blocks x FORCE-50T-sol7-list/script/cc_build.gcc.sh, 233 bytes, 1 tape blocks x FORCE-50T-sol7-list/script/cc_build.sh, 470 bytes, 1 tape blocks x FORCE-50T-sol7-list/script/cc_link.sh, 833 bytes, 2 tape blocks x FORCE-50T-sol7-list/script/cc_load.sh, 949 bytes, 2 tape blocks x FORCE-50T-sol7-list/script/cc_unload.sh, 404 bytes, 1 tape blocks x FORCE-50T-sol7-list/camasm, 0 bytes, 0 tape blocks x FORCE-50T-sol7-list/camasm/Makefile, 643 bytes, 2 tape blocks x FORCE-50T-sol7-list/camasm/asm_code.h, 11250 bytes, 22 tape blocks x FORCE-50T-sol7-list/camasm/err_code.h, 1646 bytes, 4 tape blocks x FORCE-50T-sol7-list/camasm/camasm.c, 24762 bytes, 49 tape blocks x FORCE-50T-sol7-list/camlist, 0 bytes, 0 tape blocks x FORCE-50T-sol7-list/camlist/Makefile, 1527 bytes, 3 tape blocks x FORCE-50T-sol7-list/camlist/camtest4c.c, 2151 bytes, 5 tape blocks x FORCE-50T-sol7-list/camlist/camtest4dma.asm, 812 bytes, 2 tape blocks x FORCE-50T-sol7-list/camlist/camtest4int.asm, 903 bytes, 2 tape blocks x FORCE-50T-sol7-list/camlist/camtest4single.asm, 603 bytes, 2 tape blocks x FORCE-50T-sol7-list/camlist/camtest5c.c, 2040 bytes, 4 tape blocks x FORCE-50T-sol7-list/camlist/camtest5c1.c, 2027 bytes, 4 tape blocks x FORCE-50T-sol7-list/camlist/camtest5c2.c, 1994 bytes, 4 tape blocks x FORCE-50T-sol7-list/camlist-kine, 0 bytes, 0 tape blocks x FORCE-50T-sol7-list/camlist-kine/Makefile, 1356 bytes, 3 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam6.asm, 708 bytes, 2 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam6.c, 1880 bytes, 4 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam6a.c, 1541 bytes, 4 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam6b.c, 2983 bytes, 6 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam7.c, 2021 bytes, 4 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam7A.c, 2582 bytes, 6 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam7B.c, 1753 bytes, 4 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam7a.asm, 322 bytes, 1 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam7aA.asm, 322 bytes, 1 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam7b.asm, 679 bytes, 2 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam7bA.asm, 812 bytes, 2 tape blocks x FORCE-50T-sol7-list/camlist-kine/cam7cA.asm, 353 bytes, 1 tape blocks onl50t[47]% (3-2). camac ドライバのキットをコンパイルし直す onl50t[51]% which cc /kek/compilers/ws5.0/SUNWspro/bin/cc onl50t[52]% cc -V cc: WorkShop Compilers 5.0 98/12/15 C 5.0 usage: cc [ options] files. Use 'cc -flags' for details onl50t[53]% which f77 /kek/compilers/ws5.0/SUNWspro/bin/f77 onl50t[54]% f77 -V f77: WorkShop Compilers 5.0 98/12/15 FORTRAN 77 5.0 Usage: f77 [ options ] files. Use 'f77 -flags' for details onl50t[55]% onl50t[55]% pwd /export/home/onl50t/inoue/CAMAC-list onl50t[56]% ls -lR .: total 658 drwxr-xr-x 6 inoue kek 512 Jan 15 16:40 FORCE-50T-sol7-list/ -rw-r--r-- 1 inoue kek 322560 Jan 17 15:52 FORCE-50T-sol7-list.tar ./FORCE-50T-sol7-list: total 440 -rw-r--r-- 1 inoue kek 2102 Dec 18 2000 Makefile -rw-r--r-- 1 inoue kek 4692 Jan 15 16:37 README -rw-r--r-- 1 inoue kek 1170 Nov 22 2000 cam1.c -rw-r--r-- 1 inoue kek 2336 Nov 22 2000 cam2.f -rw-r--r-- 1 inoue kek 2055 Nov 22 2000 cam3.c drwxr-xr-x 2 inoue kek 512 Dec 19 14:59 camasm/ -rw-r--r-- 1 inoue kek 9740 Dec 18 2000 camlib.c -rw-r--r-- 1 inoue kek 1415 Nov 22 2000 camlib.h drwxr-xr-x 2 inoue kek 512 Dec 26 16:48 camlist/ drwxr-xr-x 2 inoue kek 512 Dec 19 15:31 camlist-kine/ -rw-r--r-- 1 inoue kek 81531 Feb 5 2001 cc.c -rw-r--r-- 1 inoue kek 288 Nov 22 2000 cc.conf -rw-r--r-- 1 inoue kek 2931 Dec 19 16:56 cc.h -rw-r--r-- 1 inoue kek 93881 Jan 17 15:46 cc64.c -rw-r--r-- 1 inoue kek 2288 Nov 22 2000 cc_common.h -rw-r--r-- 1 inoue kek 876 Nov 22 2000 cc_config.h -rw-r--r-- 1 inoue kek 3289 Nov 22 2000 forlib.c -rw-r--r-- 1 inoue kek 4058 Nov 22 2000 k2917.h drwxr-xr-x 2 inoue kek 512 Dec 19 11:17 script/ ./FORCE-50T-sol7-list/camasm: total 78 -rw-r--r-- 1 inoue kek 643 Jul 23 2001 Makefile -rw-r--r-- 1 inoue kek 11250 Feb 21 2001 asm_code.h -rw-r--r-- 1 inoue kek 24762 Feb 21 2001 camasm.c -rw-r--r-- 1 inoue kek 1646 Feb 21 2001 err_code.h ./FORCE-50T-sol7-list/camlist: total 28 -rw-r--r-- 1 inoue kek 1527 Jul 23 2001 Makefile -rw-r--r-- 1 inoue kek 2151 Feb 21 2001 camtest4c.c -rw-r--r-- 1 inoue kek 812 Dec 26 15:42 camtest4dma.asm -rw-r--r-- 1 inoue kek 903 Feb 21 2001 camtest4int.asm -rw-r--r-- 1 inoue kek 603 Jul 26 2001 camtest4single.asm -rw-r--r-- 1 inoue kek 2040 Feb 21 2001 camtest5c.c -rw-r--r-- 1 inoue kek 2027 Feb 21 2001 camtest5c1.c -rw-r--r-- 1 inoue kek 1994 Feb 21 2001 camtest5c2.c ./FORCE-50T-sol7-list/camlist-kine: total 44 -rw-r--r-- 1 inoue kek 1356 Oct 26 14:29 Makefile -rw-r--r-- 1 inoue kek 708 Nov 20 16:07 cam6.asm -rw-r--r-- 1 inoue kek 1880 Oct 29 10:03 cam6.c -rw-r--r-- 1 inoue kek 1541 Nov 28 11:02 cam6a.c -rw-r--r-- 1 inoue kek 2983 Nov 28 16:19 cam6b.c -rw-r--r-- 1 inoue kek 2021 Dec 3 11:04 cam7.c -rw-r--r-- 1 inoue kek 2582 Dec 10 14:41 cam7A.c -rw-r--r-- 1 inoue kek 1753 Dec 10 15:06 cam7B.c -rw-r--r-- 1 inoue kek 322 Dec 3 11:03 cam7a.asm -rw-r--r-- 1 inoue kek 322 Dec 10 14:41 cam7aA.asm -rw-r--r-- 1 inoue kek 679 Dec 3 11:04 cam7b.asm -rw-r--r-- 1 inoue kek 812 Dec 10 15:06 cam7bA.asm -rw-r--r-- 1 inoue kek 353 Dec 10 14:41 cam7cA.asm ./FORCE-50T-sol7-list/script: total 14 -rw-r--r-- 1 inoue kek 66 Nov 22 2000 awk1.txt -rw-r--r-- 1 inoue kek 37 Nov 22 2000 awk2.txt -rwxr-xr-x 1 inoue kek 233 Nov 22 2000 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 470 Jan 18 2001 cc_build.sh* -rwxr-xr-x 1 inoue kek 833 Jan 19 2001 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 Nov 22 2000 cc_load.sh* -rwxr-xr-x 1 inoue kek 404 Nov 22 2000 cc_unload.sh* onl50t[57]% onl50t[57]% ls -l total 658 drwxr-xr-x 6 inoue kek 512 Jan 15 16:40 FORCE-50T-sol7-list/ -rw-r--r-- 1 inoue kek 322560 Jan 17 15:52 FORCE-50T-sol7-list.tar onl50t[58]% cd FORCE-50T-sol7-list /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list onl50t[59]% ls -l total 440 -rw-r--r-- 1 inoue kek 2102 Dec 18 2000 Makefile -rw-r--r-- 1 inoue kek 4692 Jan 15 16:37 README -rw-r--r-- 1 inoue kek 1170 Nov 22 2000 cam1.c -rw-r--r-- 1 inoue kek 2336 Nov 22 2000 cam2.f -rw-r--r-- 1 inoue kek 2055 Nov 22 2000 cam3.c drwxr-xr-x 2 inoue kek 512 Dec 19 14:59 camasm/ -rw-r--r-- 1 inoue kek 9740 Dec 18 2000 camlib.c -rw-r--r-- 1 inoue kek 1415 Nov 22 2000 camlib.h drwxr-xr-x 2 inoue kek 512 Dec 26 16:48 camlist/ drwxr-xr-x 2 inoue kek 512 Dec 19 15:31 camlist-kine/ -rw-r--r-- 1 inoue kek 81531 Feb 5 2001 cc.c -rw-r--r-- 1 inoue kek 288 Nov 22 2000 cc.conf -rw-r--r-- 1 inoue kek 2931 Dec 19 16:56 cc.h -rw-r--r-- 1 inoue kek 93881 Jan 17 15:46 cc64.c -rw-r--r-- 1 inoue kek 2288 Nov 22 2000 cc_common.h -rw-r--r-- 1 inoue kek 876 Nov 22 2000 cc_config.h -rw-r--r-- 1 inoue kek 3289 Nov 22 2000 forlib.c -rw-r--r-- 1 inoue kek 4058 Nov 22 2000 k2917.h drwxr-xr-x 2 inoue kek 512 Dec 19 11:17 script/ onl50t[60]% onl50t[60]% make clean \rm -f cc cc64 *.o libcamac.a cam1 cam2 cam2a cam3 *~ core onl50t[61]% 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[62]% onl50t[62]% cd camasm /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list/camasm onl50t[63]% make clean rm -f camasm camasm.o *.obj *.lis *~ *.o core onl50t[64]% make cc -xarch=v9 -O camasm.c -o camasm "./asm_code.h", line 192: warning: initializer does not fit or is out of range: -1 onl50t[65]% onl50t[65]% cd ../camlist /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list/camlist onl50t[66]% make clean rm -f camtest4c camtest5c camtest5c1 camtest5c2 \ camtest4single.obj camtest4dma.obj camtest4int.obj \ core onl50t[67]% make cc -xarch=v9 -o camtest4c camtest4c.c -I.. -L.. -lcamac cc -xarch=v9 -o camtest5c camtest5c.c -I.. -L.. -lcamac cc -xarch=v9 -o camtest5c1 camtest5c1.c -I.. -L.. -lcamac cc -xarch=v9 -o camtest5c2 camtest5c2.c -I.. -L.. -lcamac ../camasm/camasm camtest4single.asm CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm camtest4dma.asm CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm camtest4int.asm CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[68]% onl50t[68]% cd ../camlist-kine /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list/camlist-kine onl50t[69]% make clean rm -f cam6 cam6a cam7 cam6b cam7A cam7B *.lis *.obj *~ *.o core *.klist onl50t[70]% make cc -xarch=v9 cam6.c -o cam6 -I.. -L.. -lcamac ../camasm/camasm cam6 a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 cc -xarch=v9 cam6a.c -o cam6a -I.. -L.. -lcamac cc -xarch=v9 cam7.c -o cam7 -I.. -L.. -lcamac ../camasm/camasm cam7a a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7b a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 cc -xarch=v9 cam6b.c -o cam6b -I.. -L.. -lcamac cc -xarch=v9 cam7A.c -o cam7A -I.. -L.. -lcamac ../camasm/camasm cam7aA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7bA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7cA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 cc -xarch=v9 cam7B.c -o cam7B -I.. -L.. -lcamac onl50t[71]% onl50t[71]% cd .. /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list onl50t[72]% ls -lR .: total 1028 -rw-r--r-- 1 inoue kek 2102 Dec 18 2000 Makefile -rw-r--r-- 1 inoue kek 4692 Jan 15 16:37 README -rwxr-xr-x 1 inoue kek 20288 Jan 31 10:23 cam1* -rw-r--r-- 1 inoue kek 1170 Nov 22 2000 cam1.c -rwxr-xr-x 1 inoue kek 92888 Jan 31 10:23 cam2* -rw-r--r-- 1 inoue kek 2336 Nov 22 2000 cam2.f -rwxr-xr-x 1 inoue kek 20512 Jan 31 10:23 cam3* -rw-r--r-- 1 inoue kek 2055 Nov 22 2000 cam3.c drwxr-xr-x 2 inoue kek 512 Jan 31 10:24 camasm/ -rw-r--r-- 1 inoue kek 9740 Dec 18 2000 camlib.c -rw-r--r-- 1 inoue kek 1415 Nov 22 2000 camlib.h -rw-r--r-- 1 inoue kek 23216 Jan 31 10:23 camlib.o drwxr-xr-x 2 inoue kek 512 Jan 31 10:25 camlist/ drwxr-xr-x 2 inoue kek 1024 Jan 31 10:27 camlist-kine/ -rw-r--r-- 1 inoue kek 44856 Jan 31 10:23 cc -rw-r--r-- 1 inoue kek 81531 Feb 5 2001 cc.c -rw-r--r-- 1 inoue kek 288 Nov 22 2000 cc.conf -rw-r--r-- 1 inoue kek 2931 Dec 19 16:56 cc.h -rw-r--r-- 1 inoue kek 61112 Jan 31 10:23 cc64 -rw-r--r-- 1 inoue kek 93881 Jan 17 15:46 cc64.c -rw-r--r-- 1 inoue kek 2288 Nov 22 2000 cc_common.h -rw-r--r-- 1 inoue kek 876 Nov 22 2000 cc_config.h -rw-r--r-- 1 inoue kek 3289 Nov 22 2000 forlib.c -rw-r--r-- 1 inoue kek 5144 Jan 31 10:23 forlib.o -rw-r--r-- 1 inoue kek 4058 Nov 22 2000 k2917.h -rw-r--r-- 1 inoue kek 29220 Jan 31 10:23 libcamac.a drwxr-xr-x 2 inoue kek 512 Dec 19 11:17 script/ ./camasm: total 154 -rw-r--r-- 1 inoue kek 643 Jul 23 2001 Makefile -rw-r--r-- 1 inoue kek 11250 Feb 21 2001 asm_code.h -rwxr-xr-x 1 inoue kek 38000 Jan 31 10:24 camasm* -rw-r--r-- 1 inoue kek 24762 Feb 21 2001 camasm.c -rw-r--r-- 1 inoue kek 1646 Feb 21 2001 err_code.h ./camlist: total 204 -rw-r--r-- 1 inoue kek 1527 Jul 23 2001 Makefile -rwxr-xr-x 1 inoue kek 21704 Jan 31 10:25 camtest4c* -rw-r--r-- 1 inoue kek 2151 Feb 21 2001 camtest4c.c -rw-r--r-- 1 inoue kek 812 Dec 26 15:42 camtest4dma.asm -rw-r--r-- 1 inoue kek 427 Jan 31 10:25 camtest4dma.obj -rw-r--r-- 1 inoue kek 903 Feb 21 2001 camtest4int.asm -rw-r--r-- 1 inoue kek 322 Jan 31 10:25 camtest4int.obj -rw-r--r-- 1 inoue kek 603 Jul 26 2001 camtest4single.asm -rw-r--r-- 1 inoue kek 195 Jan 31 10:25 camtest4single.obj -rwxr-xr-x 1 inoue kek 21296 Jan 31 10:25 camtest5c* -rw-r--r-- 1 inoue kek 2040 Feb 21 2001 camtest5c.c -rwxr-xr-x 1 inoue kek 21288 Jan 31 10:25 camtest5c1* -rw-r--r-- 1 inoue kek 2027 Feb 21 2001 camtest5c1.c -rwxr-xr-x 1 inoue kek 21288 Jan 31 10:25 camtest5c2* -rw-r--r-- 1 inoue kek 1994 Feb 21 2001 camtest5c2.c ./camlist-kine: total 328 -rw-r--r-- 1 inoue kek 1356 Oct 26 14:29 Makefile -rwxr-xr-x 1 inoue kek 20760 Jan 31 10:27 cam6* -rw-r--r-- 1 inoue kek 708 Nov 20 16:07 cam6.asm -rw-r--r-- 1 inoue kek 1880 Oct 29 10:03 cam6.c -rw-r--r-- 1 inoue kek 1518 Jan 31 10:27 cam6.lis -rw-r--r-- 1 inoue kek 258 Jan 31 10:27 cam6.obj -rwxr-xr-x 1 inoue kek 20360 Jan 31 10:27 cam6a* -rw-r--r-- 1 inoue kek 1541 Nov 28 11:02 cam6a.c -rwxr-xr-x 1 inoue kek 22912 Jan 31 10:27 cam6b* -rw-r--r-- 1 inoue kek 2983 Nov 28 16:19 cam6b.c -rwxr-xr-x 1 inoue kek 20960 Jan 31 10:27 cam7* -rw-r--r-- 1 inoue kek 2021 Dec 3 11:04 cam7.c -rwxr-xr-x 1 inoue kek 21440 Jan 31 10:27 cam7A* -rw-r--r-- 1 inoue kek 2582 Dec 10 14:41 cam7A.c -rwxr-xr-x 1 inoue kek 20608 Jan 31 10:27 cam7B* -rw-r--r-- 1 inoue kek 1753 Dec 10 15:06 cam7B.c -rw-r--r-- 1 inoue kek 322 Dec 3 11:03 cam7a.asm -rw-r--r-- 1 inoue kek 697 Jan 31 10:27 cam7a.lis -rw-r--r-- 1 inoue kek 27 Jan 31 10:27 cam7a.obj -rw-r--r-- 1 inoue kek 322 Dec 10 14:41 cam7aA.asm -rw-r--r-- 1 inoue kek 697 Jan 31 10:27 cam7aA.lis -rw-r--r-- 1 inoue kek 27 Jan 31 10:27 cam7aA.obj -rw-r--r-- 1 inoue kek 679 Dec 3 11:04 cam7b.asm -rw-r--r-- 1 inoue kek 1228 Jan 31 10:27 cam7b.lis -rw-r--r-- 1 inoue kek 90 Jan 31 10:27 cam7b.obj -rw-r--r-- 1 inoue kek 812 Dec 10 15:06 cam7bA.asm -rw-r--r-- 1 inoue kek 1419 Jan 31 10:27 cam7bA.lis -rw-r--r-- 1 inoue kek 111 Jan 31 10:27 cam7bA.obj -rw-r--r-- 1 inoue kek 353 Dec 10 14:41 cam7cA.asm -rw-r--r-- 1 inoue kek 757 Jan 31 10:27 cam7cA.lis -rw-r--r-- 1 inoue kek 48 Jan 31 10:27 cam7cA.obj ./script: total 14 -rw-r--r-- 1 inoue kek 66 Nov 22 2000 awk1.txt -rw-r--r-- 1 inoue kek 37 Nov 22 2000 awk2.txt -rwxr-xr-x 1 inoue kek 233 Nov 22 2000 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 470 Jan 18 2001 cc_build.sh* -rwxr-xr-x 1 inoue kek 833 Jan 19 2001 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 Nov 22 2000 cc_load.sh* -rwxr-xr-x 1 inoue kek 404 Nov 22 2000 cc_unload.sh* onl50t[73]% onl50t# pwd /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list 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). camacドライバをロードし直す 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# Jan 31 10:35:46 onl50t cc: CAMAC device driver V4.0x, 1991-1993 by Y.TAKEUCHI (T .I.T.) onl50t# ls -l /dev/cc lrwxrwxrwx 1 root other 22 Jan 31 10:36 /dev/cc -> /devices10:35:4 6///:cc onl50t# NG. /dev/ccファイルを正しく作ることができなかった。 この症状は、 onl50t、Soalris8のシステムに FORCE-50T-sol7 のキットをインストールした時 に経験した。 以下のURLを http://onlax2.kek.jp/~inoue/CAMAC/onl50t-sol8/Desktop/camac-step01.txt 参照。 cc_link.shファイルを Solaris8用に修正する。 onl50t[52]% pwd /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list/script onl50t[53]% mv cc_link.sh cc_link.sh-org onl50t[54]% cp cc_link.sh-org cc_link.sh onl50t[55]% ls -l total 16 -rw-r--r-- 1 inoue kek 66 Nov 22 2000 awk1.txt -rw-r--r-- 1 inoue kek 37 Nov 22 2000 awk2.txt -rwxr-xr-x 1 inoue kek 233 Nov 22 2000 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 470 Jan 18 2001 cc_build.sh* -rwxr-xr-x 1 inoue kek 833 Jan 31 13:32 cc_link.sh* -rwxr-xr-x 1 inoue kek 833 Jan 19 2001 cc_link.sh-org* -rwxr-xr-x 1 inoue kek 949 Nov 22 2000 cc_load.sh* -rwxr-xr-x 1 inoue kek 404 Nov 22 2000 cc_unload.sh* onl50t[56]% vi cc_link.sh : set SYS58 = "5.8" set SYS57 = "5.7" set SYSNL = `uname -sr` if ( $SYSNL[2] == $SYS58 )then set CCDIR=`dmesg|grep 'cc0 is'|tail -1|awk '{print $11}'|awk -f script/awk1.txt` set CCNAM=`dmesg|grep 'cc0 is'|tail -1|awk '{print $11}'|awk -f script/awk2.txt` else if ( $SYSNL[2] == $SYS57 )then set CCDIR=`dmesg|grep 'cc0 is'|tail -1|awk '{print $8}'|awk -f script/awk1.txt` set CCNAM=`dmesg|grep 'cc0 is'|tail -1|awk '{print $8}'|awk -f script/awk2.txt` else set CCDIR=`dmesg|grep 'cc0 is'|tail -1|awk '{print $3}'|awk -f script/awk1.txt` set CCNAM=`dmesg|grep 'cc0 is'|tail -1|awk '{print $3}'|awk -f script/awk2.txt` #set CCMAJOR = `modinfo | grep CAMAC | awk ' {print $4}'` endif : onl50t[57]% (3-4). 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# onl50t# ls -l /dev/cc lrwxrwxrwx 1 root other 37 Jan 31 13:54 /dev/cc -> /devices/pci@1f ,0/vme@5/cc@2d,ff00:cc onl50t# ドライバをロードした時のコンソール上のメッセージ。 Jan 31 13:54:21 onl50t cc: CAMAC device driver V4.0x, 1991-1993 by Y.TAKEUCHI (T .I.T.) ok. 正常にロードできた。 (4). 例題プログラムの実行(その1: 基本処理) (4-1). cam1、シングル・アクション 24ビット camac read/write の実行 onl50t[63]% pwd /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list onl50t[64]% 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[65]% onl50t[65]% onl50t[65]% onl50t[65]% 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[66]% ok. cam1、シングル・アクション 24ビット camac read/write は正常に 実行できた。 (4-2). cam3、camac LAM割り込み処理の実行 onl50t[66]% 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[67]% nl50t[67]% onl50t[67]% onl50t[67]% 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[68]% onl50t[68]% onl50t[68]% onl50t[68]% 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[69]% ok. cam3、camac LAM割り込み処理は timeout処理も含めて正常に実行できた。 (4-3). cam2プログラムの実行 (4-3-1). cam2、ブロック転送 16ビット read/write の実行 onl50t[69]% 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 <--- ここで不リーズした。 K2917のLEDは、RUNとM1が点灯したままになっている。 K2917のリセットボタンを押したら以降のメッセージ が出力された。 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 0 <--- ここで、再度 CAMACコマンドを入力したら、システムは パニックを起こしてリブートしてしまった。 panic[cpu0]/thread=2a100077d40: BAD TRAP: type=31 rp=2a100077880 addr=a0 mmu_fsr =0 occurred in module "unix" due to a NULL pointer dereference sched: trap type = 0x31 addr=0xa0 pid=0, pc=0x10034ca4, sp=0x2a100077121, tstate=0x1600, context=0x0 g1-g7: 0, 1414ca, 8, 1049dc00, 0, 0, 2a100077d40 000002a1000774a0 unix:die+80 (31, a0, 10414c08, 0, 2a100077880, d3f21000) %l0-3: 0000000000000010 00000300006be000 0000030000fc4082 00000300006be000 %l4-7: 0000030001014e80 0000000000000000 0000000000000000 0000000000000000 000002a100077580 unix:trap+8f8 (0, 1, 5, 0, 2a100077880, 0) %l0-3: 0000000000000001 0000000000000001 0000000010423558 0000000000000000 %l4-7: 0000000000000031 0000000000000000 0000000000010200 000003000015e2f8 000002a1000776c0 unix:sfmmu_tsb_miss+640 (104247e0, 0, 3000004ff88, 0, 3000004ff 88, 19) %l0-3: 0000000000000000 0000000000000004 0000000000000000 000000001054f100 %l4-7: 0000000000000000 0000030000429ea8 0000000000000000 0000000000000003 000002a1000777d0 unix:prom_rtt+0 (a0, 2a100077d40, ffffffffffffffff, 1041add8, 0 , 1041bd70) %l0-3: 0000000000000001 0000000000001400 0000000000001600 000000001001d38c %l4-7: 0000000000000031 000003000095d510 0000000000000000 000002a100077880 000002a100077920 cc:cc_timeout+1c (a0, 0, 20, 10423558, 1146, 0) %l0-3: 0000004400001607 0000000000000016 000000000000000a 000002a10001fd40 %l4-7: 0000000000000000 0000000000000000 0000000000000000 000002a10001fa00 000002a1000779d0 genunix:callout_execute+90 (bfffffffffea7e78, 1, 300001b1038, 1 414ca, 300001b0038, 0) %l0-3: 0000000078070f28 8000000000000000 0000000000000001 00000300001b1688 %l4-7: 00000000001414ca 00000300001b0000 0000030000214ec0 000002a100077a00 000002a100077a80 genunix:taskq_thread+18c (30000437e80, 0, 10423558, 10000, 3000 0437eb2, 30000437ed8) %l0-3: 0000000010073608 0000030000437eb0 0000030000437ea8 0000030000437e80 %l4-7: 0000030000437ea0 0000030000431fa8 0000000000000000 00000000109beac0 syncing file systems... done dumping to /dev/dsk/c0t3d0s3, offset 31260672 100% done: 4259 pages dumped, compression ratio 3.51, dump succeeded rebooting... 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.8, 256 MB memory installed, Serial #9204337. Ethernet address 0:80:42:10:2:74, Host ID: 808c7271. Executing last command: boot Boot device: disk3:a File and args: SunOS Release 5.8 Version Generic_108528-01 64-bit Copyright 1983-2000 Sun Microsystems, Inc. All rights reserved. NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f WARNING: Failed to install "power" driver. configuring IPv4 interfaces: hme0. configuring IPv6 interfaces: hme0. Hostname: onl50t Configuring /dev and /devices CAMAC device driver V4.0x, 1991-1993 by Y.TAKEUCHI (T.I.T.) Configuring the /dev directory (compatibility devices) The system is coming up. Please wait. checking ufs filesystems /dev/rdsk/c0t3d0s7: is stable. NIS domainname is kek.jp Starting IPv6 neighbor discovery. Setting default IPv6 interface for multicast: add net ff00::/8: gateway fe80::28 0:42ff:fe10:274 starting rpc services: rpcbind keyserv done. Setting netmask of hme0 to 255.255.248.0 WARNING: IP: Hardware address '00:80:42:10:02:74' trying to be our address 130.0 87.219.209! Setting default IPv4 interface for multicast: add net 224.0/4: gateway onl50t syslog service starting. Jan 31 14:26:40 onl50t savecore: reboot after panic: BAD TRAP: type=31 rp=2a1000 77880 addr=a0 mmu_fsr=0 occurred in module "unix" due to a NULL pointer derefere nce System dump time: Thu Jan 31 14:24:47 2002 Constructing namelist /var/crash/onl50t/unix.0 Constructing corefile /var/crash/onl50t/vmcore.0 100% done: 4259 of 4259 pages saved Print services started. volume management starting. Wnn6: Key License Server started.... Nihongo Multi Client Server (Wnn6 R2.32) Finished Reading Files The system is ready. onl50t console login: onl50t[129]% 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 >555 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 555 0x 22B(Hex) Data( 2)= 555 0x 22B(Hex) Data( 3)= 555 0x 22B(Hex) Data( 4)= 555 0x 22B(Hex) Data( 5)= 555 0x 22B(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 >999 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 999 0x 3E7(Hex) Data( 2)= 999 0x 3E7(Hex) Data( 3)= 999 0x 3E7(Hex) Data( 4)= 999 0x 3E7(Hex) Data( 5)= 999 0x 3E7(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)= 999 0x 3E7(Hex) Data( 2)= 999 0x 3E7(Hex) Data( 3)= 999 0x 3E7(Hex) Data( 4)= 999 0x 3E7(Hex) Data( 5)= 999 0x 3E7(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)= 999 0x 3E7(Hex) Data( 2)= 999 0x 3E7(Hex) Data( 3)= 999 0x 3E7(Hex) Data( 4)= 999 0x 3E7(Hex) Data( 5)= 999 0x 3E7(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 >^C *** TERMINATING cam2 *** Received signal 2 SIGINT onl50t[130]% ok. write は正常に実行できた。 しかも、write をやった後で readをやると これも正常に実行できた。 read から始めるとフリーズするのかな。 <<< チェック 2 >>> onl50t[72]% 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 <--- ここでフリーズした。 K2917のリセットボタンを押して 中断した。 ^C *** TERMINATING cam2 *** Received signal 2 SIGINT onl50t[73]% onl50t[73]% cam2 <--- 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 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 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 >555 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 555 0x 22B(Hex) Data( 2)= 555 0x 22B(Hex) Data( 3)= 555 0x 22B(Hex) Data( 4)= 555 0x 22B(Hex) Data( 5)= 555 0x 22B(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)= 555 0x 22B(Hex) Data( 2)= 555 0x 22B(Hex) Data( 3)= 555 0x 22B(Hex) Data( 4)= 555 0x 22B(Hex) Data( 5)= 555 0x 22B(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[74]% 正常に実行が終わった。 onl50t[74]% 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 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 >^C *** TERMINATING cam2 *** Received signal 2 SIGINT onl50t[75]% 正常に実行できている。 ここまでの結果からみて言えることは、CAMACドライバをロードした直後に DMAで read すると DMA の途中でフリーズする。 このDMA を K2917 をリセット することで中断すると以降の cam2は何度やっても何も問題なく実行できる。 イニシャライズに問題ありか。 <<< チェック 3 >>> onl50t[77]% 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 >1234 <--- ここでフリーズした。 K2917をリセットしたら以下の メッセージが表示された。 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 >^C <--- コントロールCで cam2を中断。 *** TERMINATING cam2 *** Received signal 2 SIGINT onl50t[78]% onl50t[78]% 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 >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 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)= 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)= 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)= 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) Note: Nonstandard floating-point mode enabled See the Numerical Computation Guide, ieee_sun(3M) onl50t[79]% CAMACドライバをロードした直後に、cam2で DMA writeを実行したらフリーズ した。 k2917のリセットボタンを押して DMAを中断しコントロールCを押して cam2を中断した。 ここで再度 cam2を実行したら、何も問題なく正常に実行 できた。 つまり、CAMACドライバのロード直後の DMA では read および write に関係 なくフリーズする。 この DMA を中断し、cam2を終わらせた後、再度cam2を 起動すれば、以降の cam2 による DMA は何度やっても正常に実行できる。 <<< チェック 4 >>> cc_strategy()ルーチンでK2917をイニシャライズしている部分をトレースする。 onl50t[102]% 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 <--- ここでフリーズした。 K2917のリセットボタンを押して DMA を中断。 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 >^C <--- コントロールCで cam2 の実行を中断。 *** TERMINATING cam2 *** Received signal 2 SIGINT onl50t[103]% onl50t[103]% cam2 <--- 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) <--- 正常にDMA は実行された。 Input n a f >^C *** TERMINATING cam2 *** Received signal 2 SIGINT onl50t[104]% 上の実行を行った時のトレース結果は、次の通り。 Feb 1 14:37:12 onl50t cc: CAMAC device driver V4.0x, 1991-1993 by Y.TAKEUCHI (T .I.T.) Feb 1 14:37:48 onl50t cc: NOTICE: in: 0x4e4098 10 1 50 0 0 Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x2a Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x600 Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfffb Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xffff Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x80 Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfc07 Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->maclo=0x98 Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->machi=0x17 Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->amr=0xffff Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->mtc=0x5 Feb 1 14:37:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cser=0x0 Feb 1 14:38:21 onl50t cc: NOTICE: in: 0x4e4098 10 1 50 0 0 Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x2a Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x600 Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfffb Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xffff Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x80 Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfc07 Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->maclo=0x98 Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->machi=0x0 Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->amr=0xffff Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->mtc=0x5 Feb 1 14:38:21 onl50t cc: NOTICE: strategy: List-proc: cc->k->cser=0x800 このトレース結果から解ることは、CAMACドライバをロードした直後に実行する DMAでは、machi=0x17 になっており、K2917のリセットボタンを押して中断した 後で cam2 を再実行した時にはmachi=0x0 になっていることである。 <<< チェック 5 >>> onl50t[108]% 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 >^C *** TERMINATING cam2 *** Received signal 2 SIGINT onl50t[109]% onl50t[109]% onl50t[109]% 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 >^C *** TERMINATING cam2 *** Received signal 2 SIGINT onl50t[110]% Feb 1 15:22:36 onl50t cc: CAMAC device driver V4.0x, 1991-1993 by Y.TAKEUCHI (T .I.T.) Feb 1 15:23:07 onl50t cc: NOTICE: in: 0x4e4098 10 1 50 0 0 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x2a Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x600 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfffb Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xffff Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x80 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfc07 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: dma_addr=0xe0180098 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->maclo=0x98 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->machi=0x18 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->amr=0xffff Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->mtc=0x5 Feb 1 15:23:07 onl50t cc: NOTICE: strategy: List-proc: cc->k->cser=0x0 Feb 1 15:23:48 onl50t cc: NOTICE: in: 0x4e4098 10 1 50 0 0 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x2a Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x600 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfffb Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xffff Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x80 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfc07 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: dma_addr=0x98 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->maclo=0x98 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->machi=0x0 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->amr=0xffff Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->mtc=0x5 Feb 1 15:23:48 onl50t cc: NOTICE: strategy: List-proc: cc->k->cser=0x800 CAMACドライバをロードした直後の DMAでは32ビット長のdma_addrが返されて いるが、K2917のリセットボタンで中断した後で行った cam2の再実行では 8ビット長のdma_addrが返されている。 8ビット長のdma_addrを使うように する。 onl50t[49]% vi cc64.c : static int cc_strategy(struct buf *bp) { : /* dma_addr_tmp = dma_addr & 0xFFFF; */ dma_addr_tmp = dma_addr = dma_addr & 0xFFFF; ddi_put16(cc->kreg_handle, &cc->kreg->maclo, (uint16_t)dma_addr_tmp); /* Set DMA base address */ : onl50t[50]% onl50t[54]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o cc64.o onl50t[55]% 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 4 10:47 /dev/cc -> /devices/pci@1f ,0/vme@5/cc@2d,ff00:cc onl50t# onl50t[57]% 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[58]% Feb 4 10:47:38 onl50t cc: CAMAC device driver V4.0x, 1991-1993 by Y.TAKEUCHI (T .I.T.) Feb 4 14:55:02 onl50t cc: NOTICE: in: 0x4e4098 10 1 50 0 0 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x2a Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x600 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfffb Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xffff Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x80 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfc07 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: dma_addr=0x98 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->maclo=0x98 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->machi=0x0 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->amr=0xffff Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->mtc=0x5 Feb 4 14:55:02 onl50t cc: NOTICE: strategy: List-proc: cc->k->cser=0x0 Feb 4 14:56:11 onl50t cc: NOTICE: in: 0x4e4098 10 1 50 0 0 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x2a Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x610 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfffb Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xffff Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x80 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfc07 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: dma_addr=0x98 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->maclo=0x98 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->machi=0x0 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->amr=0xffff Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->mtc=0x5 Feb 4 14:56:11 onl50t cc: NOTICE: strategy: List-proc: cc->k->cser=0x0 Feb 4 14:56:23 onl50t cc: NOTICE: in: 0x4e4098 10 1 50 0 0 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x2a Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x600 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfffb Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xffff Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x80 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfc07 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: dma_addr=0x98 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->maclo=0x98 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->machi=0x0 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->amr=0xffff Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->mtc=0x5 Feb 4 14:56:23 onl50t cc: NOTICE: strategy: List-proc: cc->k->cser=0x0 Feb 4 14:56:44 onl50t cc: NOTICE: in: 0x4e4098 10 1 50 0 0 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x2a Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x610 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfffb Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xffff Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x80 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfc07 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: dma_addr=0x98 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->maclo=0x98 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->machi=0x0 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->amr=0xffff Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->mtc=0x5 Feb 4 14:56:44 onl50t cc: NOTICE: strategy: List-proc: cc->k->cser=0x0 Feb 4 14:56:56 onl50t cc: NOTICE: in: 0x4e4098 10 1 50 0 0 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x2a Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x600 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfffb Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xffff Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0x80 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->cmr=0xfc07 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->cma=0x0 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: dma_addr=0x98 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->maclo=0x98 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->machi=0x0 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->amr=0xffff Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->mtc=0x5 Feb 4 14:56:56 onl50t cc: NOTICE: strategy: List-proc: cc->k->cser=0x0 ok. 正常に実行できた。 onl50t[58]% 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 >6587 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 6587 0x 19BB(Hex) Data( 2)= 6587 0x 19BB(Hex) Data( 3)= 6587 0x 19BB(Hex) Data( 4)= 6587 0x 19BB(Hex) Data( 5)= 6587 0x 19BB(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)= 6587 0x 19BB(Hex) Data( 2)= 6587 0x 19BB(Hex) Data( 3)= 6587 0x 19BB(Hex) Data( 4)= 6587 0x 19BB(Hex) Data( 5)= 6587 0x 19BB(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[59]% ok. cam2、ブロック転送 16ビット read/write は正常に実行できた。 (4-3-2). cam2、ブロック転送 24ビット read/write の実行 onl50t[59]% 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[60]% onl50t[60]% onl50t[60]% onl50t[60]% 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[61]% ok. cam2、ブロック転送 24ビット read/write は正常に実行できた。 配布キット "FORCE-50T-sol7-list"を使ってonl50t 上で camacの例題 プログラムのテストを行った。 o cam1、シングル・アクション 24ビット camac read/write の実行 o cam3、camac LAM割り込み処理の実行 o cam2、ブロック転送 16ビット read/write の実行 o cam2、ブロック転送 24ビット read/write の実行 は、すべて正常に実行できた。 続いて、KEKリスト処理の例題プログラムの テストを行う。 (5). 例題プログラムの実行(その2: KEKリスト処理) onl50t[66]% pwd /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list/camlist onl50t[67]% ls Makefile camtest4int.asm camtest5c.c camtest4c* camtest4int.obj camtest5c1* camtest4c.c camtest4single.asm camtest5c1.c camtest4dma.asm camtest4single.obj camtest5c2* camtest4dma.obj camtest5c* camtest5c2.c onl50t[68]% (5-1). KEKリスト処理でシングルアクション(16ビット/24ビット)read/write を実行 onl50t[68]% cat camtest4single.asm ; File name : camtest4single.asm ; Creation date : July 1992 ; Author : Y.Yasu, Online group, Physics department, KEK ; Modified : July 21, 2000 E.Inoue SW equ 3 ; CAMAC SWITCH REGISTER MEM equ 4 ; CAMAC BUFFER MEMORY MOUDLE INT equ 5 ; CAMAC INTERRUPT REGISTER LEN equ 10 ; 10 words ; MOVE #1,A SETCRATE A SETCRATE #0 GENZ GENC SETI REMI ; READ (0,SW,1) READ.l (0,SW,1) READ (0,SW,1),A MOVE A,(PTR)+ READ.l (0,SW,1),A MOVE.l A,(PTR)+ WRITE #0x5555,(16,SW,0) WRITE #0x80081,(16,SW,0) WRITE.l #0x80082,(16,SW,0) WRITE A,(16,SW,0) WRITE.l A,(16,SW,0) ; STOP end onl50t[69]% onl50t[69]% camtest5c CamReaLIST : OK lenlist = 36 list = 329 1 0 10a 7ffffa5c CamLisExeWAIt : OK contents of iosb : iosb.status = fffffff6 iosb.ret_length = 6 iosb.s_reg = f iosb.devinfo = a000 a0 contents of buffer : 5 0 5 5 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 onl50t[70]% ok. KEKリスト処理でのシングルアクション(16ビット/24ビット)read/write は正常に実行できた。 (5-2). KEKリスト処理でLAM割り込み処理を実行 LAM源として、EG&E社製のNIMの "Puls Generator, PG-1900" を使用した。 このモジュールを使って、CAMAC 8 bit Interrupt Registerモジュールの チャンネル1 に繰り返し周期 100ms、パルス幅 2ms のNIM信号を入力した。 onl50t[70]% cat camtest4int.asm ; File name : camtest4int.asm ; Creation date : July 1992 ; Author : Y.Yasu, Online group, Physics department, KEK ; Modified : Jul 31,2000 E.Inoue SW equ 3 ; CAMAC SWITCH REGISTER MEM equ 4 ; CAMAC BUFFER MEMORY MOUDLE INT equ 5 ; CAMAC INTERRUPT REGISTER LEN equ 10 ; 10 words ; SETCRATE #0 GENZ GENC SETI REMI ; MOVE #0x10,A ; INT module's LAM mask. Station # = 5. ENBINT MOVE.l #1000,T NDT (26,INT,0) LOOPIN1 MOVE #0xa,A ; Setting up timeout time. WAITINT ; GENC NDT (9,INT,0) MOVE.l T,A WRITE.l A,(16,SW,0) SUB #1,T BGT #0,LOOPIN1 LOAD COUNT MOVE.l A,(PTR)+ LOAD PTR MOVE.l A,(PTR)+ MOVE.l #1000,T LOOPIN2 MOVE #0xa,A ; Setting up timeout time. WAITEVENT ; GENC NDT (9,INT,0) MOVE.l T,A WRITE.l A,(16,SW,0) SUB #1,T BGT #0,LOOPIN2 LOAD COUNT MOVE.l A,(PTR)+ LOAD PTR MOVE.l A,(PTR)+ DSBINT ; STOP end onl50t[71]% onl50t[71]% camtest5c1 CamReaLIST : OK lenlist = 61 list = 20b 0 10c 10d 7ffffa5c CamLisExeWAIt : OK contents of iosb : iosb.status = fffffff6 iosb.ret_length = 8 iosb.s_reg = f iosb.devinfo = a000 a0 contents of buffer : 0 0 0 2 0 3e8 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 onl50t[72]% onl50t[72]% onl50t[72]% onl50t[72]% onl50t[72]% camtest5c1 CamReaLIST : OK lenlist = 61 list = 20b 0 10c 10d 7ffffa5c CamLisExeWAIt : OK contents of iosb : iosb.status = fffffff6 iosb.ret_length = 8 iosb.s_reg = f iosb.devinfo = a000 a0 contents of buffer : 0 3e8 0 2 0 7d0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 onl50t[73]% ok. インタラプト・モジュールを使った、KEKリスト処理による LAM割り込み 処理は正常に実行できた。 (5-3). KEKリスト処理で DMA camacブロック転送をを実行 onl50t[73]% cat camtest4dma.asm ; File name : camtest4dma.asm ; Creation date : July 1992 ; Author : Y.Yasu, Online group, Physics department, KEK SW equ 3 ; CAMAC SWITCH REGISTER MEM equ 4 ; CAMAC BUFFER MEMORY MOUDLE LEN equ 10 ; 10 words ; SETCRATE #0 GENZ GENC SETI REMI NDT (9,MEM,0) MOVE #LEN,T MOVE #0,A LOOP WRITE A,(16,MEM,0) ADD #1,A SUB #1,T BGT #0,LOOP ; ; MOVE #1,A MOVE #2,A ; QS.l (0,SW,1),#1 QS.l (0,SW,1),#2 QS.l (0,SW,1),A ; AS.l (0,SW,1),#1 AS.l (0,SW,1),#2 AS.l (0,SW,0),A ; IGQ.l (0,SW,1),#1 IGQ.l (0,SW,1),#2 IGQ.l (0,SW,1),A IGQ (0,SW,1),#2 IGQ (0,SW,1),A ; MOVE #LEN,A NDT (9,MEM,0) QS (0,MEM,0),#LEN NDT (9,MEM,0) QS (0,MEM,0),A NDT (9,MEM,0) AS (0,MEM,0),#LEN NDT (9,MEM,0) AS (0,MEM,0),A NDT (9,MEM,0) IGQ (0,MEM,0),#LEN NDT (9,MEM,0) IGQ (0,MEM,0),A ; ; STOP end onl50t[74]% onl50t[74]% camtest5c2 CamReaLIST : OK lenlist = 81 list = 20b 0 10c 10d 7ffffa5c CamLisExeWAIt : OK contents of iosb : iosb.status = fffffff6 iosb.ret_length = 58 iosb.s_reg = f iosb.devinfo = 800 080 contents of buffer : ff00 5 ff00 5 ff00 5 ff00 5 ff00 5 ff00 ffff ff00 0 ff00 5 ff00 5 ff00 5 ff00 5 ff00 5 5 5 5 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 onl50t[75]% ok. KEKリスト処理による DMA camacブロック転送は正常に実行できた。 (5-4). CamLisLOAD および CamExeWAIt のテスト camtest4single.objファイルを CamLisLOAD および CamExeWAIt関数を使用して KEKリスト処理を行う例題プログラムである。 onl50t[76]% cat camtest4single.asm ; File name : camtest4single.asm ; Creation date : July 1992 ; Author : Y.Yasu, Online group, Physics department, KEK ; Modified : July 21, 2000 E.Inoue SW equ 3 ; CAMAC SWITCH REGISTER MEM equ 4 ; CAMAC BUFFER MEMORY MOUDLE INT equ 5 ; CAMAC INTERRUPT REGISTER LEN equ 10 ; 10 words ; MOVE #1,A SETCRATE A SETCRATE #0 GENZ GENC SETI REMI ; READ (0,SW,1) READ.l (0,SW,1) READ (0,SW,1),A MOVE A,(PTR)+ READ.l (0,SW,1),A MOVE.l A,(PTR)+ WRITE #0x5555,(16,SW,0) WRITE #0x80081,(16,SW,0) WRITE.l #0x80082,(16,SW,0) WRITE A,(16,SW,0) WRITE.l A,(16,SW,0) ; STOP end onl50t[77]% onl50t[77]% camtest4c CAM_Open : Done CamReaLIST : OK lenlist = 36 CamLisLOAD : OK list = 329 1 0 10a 7ffffa5c CamExeWAIt : OK contents of iosb : iosb.status = fffffff6 iosb.ret_length = 6 iosb.s_reg = f iosb.devinfo = a000 a0 contents of buffer : 5 0 5 5 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 onl50t[78]% ok. CamLisLOAD および CamExeWAIt関数は正常に機能している。 (6). 例題プログラムの実行(その3: Kineticリスト処理) onl50t[84]% pwd /export/home/onl50t/inoue/CAMAC-list/FORCE-50T-sol7-list/camlist-kine onl50t[85]% ls Makefile cam6a* cam7A* cam7a.obj cam7b.obj cam7cA.obj cam6* cam6a.c cam7A.c cam7aA.asm cam7bA.asm cam6.asm cam6b* cam7B* cam7aA.lis cam7bA.lis cam6.c cam6b.c cam7B.c cam7aA.obj cam7bA.obj cam6.lis cam7* cam7a.asm cam7b.asm cam7cA.asm cam6.obj cam7.c cam7a.lis cam7b.lis cam7cA.lis onl50t[86]% (6-1). kineticリスト処理でシングルアクションおよび DMA転送の実行 この例題プログラムでは次の事項についてテストしている。 (1). 16/24ビットのシングルアクション read/write (2). 16/24ビットの DMA、イグノア Q (3). 16/24ビットの DMA、Qストップ (4). 16/24ビットの DMA、アドレス・スキャン onl50t[86]% cat cam6.asm ***************************************************************** * cam6.ASM 20-FEB-1992 Y.Takeuchi * * Modified : 4-Jul-2000 E.Inoue * * * * camasm cam6 a * ***************************************************************** SW equ 3 ; Switch Register ; IGQ (0,SW,1),#6 NDT (10,SW,0) READ (0,SW,1) READ.l (0,SW,1) WRITE #6,(16,SW,0) WRITE #7,(16,SW,0) WRITE.l #6636321,(16,SW,0) IGQ (0,SW,1),#100 IGQ.l (0,SW,1),#7 IGQ.l (0,SW,1),#100 QS (0,SW,1),#7 QS (0,SW,1),#100 QS.l (0,SW,1),#7 QS.l (0,SW,1),#100 AS (0,SW,1),#1 AS.l (0,SW,1),#1 ; STOP end onl50t[87]% onl50t[87]% cam6 list length = 48 Now execute cam6.obj ... data[ 0]=0x 0 0 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 287 647 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 5 5 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 5 5 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 5 5 usp[ 8]=0x 5 5 usp[ 9]=0xff00 65280 data[ 5]=0x 5 5 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 5 5 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 5 5 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 5 5 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x ff00 65280 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 onl50t[88]% ok. シングルアクションおよび DMA転送は正常に実行できた。 (6-1a). kineticリスト処理でシングルアクションおよび DMA転送の実行(その2) 項目(6-1)での実行時に CKSAVE() 関数でセーブした Kineticリストをここでは CKLOAD()関数でロードして実行する例題プログラムである。 onl50t[88]% cam6a Now execute ---test1--- data[ 0]=0x 287 647 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 5ff00 392960 usp[ 8]=0x 5 5 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 50005 327685 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 50005 327685 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 50005 327685 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x 50005 327685 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 onl50t[89]% ok. 正常に実行できた。 (6-1b). kineticリスト処理でシングルアクションおよび DMA転送の実行(その3) 項目(6-2)でやったテストを複数回繰り返した。 CKDEL()関数を使って、 ロードされている kineticリストを途中で一旦削除した後で再ロードして 実行動作確認を行っている。 onl50t[89]% cam6b Now execute ---test1--- data[ 0]=0x 287 647 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 5ff00 392960 usp[ 8]=0x 5 5 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 50005 327685 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 50005 327685 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 50005 327685 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x 50005 327685 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 Now execute ---test1--- data[ 0]=0x 287 647 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 5ff00 392960 usp[ 8]=0x 5 5 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 50005 327685 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 50005 327685 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 50005 327685 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x 50005 327685 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 Now execute ---test1--- data[ 0]=0x 0 0 usp[ 0]=0x 0 0 usp[ 1]=0x 0 0 data[ 1]=0x 0 0 usp[ 2]=0x 0 0 usp[ 3]=0x 0 0 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 Now execute ---test1--- data[ 0]=0x 287 647 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 5ff00 392960 usp[ 8]=0x 5 5 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 50005 327685 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 50005 327685 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 50005 327685 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x 50005 327685 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 onl50t[90]% ok. 正常に実行できた。 (6-2). KEKリスト処理の中から kineticリスト処理を実行(その1) 2917 のコマンド・メモリ・レジスタにロードしておいた kineticリストを KEKリスト処理プログラムの中から実行する例題プログラムである。 onl50t[90]% cat cam7a.asm ***************************************************************** * cam7a.ASM 29-MAR-1992 Y.Takeuchi * * Modified: 4-Jul-2000 E.Inoue * * * * camasm cam7a a * ***************************************************************** SW equ 3 ; Switch Register ; READ.l (0,SW,1) ; STOP end onl50t[91]% onl50t[91]% cat cam7b.asm ***************************************************************** * cam7b.ASM 29-MAR-1992 Y.Takeuchi * * Modified: 4-Jul-2000 E.Inoue * * * * camasm cam7b a * ***************************************************************** SW equ 3 ; CAMAC SW register ; NDT (10,SW,0) ; Clear LAM READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW MOVE #0,A ; Set Klist name to "test1" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW ; STOP end onl50t[92]% onl50t[92]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0xff000005 4278190085 usp[ 4]=0xff00 65280 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[93]% ok. 正常に実行できた。 (6-2a). KEKリスト処理の中から kineticリスト処理を実行(その2) 複数の kineticリストを、任意に選択実行できるかテストする例題プログラム である。 onl50t[93]% cat cam7aA.asm ***************************************************************** * cam7aA.ASM 29-MAR-1992 Y.Takeuchi * * Modified: 4-Jul-2000 E.Inoue * * * * camasm cam7aA a * ***************************************************************** SW equ 3 ; Switch Register ; READ.l (0,SW,1) ; STOP end onl50t[94]% onl50t[94]% cat cam7cA.asm ***************************************************************** * cam7cA.ASM 29-MAR-1992 Y.Takeuchi * * Modified: 4-Jul-2000 E.Inoue * * * * camasm cam7cA a * ***************************************************************** SW equ 3 ; Switch Register ; READ (0,SW,1) READ (0,SW,1) ; STOP end onl50t[95]% onl50t[95]% cat cam7bA.asm ***************************************************************** * cam7bA.ASM 29-MAR-1992 Y.Takeuchi * * Modified: 4-Jul-2000 E.Inoue * * * * camasm cam7bA a * ***************************************************************** SW equ 3 ; CAMAC SW register ; NDT (10,SW,0) ; Clear LAM READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW MOVE #1,A ; Set Klist name to "test1" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW MOVE #0,A ; Set Klist name to "test0" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW ; STOP end onl50t[96]% onl50t[96]% cam7A list length = 4 list length = 6 list length = 20 Now execute cam7bA.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50000 327680 usp[ 6]=0x 5 5 usp[ 7]=0x 0 0 data[ 4]=0x 2ff00 196352 usp[ 8]=0x 2 2 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[97]% ok. 正常に実行できた。 (6-2b). KEKリスト処理の中から kineticリスト処理を実行(その3) 項目(6-5)での実行時に CKSAVE() 関数でセーブした複数の Kineticリストを ここではCKLOAD()関数でロードして実行する例題プログラムである。 onl50t[97]% cat cam7bA.asm ***************************************************************** * cam7bA.ASM 29-MAR-1992 Y.Takeuchi * * Modified: 4-Jul-2000 E.Inoue * * * * camasm cam7bA a * ***************************************************************** SW equ 3 ; CAMAC SW register ; NDT (10,SW,0) ; Clear LAM READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW MOVE #1,A ; Set Klist name to "test1" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW MOVE #0,A ; Set Klist name to "test0" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW ; STOP end onl50t[98]% onl50t[98]% cam7B list length = 20 Now execute cam7bA.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50000 327680 usp[ 6]=0x 5 5 usp[ 7]=0x 0 0 data[ 4]=0x 2ff00 196352 usp[ 8]=0x 2 2 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[99]% ok. 正常に実行できた。 これで、キット中の例題プログラムによる動作確認は全て正常に終了した。 ---xxxx ここまでやった(継続中) --- (6). 項目タイトル (6-1). サブ項目タイトル (6-1-1). サブサブ項目タイトル