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

 

     このプログラムに対する質問についての受け付けはいたしますが、使用されてトラブルが

   発生した場合、一切保証いたしませんので御了承ください。

 

 

lhsSolaris2.x VMEbus Driver サンプル集