Solaris VMEbusドライバ FAQ

<br />


Solaris VMEbusドライバFAQ

 

  1. どのようにVMEアドレスへアクセスするのですか?

  2. VME割り込みをアプリケーションプログラムから使用したいのですがその方法は?

  3. DMA転送はどのようにすれば出来ますか?

  4. ローカルメモリーをVMEスレーブアドレスとして設定する方法は?

  5. ハードディスクのファイルイメージをVMEアドレスへ転送する方法は?

  6. VMEアドレスからハードディスクのファイルへ転送する方法は?

  7. MailBox割り込みとは何ですか?

  8. MailBox割り込みを使用する方法は?

  9. VMEbus上へを発生する方法は?

  10. VMEbus上のBUSERRのハンドリングはどのようにするのですか?

  11. DVMAとは何ですか?

  12. ABORT SWの使用方法は?

  13. ACFAILのハンドリングはどのようにするのですか?

  14. SYSFAILのハンドリングはどのようにするのですか?

  15. RMWアクセスは出来ますか?

  16. BLT、MBLT転送とは何ですか?

  17. WP(Write Posting)とは何ですか?


 

1. どのようにVMEアドレスへアクセスするのですか?

VMEアドレスへアクセスするには、システムコールのmmap()を使用してVMEアドレスを仮想メモリへ
マッピングしてアクセスする方法と、read(),write()を使用してアクセスする方法があります。
簡単な使用方法については、
Solaris VMEbusドライバ
具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。


 

2. VME割り込みをアプリケーションプログラムから使用したいのですがその方法は?

VME割り込みをアプリケーションプログラムから使用するには、vmeplusドライバの割り込みサービスルーチンより
発生したシグナルをアプリケーションプログラム側で受けることで可能です。
具体的な使用例については、
Solaris VMEbusドライバサンプルプログラムを参考にしてください。


 

3. DMA転送はどのようにすれば出来ますか?

DMA転送をするには、システムコールのread(),write()を使用して可能です。
このときには、open()にてDMA転送用のデバイスディスクリプタを使用する必要があります。
DMA転送用デバイスディスクリプタには、以下のものがあります。

DMA転送用デバイスディスクリプタ一覧

/dev/vmedma16dxx

DMA転送 ショートI/Oアドレス用

/dev/vmedma24dxx

DMA転送 標準アドレス用

/dev/vmedma32dxx

DMA転送 拡張アドレス用

/dev/vmedma24blt

DMAブロック転送 標準アドレス用

/dev/vmedma32blt

DMAブロック転送 拡張アドレス用

/dev/vmedma24mblt

DMA VME64転送 標準アドレス用

/dev/vmedma32mblt

DMA VME64転送 拡張アドレス用

/dev/vmedma32te

DMA 2e-VME転送 拡張アドレス用

具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

4. ローカルメモリーをVMEスレーブアドレスとして設定する方法は?

ローカルメモリーをVMEスレーブアドレスとして設定するには、vuiライブラリィのvui_slave_map()を使用して可能です。

具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。


 

5. ハードディスクのファイルイメージをVMEアドレスへ転送する方法は?

ハードディスクのファイルイメージをVMEアドレスへ転送するには、2通りの方法があります。

  • ファイルイメージをメモリへ展開してからmmap()でマッピングしたVMEアドレスへ転送する。

  • ファイルイメージをメモリへ展開してからwrite()を使用して転送する。


具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

6. VMEアドレスからハードディスクのファイルへ転送する方法は?

VMEアドレスからハードディスクのファイルへ転送するには、2通りの方法があります。

  • mmap()でマッピングしたVMEアドレスからデータを読み込んでファイルへ書きこむ。

  • read()を使用してVMEアドレスからデータを読み込んでファイルへ書きこむ。


具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

7. MailBox割り込みとは何ですか?

MailBox割り込みとは、マルチCPU環境にてCPUボード間の同期を取るときなどに使用する機能のことです。

 

8. MailBox割り込みを使用する方法は?

MailBox割り込みを使用するには、vuiライブラリィのvui_mbox()を使用して設定します。
ここで設定したMailBoxアドレスへ他のCPUボードよりリードアクセスを行うと、MailBox割り込みが
発生します。

具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

9. VMEbus上へSYSRESETを発生する方法は?

VMEbus上へSYSRESETを発生する方法は、vuiライブラリィのvui_reset()を使用して可能です。

具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

10. VMEbus上のBUSERRのハンドリングはどのようにするのですか?

VMEbus上のBUSERRをハンドリングするには、BUSERRが発生したときに出されるSIGBUSシグナルを
受けることで可能です。
具体的な使用例については、
Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

11. DVMAとは何ですか?

DVMAとは、Direct Virtual Memory Accessの略で仮想メモリ空間を使用したDMA転送のことです。

 

12. ABORT SWの使用方法は?

ABORT SWが押されたときには、割り込みが発生されます。
vuiライブラリィのvui_abort_wait()を使用することでABORT SWが押されたときの割り込みを受けることが可能です。

具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

13. ACFAILのハンドリングはどのようにするのですか?

ACFAILが発生したときには、割り込みが発生されます。
vuiライブラリィのvui_acfail_wait()を使用することでACFAILが発生したときの割り込みを受けることが可能です。

具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

14. SYSFAILのハンドリングはどのようにするのですか?

SYSFAILが発生したときには、割り込みが発生されます。
vuiライブラリィのvui_sysfail_wait()を使用することでSYSFAILが発生したときの割り込みを受けることが可能です。
SYSFAILを制御するには、vuiライブラリィのvui_sysfail_assert()、vui_sysfail_deassert()を使用することで可能です。

具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

15. RMWアクセスは出来ますか?

RMW(Read Modify Write)アクセスを行うには、vuiライブラリィのvui_rmw()を使用することで可能です。

具体的な使用例については、Solaris VMEbusドライバサンプルプログラムを参考にしてください。

 

16. BLT、MBLT転送とは何ですか?

BLTとは、ブロック転送、MBLTとは、VME64によるブロック転送のことです。
SPARC CPUボードに搭載しているVMEインターフェース(FGA-5000,Universe2)のDMAコントローラによりこれらの
転送が可能です。

 

17. WP(Write Posting)とは何ですか?

WP(Write Posting)とは、VMEインターフェース内部に存在するFIFOメモリを介してVMEbusへ書きこみアクセスを
行うときの機能のことです。WPを使用すると、VMEbusへ書きこむ際にスレーブの応答を待たずにCPUがVME
インターフェースのFIFOメモリへデータを置くことが出来ますので転送パフォーマンスが向上します。

 

 


 

lhsSolaris VMEbusドライバ FAQ