Nov 22, 2000 onl50t: デスクトップ Solaris 7 cc ドライバのテスト --- cc ドライバのデバッグ#012 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/onl50t-sol7/ Desktop/debug-step12.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). 現状確認 (A). SPARC CPU-50T、Solaris7 が届いた。 (B). FORCE,CPU-50(UltraSPARC-IIi 300MHz)、に Solaris 7 のシステムを インストールした。 (C). /etc の下のシステム設定の途中、同一SCSIケーブル上に narrow の ディスクと wide のディスクを混在してつないだらシステムが立ち 上がらなくなってしまった。 (D). wide のディスクを narrow のディスクに替えてもらった。 (E). FORCE,CPU-50(UltraSPARC-IIi 300MHz)、に Solaris 7 のシステムを 再インストールした。 (F). /etc の下の各設定、および /export/home の作成をやった。 (G). CPU-50T に Solaris7用の VMEドライバ、FRCvme-2.4.1 をインストール (H). onl50t に ccドライバを make load しようとしたが、64ビット対応に なっていないために組み込めない。 (I). Solaris7、32ビット・カーネルで onl50t を起動して camacドライバを 組み込んだ。 (J). onl50t、Solaris7 で 32ビット・カーネルの下での camacドライバの 動作確認をやった。 正常に実行できた。 (K). Solaris7、32ビット・カーネルの下で、シングルアクション、割り込み を実行した時のデータ転送速度は正常に測定できたが、ブロック転送の データ転送速度を測定時にシステムがフリーズしてしまった。 (L). 32ビットカーネルを使ってブロック転送を実行すると、複数ワードの データ転送時にフリーズすることがある、この時 camacドライバに制御 が移っていないことを確認した。 (M). ドライバプログラムを64ビット対応にするために必要な作業について調 べた。 (N). lintを使ってcamacドライバプログラムをチェック。 camacドライバを    ロード、アンロードできるようになった。 (O). 64ビット・カーネルの下での camacドライバの動作確認をやった。    シングルアクションR/W はNG。 LAM割り込み処理はNG。 ブロック転送は    確認していない。 (P). CGENC、CGENZ、CGENI、CREMIの実行は正常に実行できるようになった。 (Q). camac シングルアクション read/write の部分をデバッグ中にシステムを 壊してしまった。 (R). Solaris 7 のシステム再インストールした(その2)。 (S). /etc の下の各設定、および /export/home の作成をした(その2)。 (T). VMEドライバ、FRCvme-2.4.1 を再インストールした(その2)。 (U). ccドライバをインストールした(その2)。 (V). camac Z、C が正しく動作できるが、camacシングルアクションread/write がうまく実行できない状況に復旧できた。 (W). camac シングルアクション read/writeは正常に実行できた。 (X). camac LAM割り込み処理の部分をチェック(その1)。 cc_attach()ルーチンを修正した。 camac 割り込み処理は NG. (Y). camac LAM割り込み処理は正常に実行できた。 (Z). camacブロック転送readは正しく実行できた。 camacブロック転送writeはNG. DMAをスタートすると"DMA Buffer Empty" の割り込みがかかってDMAは実行されない。 (2-A). camacブロック転送writeの部分をチェック。 1camacワードの転送以外 は正常に実行できた。 ベータ版としてキットを公開する。 (2). ここでやるべきこと デバッグ用に付加してあるトレースのための文をはずして動作を確認する。 (3). cc.cファイルの修正 onl50t[42]% pwd /export/home/onl50t/inoue/CAMAC/FORCE-50T-sol7-kit onl50t[43]% ls Backup/ cam3* cc64.c-bak Makefile cam3.c cc_common.h Makefile-Nov1-2000 camlib.c cc_config.h Makefile-org camlib.c-org forlib.c Makefile.diff camlib.h forlib.o README camlib.o k2917.h cam1* cc libcamac.a cam1.c cc.c out1 cam2* cc.c-org out2 cam2.f cc.conf out3 cam2a* cc.h out4 cam2a.f cc.h-org out5 cam2b* cc64 script/ cam2b.c cc64.c onl50t[44]% onl50t[44]% vi cc64.c : static int cc_write(dev_t dev, struct uio *uio, cred_t *cred_p) { /* register struct cc_device *cc = &ccdevice[0]; */ register struct cc_device *cc; : /* cmn_err(CE_NOTE," cc_write: cc->kreg->csr = 0x%x \n", ddi_get16(cc->kreg _handle,&cc->kreg->csr)); */ : /* cmn_err(CE_NOTE," cc_write: CC_CMD_DOBLOCK: iov->iov_base = 0x%x\n", iov ->iov_base); cmn_err(CE_NOTE," cc_write: CC_CMD_DOBLOCK: contents of iov->iov_base = 0x%x\n", cc->data_area[0]); */ : /* cmn_err(CE_NOTE," cc_write: cc->interrupt = 0x%x \n", cc->interrupt); cmn_err(CE_NOTE," cc_write: cc->kreg->donv = 0x%x \n", ddi_get16(cc->kre g_handle,&cc->kreg->donv)); cmn_err(CE_NOTE," cc_write: cc->kreg->csr = 0x%x \n", ddi_get16(cc->kreg _handle,&cc->kreg->csr)); */ : static u_int /* cc_intr(int unit) */ cc_intr(caddr_t unit) { /* register struct cc_device *cc = &ccdevice[0]; */ register struct cc_device *cc; : /* cmn_err(CE_NOTE," cc_intr: enter intrrupt: cc->kreg->csr = 0x%x\n", cc->kreg ->csr); cmn_err(CE_NOTE," cc_intr: cc->kreg->mtc(wc) = 0x%x \n", ddi_get16(cc->kreg_ handle, &cc->kreg->mtc)); cmn_err(CE_NOTE," cc_intr: cc->kreg->cwc = 0x%x \n", ddi_get16(cc->kreg_hand le, &cc->kreg->cwc)); cmn_err(CE_NOTE," cc_intr: cc->kreg->cser = 0x%x \n", ddi_get16(cc->kreg_han dle, &cc->kreg->cser)); */ : /* uio = cc->uio; cmn_err(CE_NOTE," cc_intr: 0x%x %d %d %d %d %d", uio->uio_iov->iov_base, uio->uio_iov->iov_len, uio->uio_iovcnt, uio->uio_resid, uio->uio_segflg, uio->uio_offset); */ : /* cmn_err(CE_NOTE," cc_intr: cc->dma_cookie.dmac_address = 0x%x \n", cc->dma_c ookie.dmac_address); copyin((caddr_t)cc->dma_cookie.dmac_address, (caddr_t)cc->data_area, 10* sizeof(u_short)); cmn_err(CE_NOTE," cc_intr: contents of cc->dma_cookie.dmac_address =0x%x , 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_area[0],cc-> data_area[1],cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->data_area[5] ,cc->data_area[6],cc->data_area[7],cc->data_area[8],cc->data_area[9]); cmn_err(CE_NOTE," cc_intr: cc->kreg->maclo = 0x%x \n", ddi_get16(cc->kreg_ha ndle, &cc->kreg->maclo)); cmn_err(CE_NOTE," cc_intr: cc->kreg->machi = 0x%x \n", ddi_get16(cc->kreg_ha ndle, &cc->kreg->machi)); */ : /* copyin((caddr_t)uio->uio_iov->iov_base, (caddr_t)cc->data_area, 10*sizeo f(u_short)); cmn_err(CE_NOTE," cc_intr: contents of uio->uio_iov->iov_base =0x%x, 0x% x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_area[0],cc->data_ area[1],cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->data_area[5],cc-> data_area[6],cc->data_area[7],cc->data_area[8],cc->data_area[9]); */ : /* cmn_err(CE_NOTE," cc_intr: CC_INT_LAM: step02."); */ : /* cmn_err(CE_NOTE," cc_intr: CC_INT_DONE: step02."); */ : /* cmn_err(CE_NOTE," cc_intr: CC_INT_EMPTY: step02."); */ : /* cmn_err(CE_NOTE," cc_intr: CC_INT_ABORT: step02."); */ : /* cmn_err(CE_NOTE," cc_intr: size of ddi_get16(cc->kreg_handle, &cc->kreg->csr) is %lu bytes\n", sizeof(ddi_get16(cc->kreg_handle, &cc->kreg->csr))); cmn_err(CE_NOTE," cc_intr: size of CC_DONE is %lu bytes\n", sizeof(CC_DONE)); */ : /* cmn_err(CE_NOTE," cc_intr: freeze check: step01."); */ : /* cmn_err(CE_NOTE," cc_intr: exit intrrupt: cc->kreg->csr = 0x%x\n", cc->kreg- >csr); cmn_err(CE_NOTE," cc_intr: cc->kreg->mtc(wc) = 0x%x \n", ddi_get16(cc->kreg_ handle, &cc->kreg->mtc)); */ : static int cc_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cred_p, int *rval_p ) /* E.Inoue cc_ioctl(dev_t dev, int cmd, int arg, int flag, cred_t *cred_p, int *rval_p) end */ { /* register struct cc_device *cc = &ccdevice[0]; */ register struct cc_device *cc; : /* cmn_err(CE_NOTE," cc_ioctl: debug step02. cv_wait_sig() == 0"); */ : static int cc_strategy(struct buf *bp) { /* register struct cc_device *cc = &ccdevice[0]; */ register struct cc_device *cc; : /* cmn_err(CE_NOTE," cc_strategy: mode = 0x%x \n", mode); cmn_err(CE_NOTE," cc_strategy: naf = 0x%x \n", naf); cmn_err(CE_NOTE," cc_strategy: wc = 0x%x \n", wc); */ : /* cmn_err(CE_NOTE," cc_strategy: cc->ccount = 0x%x \n", cc->ccount); cmn_err(CE_NOTE," cc_strategy: size of cc->dma_cookie.dmac_address is %lu byt es\n", sizeof(cc->dma_cookie.dmac_address)); cmn_err(CE_NOTE," cc_strategy: size of cc->dma_cookie.dmac_size is %lu bytes\ n", sizeof(cc->dma_cookie.dmac_size)); cmn_err(CE_NOTE," cc_strategy: size of dma_addr = %lu bytes \n", sizeof(dma_ addr)); */ : /* cmn_err(CE_NOTE," cc_strategy: contents of dma_addr = 0x%x \n", dma_addr); cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_address = 0x% x \n", cc->dma_cookie.dmac_address); cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_laddress = 0x %x \n", cc->dma_cookie.dmac_laddress); cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_size = 0x%x \ n", cc->dma_cookie.dmac_size); */ : /* cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_address = 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_area[0],cc->data_area[1],cc->dat a_area[2],cc->data_area[3],cc->data_area[4],cc->data_area[5]); */ : /* cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cmr)); ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT); */ : /* cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->mtc = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->mtc)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cwc = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->cwc)); */ : /* cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->maclo = 0x%x \n", ddi_get16(c c->kreg_handle, &cc->kreg->maclo)); cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->machi = 0x%x \n", ddi_get16(c c->kreg_handle, &cc->kreg->machi)); */ : /* cmn_err(CE_NOTE," cc_strategy: write: cc->kreg->maclo = 0x%x \n", ddi_get16( cc->kreg_handle, &cc->kreg->maclo)); cmn_err(CE_NOTE," cc_strategy: write: cc->kreg->machi = 0x%x \n", ddi_get16( cc->kreg_handle, &cc->kreg->machi)); */ : static int camac_b(int unit, u_short mode, u_short naf, int len, int *retlen) { register struct cc_device *cc; : /* cmn_err(CE_NOTE," in: 0x%x %d %d %d %d %d", uio->uio_iov->iov_base, uio->uio_iov->iov_len, uio->uio_iovcnt, uio->uio_resid, uio->uio_segflg, uio->uio_loffset); */ : /* cmn_err(CE_NOTE," camac_b: read: call physio --- uio = 0x%x \n", uio); */ : /* cmn_err(CE_NOTE," camac_b: read: cc->kreg->csr = 0x%x\n", cc->kreg->csr) ; */ : /* cmn_err(CE_NOTE," camac_b: write: call physio --- uio = 0x%x \n", uio); */ : /* cmn_err(CE_NOTE," camac_b: write: cc->kreg->csr = 0x%x\n", cc->kreg->csr ); */ : /* cmn_err(CE_NOTE," camac_b: cc->len = 0x%x, cc->k->mtc = 0x%x\n", cc->len , ddi_get16(cc->kreg_handle, &cc->kreg->mtc)); */ : /* cmn_err(CE_NOTE,"out: %d %d %d %d %d", uio->uio_iov->iov_len, uio->uio_iovcnt, uio->uio_resid, uio->uio_segflg, uio->uio_loffset); */ : onl50t[45]% onl50t[45]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o cc64.o onl50t[46]% ls -l cc64* -rw-r--r-- 1 inoue kek 50000 Nov 20 16:58 cc64 -rw-r--r-- 1 inoue kek 109627 Nov 20 16:57 cc64.c -rw-r--r-- 1 inoue kek 106493 Nov 7 17:23 cc64.c-bak onl50t[47]% ok. 正常にコンパイルできた。 (4). ライブラリファイルの修正 onl50t[58]% vi camlib.c : CDMAW(mode, naf, buf, len, retlen, err) int mode, naf, len, *retlen, *err; u_short *buf; { register int status; : /* printf("*buf = 0x%x, *(buf+1) = 0x%x, *(buf+2) = 0x%x, *(buf+3) = 0x%x\n", * buf, *(buf+1), *(buf+2), *(buf+3)); */ : /* printf("*buf = 0x%x, *(buf+1) = 0x%x, *(buf+2) = 0x%x, *(buf+3) = 0x%x\n", * buf, *(buf+1), *(buf+2), *(buf+3)); */ : onl50t[59]% onl50t[62]% make cc -xarch=v9 -O -c camlib.c -o camlib.o -I. rm -f libcamac.a ar rcv libcamac.a camlib.o forlib.o a - camlib.o a - forlib.o ar: writing libcamac.a onl50t[63]% ls -l camlib* -rw-r--r-- 1 inoue kek 9984 Nov 20 16:59 camlib.c -rw-r--r-- 1 inoue kek 9740 Jul 16 1999 camlib.c-org -rw-r--r-- 1 inoue kek 1415 Jul 16 1999 camlib.h -rw-r--r-- 1 inoue kek 23104 Nov 20 16:59 camlib.o onl50t[64]% ok. 正常にコンパイルできた。 (5). 例題ファイルの修正 例題プログラムは修正した個所はないので、ここでの作業は必要ない。 onl50t[65]% touch cam1.c onl50t[66]% touch cam2.f onl50t[67]% touch cam3.c onl50t[68]% make 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[69]% (6). cc.cファイル、ライブラリファイル、例題ファイルの実行 (6-1). 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# (6-2). 例題プログラムの実行 (6-2-1). cam1、シングル・アクション 24ビット camac read/write の実行 onl50t[69]% pwd /export/home/onl50t/inoue/CAMAC/FORCE-50T-sol7 onl50t[70]% 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[71]% Nov 22 10:38:53 onl50t unix: CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) onl50t[71]% 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[72]% onl50t[72]% ok. デバッグ用の出力文なしの状態で、cam1、シングル・アクション 24ビット camac read/write は正常に実行できた。 (6-2-2). cam3、camac LAM割り込み処理の実行 onl50t[72]% 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[73]% onl50t[73]% 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[74]% onl50t[74]% 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[75]% ok. デバッグ用の出力文なしの状態で、cam3、camac LAM割り込み処理は timeout処理も含めて正常に実行できた。 (6-2-3). cam2プログラムの実行 (6-2-3A). cam2、ブロック転送 16ビット read/write の実行 onl50t[75]% 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[76]% onl50t[76]% cam2 Input transfer mode (1:word 2:long word) >1 Input loop >5 Input mode (0:QSTOP 1:QIGNORE 2:QREPEAT 3:QSCAN) >1 Input data counts >5 Input n a f >3 0 16 Input data >6578 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 6578 0x 19B2(Hex) Data( 2)= 6578 0x 19B2(Hex) Data( 3)= 6578 0x 19B2(Hex) Data( 4)= 6578 0x 19B2(Hex) Data( 5)= 6578 0x 19B2(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 6578 0x 19B2(Hex) Data( 2)= 6578 0x 19B2(Hex) Data( 3)= 6578 0x 19B2(Hex) Data( 4)= 6578 0x 19B2(Hex) Data( 5)= 6578 0x 19B2(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 16 Input data >777 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 777 0x 309(Hex) Data( 2)= 777 0x 309(Hex) Data( 3)= 777 0x 309(Hex) Data( 4)= 777 0x 309(Hex) Data( 5)= 777 0x 309(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 16 Input data >8888 MODE=1 N= 3 A= 0 F=16 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 8888 0x 22B8(Hex) Data( 2)= 8888 0x 22B8(Hex) Data( 3)= 8888 0x 22B8(Hex) Data( 4)= 8888 0x 22B8(Hex) Data( 5)= 8888 0x 22B8(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Input n a f >3 0 0 MODE=1 N= 3 A= 0 F= 0 len= 5 lenr= 5 error= 0(Hex) Data( 1)= 8888 0x 22B8(Hex) Data( 2)= 8888 0x 22B8(Hex) Data( 3)= 8888 0x 22B8(Hex) Data( 4)= 8888 0x 22B8(Hex) Data( 5)= 8888 0x 22B8(Hex) Data( 6)= 0 0x 0(Hex) Data( 7)= 0 0x 0(Hex) Data( 8)= 0 0x 0(Hex) Data( 9)= 0 0x 0(Hex) Data(10)= 0 0x 0(Hex) Note: Nonstandard floating-point mode enabled See the Numerical Computation Guide, ieee_sun(3M) onl50t[77]% ok. デバッグ用の出力文なしの状態で、cam2、ブロック転送 16ビット read/write は正常に実行できた。 (6-2-3B). cam2、ブロック転送 24ビット read/write の実行 onl50t[77]% 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[78]% onl50t[78]% 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[79]% ok. デバッグ用の出力文なしの状態で、cam2、ブロック転送 24ビット read/write は正常に実行できた。 ---xxxx ここまでやった(継続中) --- (6). 項目タイトル (6-1). サブ項目タイトル (6-1-1). サブサブ項目タイトル