Dec 9, 1996 onlsun1: Solaris 2.4 cc ドライバのインストール ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ オンライングループ 井上 栄二 (1). sfvme のインストールが正しく行なわれているかどうか調べる。 prtconf を実行。 onlsun1[46]% prtconf -v System Configuration: Sun Microsystems sun4m Memory size: 64 Megabytes System Peripherals (Software Nodes): SUNW,SPARCstation-20 System software properties: name length <0> -- . name length <4> : : sfvme, instance #0 Register Specifications: Bus Type=0x3, Address=0x1ff000, Size=fe01000 Interrupt Specifications: Interrupt Priority=0x32 (ipl 2) Interrupt Priority=0x33 (ipl 3) Interrupt Priority=0x35 (ipl 5) Interrupt Priority=0x37 (ipl 7) Interrupt Priority=0x39 (ipl 9) Interrupt Priority=0x3b (ipl 11) Interrupt Priority=0x3d (ipl 13) : : ok. sfvme は正しくインストールされている。 (1). camac.sol2-1.30.tar.gzを/usr/local/camacに展開した。 onlsun1[54]% pwd /usr/local/camac onlsun1[55]% ls -l total 258 drwxr-xr-x 3 inoue kek 512 Dec 3 16:54 camac.sol2/ -rw-r--r-- 1 inoue kek 122880 Dec 3 16:03 camac.sol2-1.30.tar onlsun1[56]% (2). makeを実行。 camac インストール・キットの内容は何も修正していない。 onlsun1[59]% pwd /usr/local/camac/camac.sol2 onlsun1[60]% make ./script/cc_build.sh [Building for sun4m] "cc.c", line 945: warning: semantics of ">>" change in ANSI C; use explicit cast "cc.c", line 1191: warning: semantics of "<" change in ANSI C; use explicit cast "cc.c", line 1193: warning: semantics of ">=" change in ANSI C; use explicit cast "cc.c", line 1900: warning: semantics of ">" change in ANSI C; use explicit cast "cc.c", line 1910: warning: semantics of ">=" change in ANSI C; use explicit cast "cc.c", line 1920: warning: semantics of "<" change in ANSI C; use explicit cast "cc.c", line 1930: warning: semantics of "<=" change in ANSI C; use explicit cast "cc.c", line 1992: warning: semantics of ">=" change in ANSI C; use explicit cast "cc.c", line 2099: warning: semantics of "<=" change in ANSI C; use explicit cast rm -f cc.o cc -O -c camlib.c -o camlib.o -I. cc -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 -O cam1.c -o cam1 -I. -L. -lcamac cc -O cam3.c -o cam3 -I. -L. -lcamac onlsun1[61]% camac のインストール・キットを何も変更すること無しに、コンパイルは 正常に終了した。 (3). ライブラリ、ヘッダファイルをインストールする。 onlsun1[64]% su Password: # csh onlsun1# source /.cshrc onlsun1# 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 onlsun1# (4). ドライバをロードする。 onlsun1# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] onlsun1# ok. ドライバはエラーなしにロードできた。 (5). boot -r を実行。 /var/adm/messages の中の sfvme,camac に関係するログは以下のとうり。 : : Dec 4 15:15:55 onlsun1 unix: SFVME SBus-to-VME adapter: Version of 21 Jan 95 Dec 4 15:15:55 onlsun1 unix: Found 1 SFVME card : Type: Standard Dec 4 15:15:55 onlsun1 unix: SPARCstation 10 extended addressing (16MB A24, 128 MB A32) Dec 4 15:15:55 onlsun1 unix: Offset: VME16: 0x400000 VME24: 0x1000000 VME32: 0x 8000000 Dec 4 15:15:55 onlsun1 unix: SFVME: Resetting VME bus Dec 4 15:15:55 onlsun1 unix: sfvme0 at sbus0: SBus slot 3 0x1ff000 SBus level 1 sparc ipl 2, SBus level 2 sparc ipl 3, SBus level 3 sparc ipl 5, SBus level 4 s parc ipl 7, SBus level 5 sparc ipl 9, SBus level 6 sparc ipl 11, SBus level 7 sp arc ipl 13 Dec 4 15:15:55 onlsun1 unix: sfvme0 is /iommu@f,e0000000/sbus@f,e0001000/sfvme@ 3,1ff000 Dec 4 15:15:55 onlsun1 unix: vmap init: VME addr: 0xff00,2d = SBus addr:0x40ff0 0,3 Dec 4 15:15:55 onlsun1 unix: sfvme: mapping 0xff bytes at SBus offset: 0x40ff00 Dec 4 15:15:55 onlsun1 unix: CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) Dec 4 15:15:55 onlsun1 unix: ?cc0 t sfvme0?: ?vme16d16 0xff00? ?VME level 4 ve ctor 0xff sparc ipl 5? Dec 4 15:15:55 onlsun1 unix: cc0 is /iommu@f,e0000000/sbus@f,e0001000/sfvme@3,1 ff000/cc@2d,ff00 Dec 4 15:15:55 onlsun1 unix: vme0: device cc0 vector 0xff installed : : デバイス cc0 をインストールした旨メッセージがでているので、 正常にインストールできたのだろう。 (6). cam1,cam3 を実行してみる。 onlsun1[44]% pwd /usr/local/camac/camac.sol2 onlsun1[45]% ls -l total 430 -rw-r--r-- 1 inoue kek 1805 Dec 13 1994 Makefile -rw-r--r-- 1 inoue kek 2451 Dec 13 1994 README -rwxr-xr-x 1 inoue kek 13152 Dec 4 14:38 cam1* -rw-r--r-- 1 inoue kek 1170 Dec 13 1994 cam1.c -rwxr-xr-x 1 inoue kek 13892 Dec 4 14:38 cam3* -rw-r--r-- 1 inoue kek 2056 Dec 13 1994 cam3.c -rw-r--r-- 1 inoue kek 9674 Dec 13 1994 camlib.c : : onlsun1[46]% ./cam1 5 Open error: : No such file or directory onlsun1[47]% cam1 を実行すると、エラーになる。 --- onlsun1[47]% pwd /usr/local/camac/camac.sol2 onlsun1[48]% ls -l total 430 -rw-r--r-- 1 inoue kek 1805 Dec 13 1994 Makefile -rw-r--r-- 1 inoue kek 2451 Dec 13 1994 README -rwxr-xr-x 1 inoue kek 13152 Dec 4 14:38 cam1* -rw-r--r-- 1 inoue kek 1170 Dec 13 1994 cam1.c -rwxr-xr-x 1 inoue kek 13892 Dec 4 14:38 cam3* -rw-r--r-- 1 inoue kek 2056 Dec 13 1994 cam3.c : : onlsun1[49]% ./cam3 INIT. ERROR! onlsun1[50]% cam3 を実行すると、エラーになる。 (7). デバイス・ファイルを調べる。 /dev ディレクトリの内容。 onlsun1[51]% ls -l /dev total 18130 lrwxrwxrwx 1 root root 29 May 10 1995 arp -> ../devices/pseudo/c lone@0:arp lrwxrwxrwx 1 root root 12 May 10 1995 audio -> /dev/sound/0 lrwxrwxrwx 1 root root 15 May 10 1995 audioctl -> /dev/sound/0ct l lrwxrwxrwx 1 root root 11 Dec 4 15:16 bd.off -> /dev/term/b lrwxrwxrwx 1 root root 28 May 10 1995 be -> ../devices/pseudo/cl one@0:be lrwxrwxrwx 1 root root 67 May 10 1995 bpp0 -> ../devices/iommu@f ,e0000000/sbus@f,e0001000/SUNW,bpp@f,4800000:bpp0 lrwxrwxrwx 1 root other 4 Dec 4 15:09 cc -> /:cc lrwxrwxrwx 1 root root 10 May 10 1995 cgsix0 -> fbs/cgsix0 lrwxrwxrwx 1 root root 31 May 10 1995 conslog -> ../devices/pseu do/log@0:conslog lrwxrwxrwx 1 root root 30 May 10 1995 console -> ../devices/pseu do/cn@0:console : : lrwxrwxrwx 1 root other 37 Dec 5 1995 vme16d16 -> /devices/iommu */sbus*/sfvme*:vme16d16 lrwxrwxrwx 1 root other 37 Dec 5 1995 vme16d32 -> /devices/iommu */sbus*/sfvme*:vme16d32 lrwxrwxrwx 1 root other 37 Dec 5 1995 vme24d16 -> /devices/iommu */sbus*/sfvme*:vme24d16 lrwxrwxrwx 1 root other 37 Dec 5 1995 vme24d32 -> /devices/iommu */sbus*/sfvme*:vme24d32 lrwxrwxrwx 1 root other 37 Dec 5 1995 vme32d16 -> /devices/iommu */sbus*/sfvme*:vme32d16 lrwxrwxrwx 1 root other 37 Dec 5 1995 vme32d32 -> /devices/iommu */sbus*/sfvme*:vme32d32 : : cc -> /:cc という表示は何だ。 デバイス・ファイルが正しく作られて いないのかな。 onlsun1[45]% cd s* /devices/iommu@f,e0000000/sbus@f,e0001000 onlsun1[46]% ls -l total 6 : : crw------- 1 root sys 69, 14 May 10 1995 sbusmem@e,0:slote crw------- 1 root sys 69, 15 May 10 1995 sbusmem@f,0:slotf drwxr-xr-x 2 root sys 512 Dec 4 15:09 sfvme@3,1ff000/ crw-rw-rw- 1 root sys 117, 5 Dec 6 1995 sfvme@3,1ff000:vme16d16 crw-rw-rw- 1 root sys 117, 8 Dec 6 1995 sfvme@3,1ff000:vme16d32 crw-rw-rw- 1 root sys 117, 6 Dec 6 1995 sfvme@3,1ff000:vme24d16 crw-rw-rw- 1 root sys 117, 9 Dec 6 1995 sfvme@3,1ff000:vme24d32 crw-rw-rw- 1 root sys 117, 7 Dec 6 1995 sfvme@3,1ff000:vme32d16 crw-rw-rw- 1 root sys 117, 10 Dec 6 1995 sfvme@3,1ff000:vme32d32 onlsun1[47]% cd sfvme@3,1ff000 /devices/iommu@f,e0000000/sbus@f,e0001000/sfvme@3,1ff000 onlsun1[48]% ls -l total 0 crw-rw-rw- 1 root sys 119, 0 Dec 4 15:09 cc@2d,ff00:cc onlsun1[49]% /dev/cc が /devices/iommu.......:cc に正しくシンボリック・リンクされて いないようだ。 (8). /dev および /devices を調べる。 (9). cc ドライバ用の Makefile および script を調べる。 % vi Makefile : load : cc ./script/cc_load.sh : % ./script/cc_load.sh をチェック。 % vi cc_load.sh : if [ $ARCH = "sun4d" ]; then ln -s /devices/io-unit*/sbi*/sfvme*:cc /dev/cc elif [ $ARCH = "sun4m" ]; then ./script/cc_link.sh elif [ $ARCH = "sun4c" ]; then # ln -s /devices/sbus*/sfvme*:cc /dev/cc ln -s /devices/sbus*/sfvme@1,3ff000/cc@2d,ff00:cc /dev/cc fi : % onlsun1 のカーネル・アーキテクチャをチェック。 % sysinfo : Kernel Architecture : sun4m : % ./script/cc_link.shをチェック。 %vi cc_link.sh : set CCDIR=`dmesg|grep 'cc0 is'|tail -1|awk '{print $3}'|awk -f script/awk1.txt` : この意味は、どういうことかチェック。 onlsun1[43]% dmesg|grep 'cc0 is'|tail -1 cc0 is /iommu@f,e0000000/sbus@f,e0001000/sfvme@3,1ff000/cc@2d,ff00 onlsun1[44]% (10). make unload を実行後 再度 make load をやる。 onlsun1# make unload ./script/cc_unload.sh [Removing CAMAC device driver] [Removing CAMAC device driver from system] [Deleting CAMAC device files] onlsun1# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] onlsun1# ls -l /dev/cc lrwxrwxrwx 1 root other 70 Dec 9 14:37 /dev/cc -> /devices/iommu@f,e0000000/sbus@f,e0001000/sfvme@3,1ff000/cc@2d,ff00:cc onlsun1# ok 正常に/dev/cc も作れた。 Makefile, シェルスクリプト等は何も変更 していないのに今度は cc ドライバのデバイス・ファイルをうまく作れた。 何だ ? (11). テスト・プログラムを実行してみる。 o cam1(camac シングル・アクション read/write) のテスト onlsun1[37]% 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 55555 N=3 A=0 F=16 Q=1 X=1 Data:00D903(Hex) 00055555(Dec) Input n a f (data)>3 0 0 N=3 A=0 F=0 Q=1 X=1 Data:00D903(Hex) 00055555(Dec) Input n a f (data)>3 0 16 0 N=3 A=0 F=16 Q=1 X=1 Data:000000(Hex) 00000000(Dec) Input n a f (data)>3 0 0 N=3 A=0 F=0 Q=1 X=1 Data:000000(Hex) 00000000(Dec) onlsun1[38]% pwd /usr/local/camac/camac.sol2 onlsun1[39]% ok シングルアクション read/write は正常に実行できた。 o cam3(camac 割り込み) のテスト onlsun1[40]% pwd /usr/local/camac/camac.sol2 onlsun1[41]% vi cam3.c : /*#define DEFN 11 */ #define DEFN 3 : onlsun1[42]% make cam3 cc -O cam3.c -o cam3 -I. -L. -lcamac onlsun1[43]% onlsun1[45]% cam3 *** Now waiting LAM ... N=3 Loop=10 Timeout=0 sec Timeout !! count=1 Timeout !! count=2 Timeout !! count=3 Timeout !! count=4 Timeout !! count=5 Timeout !! count=6 Timeout !! count=7 Timeout !! count=8 Timeout !! count=9 Timeout !! count=10 *** cam3 nomal end. onlsun1[46]% pwd /usr/local/camac/camac.sol2 onlsun1[47]% NG 割り込みスイッチを押しても正しく処理されない。 この後、システムをシャットダウンして、boot -r で立ちあげてから、 再度 cam3 を実行してみた。 NG 症状は変わらない。 o cam2(camac ブロック転送) のテスト camac 割り込みが正常に実行できていないので、camac ブロック転送の テストはやっていない。 (12). チェック。