私は、CompactPCI バックプレーンを介して接続された 3 台の SBS (現在の GE Fanuc) C2k シングル ボード コンピュータを継承しており、それらの間で共有メモリを起動して実行する必要があります。私の理解では、以前は の値SM_ANCHOR_ADRS
が最初に誰かによって「発見」され、PMC が交換されたり交換されたりするたびに、 の値SM_ANCHOR_ADRS
が再び機能するまでいじられていました。今回は、メモリ アドレスをランダムに突くのではなく、そもそもこの値がどのようにして得られるのかを知りたいと思います。
VxMP のマニュアルに、メモリ マップと既知のオフセットが与えられた場合に、VME のこのアドレスを計算する方法の説明があることに気付きました。C2k ユーザーズ マニュアルで同様のメモリ マップを探してみましたが、存在しません。(ボード サポート パッケージで見た PCI 自動構成に関するビットは、それと何か関係があるのでしょうか?)
また、役に立つ場合は、カーネル構成からの関連ビット:
マスター:
SM_MEM_ADRS NONE
SM_ANCHOR_ADRS (char*)0x4100
SM_ANCHOR_OFFSET 0x4100
SM_INT_TYPE SM_INT_NONE
SM_MAX_WAIT 3000
スレーブ カード:
SM_MEM_ADRS (SM_ANCHOR_ADRS)
SM_ANCHOR_ADRS (char*)0x84004100 //this is the number that generally gets fiddled with..
SM_ANCHOR_OFFSET 0x4100
SM_INT_TYPE SM_INT_NONE
SM_MAX_WAIT 3000
この情報を使用して、CompactPCI バックプレーン上のデバイスの VxWorks の共有メモリ アンカー アドレスを計算するにはどうすればよいでしょうか?