Solaris2.x VMEbus Driver サンプル集
Solaris2.x VMEbus Driver サンプル集
- 説 明 このサンプルは、Solaris2.x VMEbus DriverのVUI(VMEbus User Interface)
を使用して作成しました。VUIライブラリィを使用してアプリケーションを
開発される際に、参考にして頂くと役立つと思います。
用意したサンプルには、以下のような物があります。 ・VME転送用サンプル
・VME DMA転送用サンプル
・VMEスレーブインターフェース設定サンプル
・VMEインターフェース設定用サンプル
・VME割り込みハンドリングサンプル
・MailBox割り込みサンプル
・SYSFAIL,ACFAILサンプル
・VME転送ベンチマークテスト
- インストール
プログラムをインストールするには、以下の手順で行います。
1. フロッピーからプログラムを読み込みます。
% tar xvf /vol/dev/diskette0/unlabeled
2. ファイルを解凍します。
% zcat vui_sample.tar | tar xvf –
3. プログラムをコンパイルします。
% cd vui_sample
% make <- SPARCコンパイラー使用時
% make -f Makefile.gcc <- GNUコンパイラー使用時
- プログラムの説明
vmeplusディレクトリィ
vme_mmap_read.c
【内容】 mmapシステムコールを使用してVMEからデータを読み込みます。
【使用方法】
usage: vme_mmap_read addr amcode size data
addr : VMEbus address
amcode : VMEbus address mode
1 : A16D32 (Byte/Word/Long)
2 : A24D32 (Byte/Word/Long)
3 : A32D32 (Byte/Word/Long)
size : Transfer size
data : Data size (b|B,w|W,l|L)
vme_mmap_write.c
【内容】 mmapシステムコールを使用してVMEへデータを書き込みます。
【使用方法】
usage: vme_mmap_write addr amcode size data pat
addr : VMEbus address
amcode : VMEbus address mode
1 : A16D32 (Byte/Word/Long)
2 : A24D32 (Byte/Word/Long)
3 : A32D32 (Byte/Word/Long)
size : Transfer size
data : Data size (b|B,w|W,l|L)
pat : Fill pattern
vme_read.c
【内容】 readシステムコールを使用してVMEからデータを読み込みます。
【使用方法】
usage: vme_read addr amcode size
addr : VMEbus address
amcode : VMEbus address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
size : Transfer size
vme_write.c
【内容】 writeシステムコールを使用してVMEへデータを書き込みます。
【使用方法】
usage: vme_write addr amcode size
addr : VMEbus address
amcode : VMEbus address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
size : Transfer size
pat : Fill pattern (byte)
vme_rmw.c
【内容】 RMWサイクルを許可します。
【使用方法】
usage: vme_rmw addr amcode data
addr : VMEbus address
amcode : VMEbus address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
data : Write data
vme_transfer_mode.c
【内容】 VME転送モードの設定をします。
【使用方法】
usage: vme_transfer_mode mode
mode : VME_BT_WP : 0x1000000 VME_BT_UNALIGN : 0x4000000
VME_BT_USER : 0x8000000 VME_BT_PRIAUTO : 0x10000000
VME_BT_PROG : 0x20000000 VME_BT_PROGAUTO: 0x40000000
vme_intr.c
【内容】 VMEbus割り込みのハンドリングの設定をします。
【使用方法】
usage: vme_intr prop sig
prop : vmeplus.conf interrupt property number
sig : signal:1 No signal:0
vmedmaディレクトリィ
vme_dma_read.c
【内容】 DMAを使用してVMEからデータを読み込みます。
【使用方法】
usage: vme_dma_read addr amcode size
addr : VMEbus DMA address
amcode : VMEbus DMA address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
7 : A24 BLT 8 : A32 BLT
9 : A24 MBLT 10: A32 MBLT
size : Transfer size
vme_dma_write.c
【内容】 DMAを使用してVMEへデータを書き込みます。
【使用方法】
usage: vme_dma_write addr amcode size
addr : VMEbus DMA address
amcode : VMEbus DMA address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
7 : A24 BLT 8 : A32 BLT
9 : A24 MBLT 10: A32 MBLT
size : Transfer size
vmefdmaディレクトリィ
vme_fdma_read.c
【内容】 DMAを使用してVMEからデータを読み込みます。
【使用方法】
usage: vme_fdma_read addr amcode size
addr : VMEbus DMA address
amcode : VMEbus DMA address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
7 : A24 BLT 8 : A32 BLT
9 : A24 MBLT 10: A32 MBLT
size : Transfer size
vme_fdma_write.c
【内容】 DMAを使用してVMEへデータを書き込みます。
【使用方法】
usage: vme_fdma_write addr amcode size
addr : VMEbus DMA address
amcode : VMEbus DMA address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
7 : A24 BLT 8 : A32 BLT
9 : A24 MBLT 10: A32 MBLT
size : Transfer size
vmedvmaディレクトリィ
vme_slave_map.c
【内容】 VMEスレーブインターフェースの設定をします。
【使用方法】
usage: vme_slave_map addr size amcode bt prot flag
addr : VMEbus slave address
size : Mapping size
amcode : Slave address mode (A24:1 A32:2 A24/A32:3)
bt : Bus type (VME_BT_WP : 0x1000000
VME_BT_UNALIGN : 0x4000000
VME_BT_USER : 0x8000000
VME_BT_PRIAUTO : 0x10000000
VME_BT_PROG : 0x20000000
VME_BT_PROGAUTO: 0x40000000)
prot : Protection (PROT_READ:1 PROT_WRITE:2 PROT_NONE:0)
flag : Flag (SMEM_FIXED:1 SMEM_VADDR:4(to be set)
vmectlディレクトリィ
vme_reg.c
【内容】 VMEインターフェースレジスタの設定をします。
【使用方法】
usage : vme_reg
vme_intr_gen.c
【内容】 VMEbus割り込みを発生させます。
【使用方法】
usage: vme_intr_gen level vec
level : VMEbus interrupt level (1-7)
vec : VMEbus interrupt vector
vme_arb.c
【内容】 VMEbusアービタモードの設定をします。
【使用方法】
usage : vme_arb
vme_breq.c
【内容】 VMEバスリクエスターモードの設定をします。
【使用方法】
usage : vme_breq
vme_brel.c
【内容】 VMEバスリリースモードの設定をします。
【使用方法】
usage : vme_brel
vme_board.c
【内容】 CPUボードの名前、リビジョンを表示します。
【使用方法】
usage : vme_board
vme_interface.c
【内容】 VMEインターフェースの名前、リビジョンを表示します。
【使用方法】
usage : vme_interface
vme_mbox.c
【内容】 MailBoxの設定、割り込みハンドリングを行います。
【使用方法】
usage : vme_mbox
vme_reg_base.c
【内容】 VMEインターフェースのVME上から参照できるベースアドレスを設定します。
【使用方法】
usage : vme_reg_base
vme_reset.c
【内容】 VME SYSRESETを発生させます。
【使用方法】
usage : vme_reset
vme_sysfail.c
【内容】 VME SYSFAILラインを制御します。
【使用方法】
usage : vme_sysfail
vme_sysfail_wait.c
【内容】 VME SYSFAIL割り込みをハンドリングします。
【使用方法】
usage : vme_sysfail_wait
vme_acfail_wait.c
【内容】 VME ACFAIL割り込みをハンドリングします。
【使用方法】
usage : vme_acfail_wait
vme_abort_wait.c
【内容】 ABORTスイッチ割り込みをハンドリングします。
【使用方法】
usage : vme_abort_wait
benchmarkディレクトリィ
spec_read.c
【内容】 readシステムコールを使用してVMEからデータを読み込んだときの転送時間、
転送速度を測定します。
【使用方法】
usage: spec_read addr amcode size loop
addr : VMEbus address
amcode : VMEbus address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
size : Transfer size
loop : Loop count
spec_write.c
【内容】 writeシステムコールを使用してVMEへデータを書き込んだときの転送時間、
転送速度を測定します。
【使用方法】
usage: spec_write addr amcode size loop
addr : VMEbus address
amcode : VMEbus address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
size : Transfer size
loop : Loop count
spec_mmap_read.c
【内容】 mmapシステムコールを使用してVMEからデータを読み込んだときの転送時間、
転送速度を測定します。
【使用方法】
usage: spec_mmap_read addr amcode size loop
addr : VMEbus address
amcode : VMEbus address mode
1 : A16D32 (Byte/Word/Long)
2 : A24D32 (Byte/Word/Long)
3 : A32D32 (Byte/Word/Long)
size : Transfer size
data : Data size (b|B,w|W,l|L)
loop : Loop count
spec_mmap_write.c
【内容】 mmapシステムコールを使用してVMEへデータを書き込んだときの転送時間、
転送速度を測定します。
【使用方法】
usage: spec_mmap_write addr amcode size data pat loop
addr : VMEbus address
amcode : VMEbus address mode
1 : A16D32 (Byte/Word/Long)
2 : A24D32 (Byte/Word/Long)
3 : A32D32 (Byte/Word/Long)
size : Transfer size
data : Data size (b|B,w|W,l|L)
pat : Write pattern
loop : Loop count
spec_dma_read.c
【内容】 DMAを使用してVMEからデータを読み込んだときの転送時間、転送速度を測定します。
【使用方法】
usage: spec_dma_read addr amcode size loop
addr : VMEbus DMA address
amcode : VMEbus DMA address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
7 : A24 BLT 8 : A32 BLT
9 : A24 MBLT 10: A32 MBLT
size : Transfer size
loop : Loop count
spec_dma_write.c
【内容】 DMAを使用してVMEへデータを書き込んだときの転送時間、転送速度を測定します。
【使用方法】
usage: spec_dma_write addr amcode size loop
addr : VMEbus DMA address
amcode : VMEbus DMA address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
7 : A24 BLT 8 : A32 BLT
9 : A24 MBLT 10: A32 MBLT
size : Transfer size
loop : Loop count
spec_fdma_read.c
【内容】 DMAを使用してVMEからデータを読み込んだときの転送時間、転送速度を測定します。
【使用方法】
usage: spec_fdma_read addr amcode size loop
addr : VMEbus DMA address
amcode : VMEbus DMA address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
7 : A24 BLT 8 : A32 BLT
9 : A24 MBLT 10: A32 MBLT
size : Transfer size
loop : Loop count
spec_fdma_write.c
【内容】 DMAを使用してVMEへデータを書き込んだときの転送時間、転送速度を測定します。
【使用方法】
usage: spec_fdma_write addr amcode size loop
addr : VMEbus DMA address
amcode : VMEbus DMA address mode
1 : A16D16 2 : A16D32
3 : A24D16 4 : A24D32
5 : A32D16 6 : A32D32
7 : A24 BLT 8 : A32 BLT
9 : A24 MBLT 10: A32 MBLT
size : Transfer size
loop : Loop count
このプログラムに対する質問についての受け付けはいたしますが、使用されてトラブルが
発生した場合、一切保証いたしませんので御了承ください。