Apr 11, 2002 onl5v4: Solaris8 cc ドライバのテスト --- cc ドライバのインストール#02 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/onl5v4-sol8/ Desktop/camac-step02.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). 現状確認 (A). onl5v4テスト用のHD が届いた。 (B). "Solaris 8 7/01" のメディアを使ってシステムをインストールした。 (C). /etc の下の各設定、および /export/home の作成をやった。 (D). CPU-5V にSolaris8用の VMEドライバ、FRCvme-2.5.1をインストールした。 (E). onl5v4 に ccドライバをインストールした。 (2). ここでやるべきこと KEKリスト処理で camacシングルアクション read/write、LAM割り込み処理、 DMA camacブロック転送の動作確認をする。 Kineticリスト処理で camacシングルアクション read/write、DMA camac ブロック転送の動作確認をする。 (3). 例題プログラムの実行(その1: 基本処理) (3-1). cam1、シングル・アクション 24ビット camac read/write の実行 onl5v4[43]% pwd /export/home/onl5v4/inoue/CAMAC/FORCE-5V-sol7-list onl5v4[44]% 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) onl5v4[45]% onl5v4[45]% onl5v4[45]% 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)>^Conl5v4[46]% onl5v4[46]% ok. cam1、シングル・アクション 24ビット camac read/write は正常に 実行できた。 (3-2). cam3、camac LAM割り込み処理の実行 onl5v4[46]% 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. onl5v4[47]% onl5v4[47]% onl5v4[47]% onl5v4[47]% 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. onl5v4[48]% onl5v4[48]% onl5v4[48]% onl5v4[48]% 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. onl5v4[49]% ok. cam3、camac LAM割り込み処理は timeout処理も含めて正常に実行できた。 (3-3). cam2プログラムの実行 (3-3-1). cam2、ブロック転送 16ビット read/write の実行 onl5v4[49]% 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) onl5v4[50]% onl5v4[50]% onl5v4[50]% onl5v4[50]% 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) onl5v4[51]% ok. cam2、ブロック転送 16ビット read/write は正常に実行できた。 (3-3-2). cam2、ブロック転送 24ビット read/write の実行 onl5v4[52]% 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) onl5v4[53]% onl5v4[53]% onl5v4[53]% onl5v4[53]% onl5v4[53]% 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) onl5v4[54]% ok. cam2、ブロック転送 24ビット read/write は正常に実行できた。 配布キット "FORCE-5V-sol7-list"を一部修正してonl5v4 上で camacの例題 プログラムのテストを行った。 o cam1、シングル・アクション 24ビット camac read/write の実行 o cam3、camac LAM割り込み処理の実行 o cam2、ブロック転送 16ビット read/write の実行 o cam2、ブロック転送 24ビット read/write の実行 は、すべて正常に実行できた。 続いて、リスト処理の例題プログラムの テストを行う。 (4). 例題プログラムの実行(その2: KEKリスト処理) onl5v4[58]% pwd /export/home/onl5v4/inoue/CAMAC/FORCE-5V-sol7-list/camlist onl5v4[59]% 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 onl5v4[60]% (4-1). KEKリスト処理でシングルアクション(16ビット/24ビット)read/write を実行 onl5v4[60]% 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 onl5v4[61]% onl5v4[61]% camtest5c CamReaLIST : OK lenlist = 36 list = 329 1 0 10a ef6db8c4 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 onl5v4[62]% ok. KEKリスト処理でのシングルアクション(16ビット/24ビット)read/write は正常に実行できた。 (4-2). KEKリスト処理でLAM割り込み処理を実行 LAM源として、EG&E社製のNIMの "Puls Generator, PG-1900" を使用した。 このモジュールを使って、CAMAC 8 bit Interrupt Registerモジュールの チャンネル1 に繰り返し周期 100ms、パルス幅 2ms のNIM信号を入力した。 onl5v4[64]% 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 onl5v4[65]% onl5v4[65]% camtest5c1 CamReaLIST : OK lenlist = 61 list = 20b 0 10c 10d ef6db8c4 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 onl5v4[66]% onl5v4[66]% onl5v4[66]% onl5v4[66]% camtest5c1 CamReaLIST : OK lenlist = 61 list = 20b 0 10c 10d ef6db8c4 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 onl5v4[67]% ok. インタラプト・モジュールを使った、KEKリスト処理による LAM割り込み 処理は正常に実行できた。 (4-3). KEKリスト処理で DMA camacブロック転送をを実行 onl5v4[68]% 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 QS.l (0,SW,1),#1 QS.l (0,SW,1),A AS.l (0,SW,1),#1 AS.l (0,SW,0),A IGQ.l (0,SW,1),#1 IGQ.l (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 onl5v4[69]% onl5v4[69]% camtest5c2 CamReaLIST : OK lenlist = 76 list = 20b 0 10c 10d ef6db8c4 CamLisExeWAIt : OK contents of iosb : iosb.status = fffffff6 iosb.ret_length = 48 iosb.s_reg = f iosb.devinfo = 800 080 contents of buffer : ff00 5 ff00 5 ff00 5 ff00 0 ff00 5 ff00 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 onl5v4[70]% ok. KEKリスト処理による DMA camacブロック転送は正常に実行できた。 (4-4). CamLisLOAD および CamExeWAIt のテスト camtest4single.objファイルを CamLisLOAD および CamExeWAIt関数を使用して KEKリスト処理を行う例題プログラムである。 onl5v4[71]% 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 onl5v4[72]% onl5v4[72]% camtest4c CAM_Open : Done CamReaLIST : OK lenlist = 36 CamLisLOAD : OK list = 329 1 0 10a ef6db8c4 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 onl5v4[73]% ok. CamLisLOAD および CamExeWAIt関数は正常に機能している。 (5). 例題プログラムの実行(その3: Kineticリスト処理) onl5v4[78]% pwd /export/home/onl5v4/inoue/CAMAC/FORCE-5V-sol7-list/camlist-kine onl5v4[79]% 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 onl5v4[80]% (5-1). kineticリスト処理でシングルアクションおよび DMA転送の実行 この例題プログラムでは次の事項についてテストしている。 (1). 16/24ビットのシングルアクション read/write (2). 16/24ビットの DMA、イグノア Q (3). 16/24ビットの DMA、Qストップ (4). 16/24ビットの DMA、アドレス・スキャン onl5v4[80]% 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 onl5v4[81]% onl5v4[81]% 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 onl5v4[82]% ok. シングルアクションおよび DMA転送は正常に実行できた。 (5-1a). kineticリスト処理でシングルアクションおよび DMA転送の実行(その2) 項目(6-1)での実行時に CKSAVE() 関数でセーブした Kineticリストをここでは CKLOAD()関数でロードして実行する例題プログラムである。 onl5v4[82]% 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 onl5v4[83]% ok. 正常に実行できた。 (5-1b). kineticリスト処理でシングルアクションおよび DMA転送の実行(その3) 項目(6-2)でやったテストを複数回繰り返した。 CKDEL()関数を使って、 ロードされている kineticリストを途中で一旦削除した後で再ロードして 実行動作確認を行っている。 onl5v4[83]% 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 onl5v4[84]% ok. 正常に実行できた。 (5-2). KEKリスト処理の中から kineticリスト処理を実行(その1) 2917 のコマンド・メモリ・レジスタにロードしておいた kineticリストを KEKリスト処理プログラムの中から実行する例題プログラムである。 onl5v4[84]% 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 onl5v4[85]% onl5v4[85]% 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 onl5v4[86]% onl5v4[86]% 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 onl5v4[87]% ok. 正常に実行できた。 (5-2a). KEKリスト処理の中から kineticリスト処理を実行(その2) 複数の kineticリストを、任意に選択実行できるかテストする例題プログラム である。 onl5v4[87]% 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 onl5v4[88]% onl5v4[88]% 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 onl5v4[89]% onl5v4[89]% 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 onl5v4[90]% onl5v4[90]% 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 onl5v4[91]% ok. 正常に実行できた。 (5-2b). KEKリスト処理の中から kineticリスト処理を実行(その3) 項目(6-5)での実行時に CKSAVE() 関数でセーブした複数の Kineticリストを ここではCKLOAD()関数でロードして実行する例題プログラムである。 onl5v4[91]% 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 onl5v4[92]% onl5v4[92]% 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 onl5v4[93]% ok. 正常に実行できた。 これで、キット中の例題プログラムによる動作確認は全て正常に終了した。 続いて、CAMAC FORCE-5V-sol8-list のキット作りを行う。 ---xxxx ここまでやった(継続中) --- (6). 項目タイトル (6-1). サブ項目タイトル (6-1-1). サブサブ項目タイトル