July 1,1997 FORCE CPU-5V、Solaris 2.5用 ccドライバ・キットの作成 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/onl5v4-sol2.5/kit.txt) (ftp://onl5v4.kek.jp/export/home/onl5v4/inoue/CAMAC/Log/ debug-memo/kit.log) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 ( Monday, June 16,1997 --- camac.sol2/READMEの追加の修正をした) ( Tuesday, July 1,1997 --- camac.sol2/READMEの追加の修正をした) (1). はじめに FORCE CPU-5V、Solaris 2.5でccドライバのデバッグを行なった。 デバッグの後、次の動作が正常に実行できることを確認した。 (A). camacシングル・アクション 24ビットread/write。 (B). camac LAM 割り込み処理。 (C). camacブロック転送 16ビットread/write。 (D). camacブロック転送 24ビットread/write。 そこで、ccドライバ・キットを作り直して、ユーザに公開することにした。 この文書は、ccドライバ・キット作成時の記録である。 (2). キット作成の元にしたもの キット作りの元にしたものは、今回、デバッグに使用した各ファイルである。 デバッグ時に使用した各ファイルは、以下のディレクトリの下にある。 /usr/local/camac/camac.sol2.debug このディレクトリを、以下のキット作成用ディレクトリにコピーして、新たな キットを作ることにした。 /usr/local/camac/FORCE-5V-sol2.5 (3). キットの作成 キット作りは以下の手順で行なう。 まず、今回のデバッグの元にしたキット、 ftp://onlnews.kek.jp/pub/kek/camac/camac.sol2-1.30.tar.gz に含まれるファイルの一覧を確認する。 次に、これらのファイルに対して デバッグ後のものを割り当てる。 そして最後に、デバッグ時に各ファイル に書き加えた不必要な記述を削除する。 (A). 今回のデバッグの元にしたキット 今回のデバッグの元にしたキットに含まれていた各ファイルを確認する。 onl5v4[52]% tar tvf camac.sol2-1.30.tar drwxr-xr-x 112/100 0 Dec 13 15:27 1994 camac.sol2/ -rw-r--r-- 112/100 1805 Dec 13 09:38 1994 camac.sol2/Makefile -rw-r--r-- 112/100 2451 Dec 13 09:38 1994 camac.sol2/README -rw-r--r-- 112/100 1170 Dec 13 09:38 1994 camac.sol2/cam1.c -rw-r--r-- 112/100 2056 Dec 13 09:38 1994 camac.sol2/cam3.c -rw-r--r-- 112/100 9674 Dec 13 09:38 1994 camac.sol2/camlib.c -rw-r--r-- 112/100 1415 Dec 13 09:38 1994 camac.sol2/camlib.h -rw-r--r-- 112/100 62572 Dec 13 09:38 1994 camac.sol2/cc.c -rw-r--r-- 112/100 293 Dec 13 09:38 1994 camac.sol2/cc.conf -rw-r--r-- 112/100 2748 Dec 13 09:38 1994 camac.sol2/cc.h -rw-r--r-- 112/100 2288 Dec 13 09:38 1994 camac.sol2/cc_common.h -rw-r--r-- 112/100 876 Dec 13 09:38 1994 camac.sol2/cc_config.h -rw-r--r-- 112/100 3289 Dec 13 09:38 1994 camac.sol2/forlib.c -rw-r--r-- 112/100 4058 Dec 13 09:38 1994 camac.sol2/k2917.h drwxr-xr-x 112/100 0 Dec 13 11:29 1994 camac.sol2/script/ -rwxr-xr-x 112/100 234 Dec 13 09:38 1994 camac.sol2/script/cc_build.sh -rwxr-xr-x 112/100 611 Dec 13 09:38 1994 camac.sol2/script/cc_load.sh -rwxr-xr-x 112/100 270 Dec 13 09:38 1994 camac.sol2/script/cc_unload.sh -rwxr-xr-x 112/100 233 Dec 13 09:38 1994 camac.sol2/script/cc_build.gcc.sh -rwxr-xr-x 112/100 450 Dec 13 09:38 1994 camac.sol2/script/cc_link.sh -rw-r--r-- 112/100 37 Dec 13 09:38 1994 camac.sol2/script/awk2.txt -rw-r--r-- 112/100 66 Dec 13 09:38 1994 camac.sol2/script/awk1.txt onl5v4[53]% (B). 各ファイルの配置 上で確認した各ファイル対して、デバッグ後のものを割り当てる。 (a). camac.sol2/Makefile /usr/local/camac/camac.sol2.debug/Makefile /usr/local/camac/camac.sol2.debug/Makefile-Mar.25.97 /usr/local/camac/camac.sol2.debug/Makefile.cam2 /usr/local/camac/camac.sol2.debug/Makefile.org これらの内 /usr/local/camac/camac.sol2.debug/Makefile を FORCE-5V-sol2.5/Makefile に割り当てた。 (b). camac.sol2/README /usr/local/camac/camac.sol2.debug/README /usr/local/camac/camac.sol2.debug/README.org これらの内 /usr/local/camac/camac.sol2.debug/README を FORCE-5V-sol2.5/README に割り当てた。 (c). camac.sol2/cam1.c /usr/local/camac/camac.sol2.debug/cam1-16.c /usr/local/camac/camac.sol2.debug/cam1-reg_dump.c /usr/local/camac/camac.sol2.debug/cam1-reset.c /usr/local/camac/camac.sol2.debug/cam1.c /usr/local/camac/camac.sol2.debug/cam1.c.org /usr/local/camac/camac.sol2.debug/cam1.nm これらの内 を FORCE-5V-sol2.5/cam1.c に割り当てた。 (d). camac.sol2/cam2.f /usr/local/camac/camac.sol2.debug/cam2.f /usr/local/camac/camac.sol2.debug/cam2.f.org /usr/local/camac/camac.sol2.debug/cam2new-reset.f /usr/local/camac/camac.sol2.debug/cam2new.f これらの内 /usr/local/camac/camac.sol2.debug/cam2new.f を FORCE-5V-sol2.5/cam2.f に割り当てた。 (e). camac.sol2/cam3.c /usr/local/camac/camac.sol2.debug/cam3-reset.c /usr/local/camac/camac.sol2.debug/cam3.c /usr/local/camac/camac.sol2.debug/cam3.c.org これらの内 /usr/local/camac/camac.sol2.debug/cam3.c を FORCE-5V-sol2.5/cam3.c に割り当てた。 (f). camac.sol2/camlib.c /usr/local/camac/camac.sol2.debug/camlib.c /usr/local/camac/camac.sol2.debug/camlib.c-Feb-10.97 これらの内 を FORCE-5V-sol2.5/camlib.c に割り当てた。 (g). camac.sol2/camlib.h /usr/local/camac/camac.sol2.debug/camlib.h を FORCE-5V-sol2.5/camlib.h に割り当てた。 (h). camac.sol2/cc.c /usr/local/camac/camac.sol2.debug/cc.c /usr/local/camac/camac.sol2.debug/cc.c-16bit.DMA.ok /usr/local/camac/camac.sol2.debug/cc.c-24bit.DMA.ok /usr/local/camac/camac.sol2.debug/cc.c-Feb-10.97 /usr/local/camac/camac.sol2.debug/cc.c-Feb-5.97 /usr/local/camac/camac.sol2.debug/cc.c-debug.ok /usr/local/camac/camac.sol2.debug/cc.c-force /usr/local/camac/camac.sol2.debug/cc.c-sol2.5 /usr/local/camac/camac.sol2.debug/cc.c.ORG /usr/local/camac/camac.sol2.debug/cc.c.org これらの内 /usr/local/camac/camac.sol2.debug/cc.c を FORCE-5V-sol2.5/cc.c に割り当てた。 (i). camac.sol2/cc.conf /usr/local/camac/camac.sol2.debug/cc.conf /usr/local/camac/camac.sol2.debug/cc.conf.bak /usr/local/camac/camac.sol2.debug/cc.conf.org これらの内 を FORCE-5V-sol2.5/cc.conf に割り当てた。 (j). camac.sol2/cc.h /usr/local/camac/camac.sol2.debug/cc.h を FORCE-5V-sol2.5/cc.h に割り当てた。 (k). camac.sol2/cc_common.h /usr/local/camac/camac.sol2.debug/cc_common.h を FORCE-5V-sol2.5/cc_common.h に割り当てた。 (l). camac.sol2/cc_config.h /usr/local/camac/camac.sol2.debug/cc_config.h を FORCE-5V-sol2.5/cc_config.h に割り当てた。 (m). camac.sol2/forlib.c /usr/local/camac/camac.sol2.debug/forlib.c を FORCE-5V-sol2.5/forlib.c に割り当てた。 (n). camac.sol2/k2917.h /usr/local/camac/camac.sol2.debug/k2917.h を FORCE-5V-sol2.5/k2917.h に割り当てた。 (o). camac.sol2/script/cc_build.sh /usr/local/camac/camac.sol2.debug/script/cc_build.sh /usr/local/camac/camac.sol2.debug/script/cc_build.sh.force /usr/local/camac/camac.sol2.debug/script/cc_build.sh.org これらの内 /usr/local/camac/camac.sol2.debug/script/cc_build.sh を FORCE-5V-sol2.5/script/cc_build.sh に割り当てた。 (p). camac.sol2/script/cc_load.sh /usr/local/camac/camac.sol2.debug/script/cc_load.sh を FORCE-5V-sol2.5/script/cc_load.sh に割り当てた。 (q). camac.sol2/script/cc_unload.sh /usr/local/camac/camac.sol2.debug/script/cc_unload.sh を FORCE-5V-sol2.5/script/cc_unload.sh に割り当てた。 (r). camac.sol2/script/cc_build.gcc.sh /usr/local/camac/camac.sol2.debug/script/cc_build.gcc.sh を FORCE-5V-sol2.5/script/cc_build.gcc.sh に割り当てた。 (s). camac.sol2/script/cc_link.sh /usr/local/camac/camac.sol2.debug/script/cc_link.sh /usr/local/camac/camac.sol2.debug/script/cc_link.sh.inoue /usr/local/camac/camac.sol2.debug/script/cc_link.sh.org これらの内 /usr/local/camac/camac.sol2.debug/script/cc_link.sh を FORCE-5V-sol2.5/script/cc_link.sh に割り当てた。 (t). camac.sol2/script/awk1.txt /usr/local/camac/camac.sol2.debug/script/awk1.txt を FORCE-5V-sol2.5/script/awk1.txt に割り当てた。 (u). camac.sol2/script/awk2.txt /usr/local/camac/camac.sol2.debug/script/awk2.txt を FORCE-5V-sol2.5/script/awk2.txt に割り当てた。 (C). 各ファイル中の不必要な記述を削除する。 デバッグ時に各ファイルに書き加えた不必要な記述を削除する。 (a). FORCE-5V-sol2.5/Makefile ファイルの整備 (a-1). ヘッダ部 変更した旨の記述を追加した。 : # * 5-Dec-1994 Y.Takeuchi under development version for UNIDAQ2.3 * # * 23-May-1997 E.Inoue modify for addition of cam2 test program * <- 追加 : (a-2). 定義部 # by E.Inoue <-- 削除 FC = f77 FFLAGS = -fast -O3 -u # <-- 削除 (a-3). all 事項の部 cam2 を make する旨を追加した。 #all : cc libcamac.a cam1 cam3 <-- 削除 # by E.Inoue <-- 削除 #all : cc libcamac.a cam1 cam3 cam2 cam2new cam1-reset cam2new-reset cam3-res et <-- 削除 all : cc libcamac.a cam1 cam3 cam2 cam2new cam1-reset cam3-reset <-- 削除 # <-- 削除 all : cc libcamac.a cam1 cam2 cam3 <-- 追加 (a-4). for examples部 cam2 のコンパイルを指示する記述を追加。 一方、デバッグ時に 使用したコンパイルの指示の記述のうち不必要なものを削除した。 cam1 : cam1.c $(CC) $(CFLAGS) cam1.c -o cam1 $(CLIB) cam2 : cam2.f <-- 追加 $(FC) $(FFLAGS) cam2.f -o cam2 $(CLIB) <-- 追加 cam3 : cam3.c $(CC) $(CFLAGS) cam3.c -o cam3 $(CLIB) cam2new : cam2new.f <-- 削除 $(FC) $(FFLAGS) cam2new.f -o cam2new $(CLIB) <-- 削除 cam1-reset : cam1-reset.c <-- 削除 $(CC) $(CFLAGS) cam1-reset.c -o cam1-reset $(CLIB) <-- 削除 cam2new-reset : cam2new-reset.f <-- 削除 $(FC) $(FFLAGS) cam2new-reset.f -o cam2new-reset $(CLIB) <-- 削除 cam3-reset : cam3-reset.c <-- 削除 $(CC) $(CFLAGS) cam3-reset.c -o cam3-reset $(CLIB) <-- 削除 (a-5). clean 事項の部 make clean 時に削除するファイルに cam2 を追加した。 clean: \rm -f cc *.o libcamac.a cam1 cam2 cam3 *~ core (b). FORCE-5V-sol2.5/README ファイルの整備 (b-1). ヘッダ部 o リリース番号、日付けを修正した。 CAMAC Device Driver on Soraris2.x Release 1.30-5V 1-July-1997 ↑ ↑ 変更 変更 o 変更した旨の記述を追加した。 Yasuo TAKEUCHI (Tokyo Inst. of Technology) 23-May-1997 modified by Eiji Inoue (KEK) <--- 追加 (b-2). "UNDER DEVELOPMENT VERSION"項目のタイトル部 o この項目タイトル部を次のように書き換えた。 ***** FORCE SPARC CPU-5V VERSION ***** <--- 修正 o "UNDER DEVELOPMENT VERSION"項目の内容部 次のように書き換えた。 <--- 以下、修正 This distribution is a FORCE SPARC CPU-5V version, and it contains a CAMAC device driver, a CAMAC library, and three sample programs for the SPARC SPARC CPU-5V. The CAMAC functions for SPARC/Solaris2 is fully compatible with those for SPARC/SunOS4, and almost compatible with the CAMAC drivers on some machines developed at KEK. The example programs and the CAMASM/CAMEXE in "camac.sparc-1.22d.tar.gz" can be probably used. It is available at the following URLs. http://www-sk.icrr.u-tokyo.ac.jp/~takeuchi/camac/ ftp://online.kek.jp/pub/kek/camac/ Any comment about the CAMAC driver on SPARC is welcome. Please send it via E-mail to "eiji.inoue@kek.jp" and/or "takeuchi@icrr.u-tokyo.ac.jp". (b-3). "RESTRICTION"項目部 o この項はすべて削除した。 <--- 削除 (b-4). "INSTALLTION" 項目部 o 項目 0. の記述内容を修正した。 (0.) connect SPARC CPU-5V, K2917 and K3922, and then install <--- 修正 the VME device driver according to its manual. <--- 修正 o インストール手順に項目を追加したの伴って、項目番号を付け 直した。 さらに項目番号をカッコでくくった。 : (1.) check Makefile and compile. make (2.) Reboot your system <--- 項目番号を追加 shutdown : boot -r (3.) copy and load CAMAC device driver. <--- これ以降の項目番号を変更した su make load exit (4.) execute sample programs. cam1 cam3 (5.) To remove the CAMAC device driver, type as follows. su make unload exit : (b-5). "OTHER INFOMATION" 項目部 o 記述を追加した。 Hardware & Software: (our environment) FORCE Computers Inc. SPARC CPU-5V Solaris2.5 VME driver V2.0.2 <--- 追加 Kinetic Systems Corporation K3922-Z1B (CAMAC CC) K2917-Z1A (VME-CAMAC interface) History: v1.30-5V Modified Release v1.30 for FORCE SPARC CPU-5V. <--- 追加 The CAMAC single action, LAM interruption, block transfer, work well. <--- 追加 ^--- 追加 v1.30 test release. under porting from the CAMAC driver for SPARC/SunOS4 v1.22d DMA dosen't work well. ============================================================================== 竹内 康雄 東京大学宇宙線研究所 神岡宇宙素粒子研究施設 <--- 追加 Yasuo Takeuchi Kamioka Observatory, ICRR, Univ. of Tokyo <--- 追加 TEL:0578-5-9607 FAX:0578-5-2121 E-mail:takeuchi@icrr.u-tokyo.ac.jp <--追加 URL: http://www-sk.icrr.u-tokyo.ac.jp/~takeuchi/ <--- 追加 井上 栄二 高エネルギー加速器研究機構 素粒子原子核研究所 <--- 追加 Eiji Inoue High Energy Accelerator Research Organization, <--- 追加 Institute of Particle and Nuclear Studies <--- 追加 TEL:0298-64-1171 FAX:0298-64-2580 E-mail:eiji.inoue@kek.jp <--- 追加 URL: http://www-online.kek.jp/~inoue/ <--- 追加 ============================================================================== (c). FORCE-5V-sol2.5/cam1.c ファイルの整備 cam1.c ファイルの内容はオリジナル(camac.sol2-1.30)のままで、 ここでは何も手を加えていない。 (d). FORCE-5V-sol2.5/cam2.f ファイルの整備 (d-1). コメント部 ファイルの先頭のコメント部に以下の記述を追加した。 : * Modified: * <-- 追加 * 22-May-1997 E.Inoue set up of data * <-- 追加 : (e). FORCE-5V-sol2.5/cam3.c ファイルの整備 (e-1). ヘッダ部 デバッグ時にヘッダ部の変数定義を変更した。 コメント・アウト してあった文を削除した。 /*#define DEFN 11 */ <-------- 削除 #define DEFN 3 (e-2). loop 部 本文のloop 部に、デバッグ用に入れてあった printf 文を 削除した。 /******** * loop * ********/ printf("\n\n*** Now waiting LAM ... N=%d Loop=%d Timeout=%d sec\n\n", n, loop, timeo / 100); : /* by E.Inoue */ <-- 削除 /* printf("call CAMAC(nafclrlam, &dat, &q, &x)\n"); */ <-- 削除 /* */ <-- 削除 CAMAC(nafclrlam, &dat, &q, &x); /* clear LAM */ (f). FORCE-5V-sol2.5/camlib.c ファイルの整備 (f-1). ヘッダのコメント部 コメントを追加した。 : * 3-SEP-1993 Y.Takeuchi fixed bug at CAMACW() * * 21-May-1997 E.Inoue delete #include * <-- 追加 * #include * <-- 追加 ********************************************************************/ (f-2). ヘッダ・ファイル部 デバッグ時に、camlib.c プログラム中で使われていないヘッダ・ ファイルをコメント・アウトしておいた。 この部分を削除した。 を削除した。 #include : /*#include #include */ <--------- この2行はcamlib.c ファイルから削除 : #include "cc_config.h" (f-3). CAMOPN()部 デバッグ用に入れてあった printf 文を削除した。 CAMOPN() { /* by E.Inoue */ <-- 削除 /* printf("camlib: debug: enter CAMOPN()\n"); */ <-- 削除 /* */ <-- 削除 if ((cc_path = open("/dev/cc", O_RDWR)) == -1) /* by E.Inoue */ <-- 削除 { <-- 削除 /* printf("camlib: debug: CAMOPN() error return\n"); */ <-- 削除 return ENODEV; } <-- 削除 file_pointer = 0; /* by E.Inoue */ <-- 削除 /* printf("camlib: debug: CAMOPN() normal return\n"); */ <-- 削除 /* */ <-- 削除 return 0; } (f-4). CSETCR(crate)部 CSETCR(crate) int crate; { /* by E.Inoue */ <-- 削除 /* printf("camlib: debug: CSETCR() normal return\n"); */ <-- 削除 /* */ <-- 削除 return ioctl(cc_path, CCIOC_SET_CRATE, &crate); } (f-5). CGENZ()部 : i |= 1; /* by E.Inoue */ <-- 削除 /* printf("camlib: debug: CGENZ() normal return\n"); */ <-- 削除 /* */ <-- 削除 return CAMAC(NAF(30, 0, 17), &i, &q, &x); } (f-6). CGENC()部 : i |= 2; /* by E.Inoue */ <-- 削除 /* printf("camlib: debug: CGENC() normal return\n"); */ <-- 削除 /* */ <-- 削除 return CAMAC(NAF(30, 0, 17), &i, &q, &x); } (f-7). CREMI()部 : i &= ~4; /* by E.Inoue */ <-- 削除 /* printf("camlib: debug: CREMI() normal return\n"); */ <-- 削除 /* */ <-- 削除 return CAMAC(NAF(30, 0, 17), &i, &q, &x); } (g). FORCE-5V-sol2.5/camlib.h ファイルの整備 camlib.h ファイルの内容はオリジナル(camac.sol2-1.30)のままで、 ここでは何も手を加えていない。 (h). FORCE-5V-sol2.5/cc.c ファイルの整備 (h-1). ヘッダのコメント部 コメントを追加した。 : * 5-Dec-1994 Y.Takeuchi under development version (w/o DMA) * * 26-May-1997 E.Inoue FORCE SPARC CPU-5V version * <-- 追加 ********************************************************************/ : (h-2). ヘッダ・ファイル部 コメントアウトしてあるヘッダ・ファイルのインクルード文を削除。 : /* by E.Inoue */ <-- 削除 /* <-- 削除 #include <-- 削除 #include <-- 削除 #include <-- 削除 #include <-- 削除 #include <-- 削除 #include <-- 削除 #include <-- 削除 #include <-- 削除 #include <-- 削除 #include <-- 削除 */ <-- 削除 /* by E.Inoue */ <-- 削除 /*#include */ <-- 削除 /* <-- 削除 #include "sys_obpdefs.h" <-- 削除 #include <-- 削除 */ <-- 削除 : 注意. #include "sys_obpdefs.h" 文を削除したのに伴って、 /usr/local/camac/FORCE-5V-sol2.5/sys_obpdefs.h ファイル を削除した。 /usr/local/camac/FORCE-5V-sol2.5/sys_obpdefs.h <-- 削除 (h-3). デバイス・コンフィギュレーション部 コメントアウトしてある定義文を削除。 : /*static int cc_info(dev_info_t *, ddi_info_cmd_t , void *,void **); */ <-- 削除 static int cc_getinfo(dev_info_t *dip, ddi_info_cmd_t infocmd, void *arg, void **result); : (h-4). オート・コンフィギュレーション用のデータ・ストラクチャ部 コメントを付加した。 /************************************************************************** * Device driver ops vector. * * cb_ops - character/block entry points structure. <-- 追加 * When our driver is loaded or unloaded, the system calls our _init or <-- 追加 * _fini routine with a modlinkage structure. The modlinkage structure <-- 追加 * contains: <-- 追加 * <-- 追加 * modlinkage -> <-- 追加 * modldrv -> <-- 追加 * dev_ops -> <-- 追加 * cp_ops -> <-- 追加 * cp_ops contains the normal driver entry points and roughly equivalent<-- 追加 * to the cdevsw & bdevsw structures in previous releases. <-- 追加 * <-- 追加 * dev_ops - device operations structure. <-- 追加 * dev_ops contains, in addition to pointer to cb_ops, the routines <-- 追加 * that support loading and unloading our river. <-- 追加 **************************************************************************/ (h-5). cc_cb_ops ストラクチャ定義部 コメントを追加した。 : static struct cb_ops cc_cb_ops = { : nodev, /* print (no print routine) */ <-- 追加 nodev, /* dump (no dump routine) */ <-- 追加 nodev, /* read (no read routine; write-only device */<-- 追加 : nodev, /* devmap (no devmap routine) */ <-- 追加 nodev, /* mmap (no mmap routine) */ <-- 追加 nodev, /* segmap (no segmap routine) */ <-- 追加 : (h-6). cc_ops ストラクチャ定義部 コメントを追加した。 : struct dev_ops cc_ops = { : nodev, /* reset (device reset routine) */ <-- 追加 : (h-7). modlinkage ストラクチャ定義部 デバッグ時に入れてあったコメントを削除した。 : /* be check from here !! (by E.Inoue) */ <-- 削除 : (h-8). ローダブル・インターフェース部 コメントを追加した。 : * _init, _info, and _fini support loading and unloading the driver. <-- 追加 ***********************************************************************/ int _init(void) { : (h-9). ローダブル・インターフェース部 デバッグ時に入れてあった文を削除した。 int _init(void) { register int error; <-- 削除 /* <-- 削除 if((ddi_soft_ste_init(&state_head,sizeof(cc) <-- 削除 if((error=mod_install(&modlinkage)) != 0) <-- 削除 ddi_soft_state_fini(&state_head); <-- 削除 return(error); <-- 削除 */ <-- 削除 return (mod_install(&modlinkage)); } (h-10). デバイス・コンフィギュレーション、cc_identify()部 デバッグ時に入れてあったuprintf文を削除した。 static int cc_identify(dev_info_t *dip) { char *name = ddi_get_name(dip); /* by E.Inoue */ <-- 削除 /* uprintf("cc_identify: debug: enter cc_identify\n"); */ <-- 削除 if (strcmp(name, "cc") == 0) { /* by E.Inoue */ <-- 削除 /* uprintf("cc_identify: debug: succeeded\n"); */ <-- 削除 return (DDI_IDENTIFIED); } else { /* by E.Inoue */ <-- 削除 /* uprintf("cc_identify: debug: failed\n"); */ <-- 削除 return (DDI_NOT_IDENTIFIED); } (h-11). デバイス・コンフィギュレーション、cc_probe()部 デバッグ時に入れてあったuprintf文を削除した。 cc_probe(dev_info_t *dip) { : /* by E.Inoue */ <-- 削除 /* uprintf("cc_probe: debug: enter cc_probe\n"); */ <-- 削除 rp = ddi_rnumber_to_regspec(dip, 0); : /* by E.Inoue */ <-- 削除 /* uprintf("cc_probe: debug: succeeded\n"); */ <-- 削除 /* return */ printf("%s\n",CC_START_MESSAGE); : (h-12). デバイス・コンフィギュレーション、cc_attach()部 デバッグ時に入れてあったuprintf文を削除した。 : cc_attach(dev_info_t *dip, ddi_attach_cmd_t cmd) { : /* by E.Inoue */ <-- 削除 /* uprintf("cc_attach: debug: enter cc_attach\n"); */ <-- 削除 /* save status to log file */ : (h-13). デバイス・コンフィギュレーション、cc_detach()部 デバッグ時に入れてあったuprintf文を削除した。 : cc_detach(dev_info_t *dip, ddi_detach_cmd_t cmd) { : /* by E.Inoue */ <-- 削除 /* uprintf("cc_detach: debug: enter cc_detach\n"); */ <-- 削除 /* printf("cc_detach: dettaching the CAMAC device driver...\n"); */ <-- 削除 /* deallocate resources from attach */ : (h-14). デバイス・コンフィギュレーション、cc_getinfo()部 デバッグ時に入れてあったuprintf文を削除した。 : cc_getinfo(dev_info_t *dip, ddi_info_cmd_t infocmd, void *arg, void **result) { : /* by E.Inoue */ <-- 削除 /* uprintf("cc_getinfo: debug: enter cc_getinfo\n"); */ <-- 削除 switch (infocmd) { : (h-15). デバイス・コンフィギュレーション、内部データ領域部 デバッグ時にコメント・アウトした部分を削除した。 : /* by E.Inoue */ <-- 削除 /*u_short intrvec = 0x00ff; */ <-- 削除 u_short intrvec = 0xff; : (h-16). デバイス・アクセス、cc_open()部 デバッグ時にコメント・アウトした部分を削除した。 デバッグ時に書き加えた "int dat;" の記述も必要なくなったので 削除した。 : cc_open(dev_t *devp, int flag, int otyp, cred_t *cred_p) { : /* by E.Inoue */ <-- 追加 register struct K_REG *k = cc->k; <-- 追加 /* */ <-- 追加 /* by E.Inoue */ <-- 削除 int dat; <-- 削除 /* */ <-- 削除 : /* by E.Inoue */ <-- 削除 /* uprintf("cc_open: debug: enter cc_open\n"); */ <-- 削除 if (cc->cc_busy == CC_BUSY) : /* by E.Inoue */ <-- 追加 k->csr = CC_RST; /* K2917 Reset */ <-- 追加 /* */ <-- 追加 : cc->k->abov = (u_short)intrvec; /* by E.Inoue */ <-- 削除 /* uprintf("cc_open: debug: uprintf cc->k->lamv = 0x%x\n", cc->k->lamv); */ ^-- 削除 /* */ <-- 削除 return 0; } (h-17). デバイス・アクセス、cc_write()部 デバッグ時にコメント・アウトした部分を削除した。 : sizeof(u_short)); /* by E.Inoue */ <-- 削除 /* uprintf("cc_write: debug: camac write: cc= 0x%x, mode= 0x%x, naf=0x%x\n", cc, mode, naf); <-- 削除 uprintf("cc_write: debug: camac write: cc->k->lamv = 0x%x\n", cc->k->lamv); ^-- 削除 */ <-- 削除 /* */ <-- 削除 camac_s(cc, mode, naf, data_area); : cc->len_udata_t = len = iov->iov_len / sizeof(u_short); /* by E.Inoue <-- 削除 uprintf("cc_write: CC_CMD_DOBLOCK : debug: mode = 0x%x, CC_BIT16 = 0x%x\ n", mode, CC_BIT16); <-- 削除 uprintf("cc_write: CC_CMD_DOBLOCK : debug: before :len = 0x%x\n", len); ^-- 削除 */ <-- 削除 if ((mode & CC_BIT16) == 0) len /= 2; /* by E.Inoue <-- 削除 uprintf("cc_write: CC_CMD_DOBLOCK : debug: after : len = 0x%x\n", len); ^-- 削除 */ <-- 削除 switch (naf & 0x0018) { : (h-18). デバイス・アクセス、cc_ioctl()部 デバッグ時にコメント・アウトした部分を削除した。 さらに、コードを追加した部分にコメントを付けた。 : cc_ioctl(dev_t dev, int cmd, int arg, int flag, cred_t *cred_p, int *rval_p) { : cc->cur_crate = *(int *)data; /* by E.Inoue */ <-- 削除 /* uprintf("cc_ioctl: CCIOC_SET_CRATE retrun: debug: cc->k->lamv = 0x%x\n", c c->k->lamv); <-- 削除 */ <-- 削除 /* */ <-- 削除 break; case CCIOC_WAIT_LAM : /* by E.Inoue */ <-- 削除 /* uprintf("cc_ioctl: CCIOC_WAIT_LAM enter: debug: uprintf cc->k->lamv = 0x%x \n", cc->k->lamv); <-- 削除 */ <-- 削除 /* */ <-- 削除 cc->interrupt = 0; : cc->timeout_id = timeout(cc_timeout, NULL, *(int *)data * hz); /* by E.Inoue */ <-- 削除 /* uprintf("cc_ioctl: CCIOC_WAIT_LAM: debug: uprintf cc->k->lamv = 0x%x\n", c c->k->lamv); <-- 削除 */ <-- 削除 /* */ <-- 削除 /* wait interrupt */ : camac_s(cc, CC_BIT16, NAF(30, 0, 17), &sdat); /* by E.Inoue */ <-- 削除 /* set interrupt registers of K2917 */ <-- 削除 /* <-- 削除 cc->k->lamc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <-- 削除 cc->k->donc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <-- 削除 cc->k->empc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <-- 削除 cc->k->aboc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <-- 削除 cc->k->lamv = (u_short)intrvec; <-- 削除 cc->k->donv = (u_short)intrvec; <-- 削除 cc->k->empv = (u_short)intrvec; <-- 削除 cc->k->abov = (u_short)intrvec; <-- 削除 */ <-- 削除 /* */ <-- 削除 break; : data[18] = k->csr; */ /* by E.Inoue from >>> */ <-- 削除 /* k->csr = CC_RST; */ <-- 削除 /* to <<< */ <-- 削除 break; case CCIOC_RESET : k->csr = CC_RST; /* by E.Inoue from >>> */ <-- 追加 /* set interrupt registers of K2917 */ <-- 追加 cc->k->lamc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <-- 追加 cc->k->donc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <-- 追加 cc->k->empc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <-- 追加 cc->k->aboc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <-- 追加 cc->k->lamv = (u_short)intrvec; <-- 追加 cc->k->donv = (u_short)intrvec; <-- 追加 cc->k->empv = (u_short)intrvec; <-- 追加 cc->k->abov = (u_short)intrvec; <-- 追加 /* to <<< */ <-- 追加 break; : ta[18] = k->csr; */ /* k->csr = CC_RST; */ <-- 追加 break; : (h-19). デバイス・アクセス、camac_s()部 デバッグ時にコメント・アウトした部分を削除した。 さらに、コードを追加した部分にコメントを付けた。 : camac_s(struct cc_device *cc, u_short mode, u_short naf, u_short *dat) { : cc->status = 0; /* by E.Inoue */ <-- 追加 /* uprintf("camac_s: debug: before RST cc->k->lamv = 0x%x\n", cc->k->lamv); ^-- 削除 */ <-- 削除 /* */ <-- 削除 /* k->csr = CC_RST; */ /* K2917 Reset */ <-- 追加 /* by E.Inoue */ <-- 削除 /* uprintf("camac_s: debug: after RST cc->k->lamv = 0x%x\n", cc->k->lamv); ^-- 削除 */ <-- 削除 /* */ <-- 削除 k->cma = CC_CMA_INIT; /* Initialize memory pointer */ : (h-20). デバイス・アクセス、cc_strategy()部 デバッグ時にコメント・アウトした部分を削除した。 : static int cc_strategy(struct buf *bp) { : register u_int flags; /* by E.Inoue <-- 削除 uprintf("cc_strategy: debug: naf = 0x%x\n", naf); <-- 削除 */ <-- 削除 /* check DMA mode and set flags */ : /* set up variables */ cc->bp = bp; dma_addr = cc->dma_cookie.dmac_address; /* count = cc->dma_cookie.dmac_size; */ /* <-- 追加 uprintf("count in 32bit=%d\n", cc->dma_cookie.dmac_size); */ <-- 追加 cc->retlen = 0; /* k->csr = CC_RST; */ /* K2917 Reset */ <-- 追加 if (cc->klist == CC_KLIST_NO) { k->cma = CC_CMA_INIT; /* Initialize memory pointer */ /* by E.Inoue <-- 削除 uprintf("cc_strategy: debug: mode = 0x%x\n", mode); <-- 削除 uprintf("cc_strategy: debug: cc->cur_crate = 0x%x\n", cc->cur_crate); ^-- 削除 uprintf("cc_strategy: debug: cc->len = 0x%x\n", cc->len); <-- 削除 uprintf("cc_strategy: debug: CC_HALT = 0x%x\n", CC_HALT); <-- 削除 */ <-- 削除 k->cmr = mode | (cc->cur_crate << 8); : (h-21). デバイス・アクセス、camac_b()部 デバッグ時にコメント・アウトした部分を削除した。 : camac_b(struct cc_device *cc, u_short mode, u_short naf, int len, int *retlen) { : cc->len = len; /* by E.Inoue <-- 削除 uprintf("camac_b: debug: "); <-- 削除 uprintf("before setting uio for DMA\n"); <-- 削除 uprintf("uio->uio_iov->iov_len = %d(dec), 0x%x\n", uio->uio_iov->iov_le n, uio->uio_iov->iov_len); <-- 削除 uprintf("uio->uio_iovcnt = %d(dec), 0x%x\n", uio->uio_iovcnt, uio->uio_i ovcnt); <-- 削除 uprintf("uio->uio_resid = %d(dec), 0x%x\n", uio->uio_resid, uio->uio_res id); <-- 削除 uprintf("uio->uio_segflg = %d(dec), 0x%x\n", uio->uio_segflg, uio->uio_s egflg); <-- 削除 uprintf("uio->uio_offset = %d(dec), 0x%x\n", uio->uio_offset, uio->uio_o ffset); <-- 削除 */ /* set uio for DMA */ : uio->uio_offset = 0; /* by E.Inoue <-- 削除 uprintf("camac_bedebug: "); <-- 削除 uprintf("after setting uio for DMA\n"); <-- 削除 */ <-- 削除 /* <-- 追加 uprintf(" in: %d %d %d %d %d\n", uio->uio_iov->iov_len, uio->uio_iovcnt, uio->uio_resid, uio->uio_segflg, uio->uio_offset); */ <-- 追加 : } /* <-- 追加 uprintf("out: %d %d %d %d %d\n", uio->uio_iov->iov_len, uio->uio_iovcnt, uio->uio_resid, uio->uio_segflg, uio->uio_offset); */ <-- 追加 /* Q-STOP mode or no error */ : (i). FORCE-5V-sol2.5/cc.conf ファイルの整備 cc.conf ファイルの内容はデバッグ時に修正した。 ここでは何も整備 する必要はない。 (j). FORCE-5V-sol2.5/cc.h ファイルの整備 cc.h ファイルの内容はオリジナル(camac.sol2-1.30)のままで、 ここでは何も手を加えていない。 (k). FORCE-5V-sol2.5/cc_common.h ファイルの整備 cc_common.h ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (l). FORCE-5V-sol2.5/cc_config.h ファイルの整備 cc_config.h ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (m). FORCE-5V-sol2.5/forlib.c ファイルの整備 forlib.c ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (n). FORCE-5V-sol2.5/k2917.h ファイルの整備 k2917.h ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (o). FORCE-5V-sol2.5/script/cc_build.sh ファイルの整備 cc_build.sh ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (p). FORCE-5V-sol2.5/script/cc_load.sh ファイルの整備 cc_load.sh ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (q). FORCE-5V-sol2.5/script/cc_unload.sh ファイルの整備 cc_unload.h ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (r). FORCE-5V-sol2.5/script/cc_build.gcc.sh ファイルの整備 cc_build.gcc.sh ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (s). FORCE-5V-sol2.5/script/cc_link.sh ファイルの整備 デバッグ時に付加した。 コメント・アウト部を削除した。 : # by E.Inoue <-- 削除 #echo "CCDIR/CCNAM=${CCDIR}/${CCNAM}" <-- 削除 if (${CCNAM}=="")then ln -s ${CCDIR}:cc /dev/cc else ln -s ${CCDIR}/${CCNAM}:cc /dev/cc endif (t). FORCE-5V-sol2.5/script/awk1.txt ファイルの整備 awk1.txt ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (u). FORCE-5V-sol2.5/script/awk2.txt ファイルの整備 awk2.txt ファイルの内容はオリジナル(camac.sol2-1.30)の ままで、ここでは何も手を加えていない。 (4). キットの公開 上で作ったキットを onlnews の anonymous ftp のところに置いた。 onlsun1[34]% rlogin onlnews Last login: Tue Jun 3 15:46:22 from onlsun1 NEWS-OS Release 4.1.2C #0: Tue Jul 14 11:02:07 JST 1992 Welcome to onlnews (SONY NEWS NWS-821) Type xterms unknown TERM = (unknown) vt100 Terminal type is vt100 Ttype is ascii Erase set to Backspace Kill set to Ctrl-X Interrupt is Ctrl-C onlnews[43]% su Password: onlnews# cd /mnt/Anonymous/pub/kek/camac onlnews# ftp onl5v4 Connected to onl5v4.kek.jp. 220 onl5v4 FTP server (UNIX(r) System V Release 4.0) ready. Name (onl5v4:inoue): inoue 331 Password required for inoue. Password: 230 User inoue logged in. ftp> cd /usr/local/camac 250 CWD command successful. ftp> dir 200 PORT command successful. 150 ASCII data connection for /bin/ls (130.87.125.35,2222) (0 bytes). total 100 drwxr-xr-- 3 inoue kek 1024 Jun 2 16:44 FORCE-5V-sol2.5 drwxr-xr-- 3 inoue kek 1536 May 21 14:36 FORCE-5V-sol2.5-old -rw-r--r-- 1 inoue kek 22120 Jun 2 16:46 FORCE-5V-sol2.5.tar.gz drwxr-xr-x 3 root other 512 Jan 13 10:51 camac.sol2 -rw-r--r-- 1 inoue kek 21435 Nov 25 1996 camac.sol2-1.30.tar.gz drwxr-xr-x 6 root other 1536 Apr 21 16:12 camac.sol2.debug drwxr-xr-- 2 inoue kek 512 Mar 17 16:26 doc 226 ASCII Transfer complete. 510 bytes received in 0.08 seconds (6.2 Kbytes/s) ftp> binary 200 Type set to I. ftp> get FORCE-5V-sol2.5.tar.gz 200 PORT command successful. 150 Binary data connection for FORCE-5V-sol2.5.tar.gz (130.87.125.35,2230) (2212 0 bytes). 226 Binary Transfer complete. local: FORCE-5V-sol2.5.tar.gz remote: FORCE-5V-sol2.5.tar.gz 22120 bytes received in 0.13 seconds (1.7e+02 Kbytes/s) ftp> quit 221 Goodbye. onlnews# ls -l total 3181 -rw-r--r-- 1 root staff 1173 Apr 19 1995 122d_to_e.tar.gz -rw-rw-r-- 1 root staff 22120 Jun 4 09:54 FORCE-5V-sol2.5.tar.gz -rw-rw-r-- 1 root staff 2494 Dec 2 1994 README -rw-r--r-- 1 root staff 21435 Dec 13 1994 camac.sol2-1.30.tar.gz -rw-rw-r-- 1 root staff 169539 Aug 18 1993 camac.sparc-1.22b.tar.Z -rw-rw-r-- 1 root staff 91662 Aug 18 1993 camac.sparc-1.22b.tar.gz -rw-r--r-- 1 root staff 198417 Aug 19 1993 camac.sparc-1.22c.tar.Z -rw-r--r-- 1 root staff 110755 Aug 19 1993 camac.sparc-1.22c.tar.gz -rw-rw-r-- 1 root staff 199103 Sep 4 1993 camac.sparc-1.22d.tar.Z -rw-rw-r-- 1 root staff 110752 Sep 4 1993 camac.sparc-1.22d.tar.gz -rw-rw-r-- 1 root staff 287493 Apr 20 1995 camacv1.01_decs.tar.Z -rw-rw-r-- 1 root staff 231505 Dec 2 1994 camacv1.01_hprt.tar.Z -rw-rw-r-- 1 root staff 132002 Dec 2 1994 camacv1.01_hprt.tar.gz -rw-rw-r-- 1 root staff 283202 Dec 2 1994 camacv1.0_decs.tar.Z -rw-rw-r-- 1 root staff 159495 Dec 2 1994 camacv1.0_decs.tar.gz -rw-rw-r-- 1 root staff 216777 Sep 13 1994 camacv1.0_hprt.tar.Z -rw-rw-r-- 1 root staff 122114 Sep 13 1994 camacv1.0_hprt.tar.gz -rw-rw-r-- 1 root staff 87379 Nov 30 1994 camlib-docs-1.0.tar.Z -rw-rw-r-- 1 root staff 51118 Nov 30 1994 camlib-docs-1.0.tar.gz -rw-rw-r-- 1 root staff 13589 Jan 17 1995 sparc-3ce.tar.gz -rw-rw-r-- 1 root staff 233395 Aug 18 1993 tdaq-1.00.tar.Z -rw-rw-r-- 1 root staff 121288 Apr 2 1992 tdaq-1.00.tar.gz -rw-r--r-- 1 root staff 277799 Jan 20 1995 vme-3CE.tar.gz onlnews# pwd /mnt/Anonymous/pub/kek/camac onlnews#